判断用户登录的session是否存在Word文档格式.docx
- 文档编号:16542890
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:57.13KB
判断用户登录的session是否存在Word文档格式.docx
《判断用户登录的session是否存在Word文档格式.docx》由会员分享,可在线阅读,更多相关《判断用户登录的session是否存在Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
+login);
if(login!
=null&
&
login.length()>
0){
//存在的情况下进行后续操作。
alreadylogin!
}else{
//否则终止后续操作,返回LOGIN
nologin,forwardloginpage!
returnLOGIN_PAGE;
}
配置:
<
packagename="
namespace="
/mystruts"
extends="
struts-default"
>
<
interceptors>
interceptorname="
loginInterceptor"
class="
......CheckLoginInterceptor"
/>
//指定拦截器的类
interceptor-stackname="
teamwareStack"
interceptor-refname="
defaultStack"
/interceptor-stack>
/interceptors>
default-interceptor-refname="
/>
//设置默认的拦截器
actionname="
......LoginAction"
resultname="
success"
/default.jsp<
/result>
input"
/login.jsp<
/action>
/package>
用于判断用户是否登录
1.过滤器主要用于,判断用户是否登陆,以防止接访问应用中的网页进行提交。
Javacode:
packagefilter;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.*;
importcom.tarena.crm.domain.admin.Manager;
publicclassLoginFilterextendsHttpServletimplementsFilter{
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{
HttpServletRequestreq=(HttpServletRequest)request;
HttpServletResponseres=(HttpServletResponse)response;
if(req.getSession().getAttribute("
manager"
)==null){
res.sendRedirect("
/crm/core/login.jsp"
}else
chain.doFilter(request,response);
publicvoidinit(FilterConfigarg0)throwsServletException{
web.xml中的写法:
url-pattern>
/core/adminManage/*<
/url-pattern>
对一个目录进行过滤
或者:
/core/adminManage/test.jsp<
对某一个特定网页进行过滤
XMLcode
filter>
filter-name>
setlog<
/filter-name>
filter-class>
filter.LoginFilter<
/filter-class>
/filter>
filter-mapping>
/core/adminManage/*<
/filter-mapping>
不会过滤器的话就用JSP代码写吧。
首先你在用户登录以后把用户的ID写到session里。
session.setAttribute("
userid"
userid);
后边的userid是变量;
然后建一个safe.jsp,代码如下
2.
HTMLcode
%
if(session.getAttribute("
)==null)
{
%>
script>
alert("
SORRY,LOGINPLEASE!
window.location.href="
login.jsp"
!
--这里是你的登录页面-->
/script>
最后在你每个页面中加入<
%@includefile="
safe.jsp"
%>
就可以了。
不过这个方法不实用,最好办法还是用过滤器,或者你点回复时候连接到一个servlet然后判断,再跳转不过还是没有过滤器来的方便。
该过滤器借助struts2自带的过滤器和自己写的过滤方法可以实现对项目的任意非法访问地址进行过滤,也可对某些特殊的地址放行等等。
1.在web.xml文件中加入
struts<
org.apache.struts2.dispatcher.FilterDispatcher<
/*<
struts2<
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
上面代码是struts2自带过滤器的一般配置方法,但只能对.action地址进行过滤,所以无法满足实际需求,还需加入如下代码,此部分代码是加载自己写的过滤器的action类和定义的两个页面变量
LoginFilter<
com.delochi.system.action.LoginAction<
init-param>
param-name>
login_uri<
/param-name>
//非法访问或登陆错误是返回的页面变量<
param-value>
/param-value>
/init-param>
home_uri<
//成功登陆后的主页面<
/index.jsp<
2.LoginAction类中主要方法的实现,当然登录成功后session的保存和页面的跳转要先实现了,这里就不复制代码了:
publicclassLoginActionextendsActionSupportimplementsSessionAware,Filter{
privateMap<
String,Object>
mysession;
privatestaticfinalStringLOGIN_URI="
login_uri"
privatestaticfinalStringHOME_URI="
home_uri"
privateStringlogin_page;
//登陆页面
privateStringhome_page;
//跳转页面
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
//TODOAuto-generatedmethodstub
login_page=filterConfig.getInitParameter(LOGIN_URI);
home_page=filterConfig.getInitParameter(HOME_URI);
if(null==login_page||null==home_page)
thrownewServletException("
没有指定登录页面或主页!
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
//将请求对象和响应对象的类型转换为HttpServletRequest和HttpServletResponse。
HttpServletRequesthttpReq=(HttpServletRequest)request;
HttpServletResponsehttpResp=(HttpServletResponse)response;
HttpSessionsession=httpReq.getSession();
//得到用户的请求URI。
Stringrequest_uri=httpReq.getRequestURI();
//得到Web应用程序的上下文路径。
StringctxPath=httpReq.getContextPath();
//去除上下文路径,得到剩余部分的路径。
Stringuri=request_uri.substring(ctxPath.length());
//mysession.put(key,value)
//判断用户访问的是否是登录页面
//System.out.println(httpReq.getParameter("
action"
));
if(login_page.equals(uri)||uri.indexOf(login_page)!
=-1){
//如果是登录页面,则通过查看是否有附加的请求参数,来判断用户
//是访问登录页面,还是提交登录信息。
StringstrLogon=httpReq.getParameter("
if(null!
=strLogon&
.equals(strLogon)){
//如果是提交登录信息,则对用户进行验证。
Stringname=httpReq.getParameter("
user_name"
Stringpassword=httpReq.getParameter("
password"
try{
if(loginService.getuser().size()>
for(inti=0;
i<
loginService.getuser().size();
i++){//System.out.println(loginService.getuser().get(i).getUser_name().trim());
if(manager.getUser_name().trim().equals(
name.trim())
&
md5(password.trim()).equals(
loginService.getuser().get(i)
.getPassword().trim())){
StringisLogin=(String)session
.getAttribute("
isLogin"
if(!
isLogin.equals("
true"
)){
//验证通过后,在Session对象中设置isLogon属性为true。
getSession().put("
"
//在Session对象中保存用户名。
username"
name);
//从请求对象中取出用户先前访问页面的URI。
Stringorigin_uri=httpReq
.getParameter("
origin_uri"
//如果origin_uri不为空,则将客户端重定向到用户先前访问的页面,
//否则将客户端重定向到首页。
=origin_uri
!
.equals(origin_uri)){
httpResp.sendRedirect(origin_uri);
httpResp.sendRedirect(ctxPath+home_page);
return;
else{
//如果验证失败,则从请求对象中获取用户先前访问页面的URI。
//如果该URI存在,则再次将它作为origin_uri属性的值保存
//到请求对象中。
Stringorigin_uri=httpReq.getParameter("
=origin_uri&
httpReq.setAttribute("
origin_uri);
httpResp.setContentType("
text/html;
charset=utf-8"
PrintWriterout=httpResp.getWriter();
out.println("
h2>
用户名或密码错误,请重新输入。
/h2>
RequestDispatcherrd=httpReq
.getRequestDispatcher(login_page);
rd.include(httpReq,httpResp);
}catch(Exceptione){
System.out.println(e);
//如果用户不是提交登录信息,则调用chain.doFilter()方法,
//调用登录页面。
//如果访问的不是登录页面,则判断用户是否已经登录。
StringisLogin=(String)session.getAttribute("
.equals(isLogin)&
.equals(isLogin)){
//如果用户没有登录,则将用户的请求URI作为origin_uri属性的值
//保存到请求对象中。
if(uri.indexOf("
setup"
)>
=0||uri.indexOf("
images"
)>
=0){
StringstrQuery=httpReq.getQueryString();
//System.out.println(request_uri);
=strQuery){
request_uri=request_uri+"
?
+strQuery;
request_uri);
//将用户请求转发给登录页面。
rd.forward(httpReq,httpResp);
//httpResp.sendRedirect(login_page);
publicvoiddestroy(){
home_page=null;
login_page=null;
3.struts.xml中的配置,其中要注意的是:
packagename=”loginManagement”要继承extends=”struts-default”包,因为其下的action是要放行的action,其他的action配置继承strutsfilter就可以了因为要对他们进行session判断,是否登录session有没有过期等等。
xmlversion="
1.0"
encoding="
utf-8"
DOCTYPEstrutsPUBLIC
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
http:
//struts.apache.org/dtds/struts-2.0.dtd"
struts>
includefile="
struts-default.xml"
strutsfilter"
work"
com.delochi.system.action.LoginFilter"
/interceptor>
mydefault"
loginManagement"
>
com.delochi.system.action.LoginAction"
error"
com/delochi/system/struts_c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 判断 用户 登录 session 是否 存在