Struts2框架的struts.xml文件的登录拦截器的配置和使用
struts.xml 的文件程序:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.enable.SlashesInActionNames" value="true"/><!--将斜杠‘/’允许作为通配符使用-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/><!--允许action动态调用方法-->
<package name="finebi" namespace="/" extends="struts-default">
<interceptors>
<!--登录验证拦截器-->
<interceptor name="loginInvocation" class="cominvocation.LoginInvocation"/>
<interceptor-stack name="myStack"><!--自定义拦截器栈-->
<interceptor-ref name="defaultStack"/><!--必须使用默认拦截器栈,否则无法调用参数-->
<interceptor-ref name="loginInvocation"/><!--调用登录验证拦截器-->
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/><!--重新调用默认拦截器栈-->
<global-results>
<result name="login">index.jsp</result><!--公共默认结果集,该包中所有action有返回结果是login都可以在此返回页面显示-->
</global-results>
<global-allowed-methods>regex:.*</global-allowed-methods><!--允许使用*表示动态通配符-->
<action name="loginAction" class="com.action.LoginAction">
<interceptor-ref name="defaultStack"/><!--登录Action不能使用登录验证拦截器,必须使用默认拦截器,否则便永远无法登录-->
<result>/AllListView.jsp</result>
</action>
<action name="HRAction/*" class="com.action.HRAction" method="{1}">
<result name="HR_list">/HR/hr_overtimelist.jsp</result>
<result name="HR_updateview">/HR/HR_updateview.jsp</result>
<result name="HR_intoInsertView">/HR/HR_insertview.jsp</result>
</action>
</package>
</struts>
总结
简单的登录拦截器的使用,
首先,使用登录拦截器时要先定义名称,并获取其完整的类名:
<interceptor name="loginInvocation" class="cominvocation.LoginInvocation"/>
接着创建一个自己的拦截器栈
<interceptor-stack name="myStack"><!--自定义拦截器栈-->
<interceptor-ref name="defaultStack"/><!--必须使用默认拦截器栈,否则无法调用参数-->
<interceptor-ref name="loginInvocation"/><!--调用登录验证拦截器-->
</interceptor-stack>
注意点:一定要在自定义的拦截器栈中的第一行就加上系统默认的拦截器栈,否则无法传递参数。
之后再调用自己的编写的拦截器。
另外如果自己编写了多个拦截器时,在定义拦截器名称和调用拦截器时应满足先定义后调用的顺序;比如
定义的拦截器有 invocation1,invocation2,invocation3
而在调用时 必须是 invocation3,invocation2,invocation1
创建的拦截器和拦截器栈必须在 “interceptors” 标签中。
创建完自己的拦截器和拦截器栈后,必须要设置重新调用自己的拦截器栈,
即使用如下程序:
<!--重新调用默认拦截器栈-->
<default-interceptor-ref name="myStack"/>
它必须在“interceptors” 标签的后面。
依据上述方法创造的拦截器,最大的好处就是,以下所有的Action中,都无需再写调用拦截器的程序,系统自动默认调用拦截器栈。
另外由于登录页面是不能使用这个登录拦截器栈的。否则就永远处于登录界面,无法跳转了。所以在登录的Action中不能使用自己写的拦截器栈,想要做到这一点,只需要在登录的Action中调用系统的拦截器栈即可。
在登录Action中使用登录验证分方法是:
public String execute()
{
if (username.equals("zhangsan")&&password.equals("111"))//验证用户名是否有合法的登录信息
{
ActionContext.getContext().getSession().put("username",username);//登录验证令牌
return SUCCESS;
}
return "login";//不是合法用户就返回登录页面
}
制作一个登陆令牌用于登录拦截器中验证是否登陆。
登录拦截器中的代码:
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext actionContext=invocation.getInvocationContext();
if(null==actionContext.getSession().get("username")||
"".equals(actionContext.getSession().get("username"))||
"null".equals(actionContext.getSession().get("username")))
{
return "login";//使用拦截器,发现没有登录则返回登录界面,
}
return invocation.invoke();//如果登录了就传到下一个拦截器或回到Action中
}
这样一个登陆拦截器就可以使用了。
上一篇: Struts2拦截器返回json格式(通过Action类来返回)
下一篇: pymongo 简单使用
推荐阅读
-
在python的WEB框架Flask中使用多个配置文件的解决方法
-
idea创建springMVC框架和配置小文件的教程图解
-
Flask框架的: 简介、虚拟环境、配置文件、URL 和视图
-
使用SSM框架开发applicationContext.xml和jdbc.properties配置文件的使用
-
springBoot之配置文件的读取以及过滤器和拦截器的使用
-
struts2 国际化 应用级资源文件的使用(登录)
-
使用thikphp框架的,一个项目里面有多个文件夹,html页面放在哪个文件夹里,和Action文件夹里的方法怎么调用,特别是在调用时的路径有关问题,尽量详细
-
Struts2的基本配置和使用过程
-
在python的WEB框架Flask中使用多个配置文件的解决方法
-
idea创建springMVC框架和配置小文件的教程图解