struts2自定义拦截器做登陆模块
2014-07-18 11:21
435 查看
1.登陆action:LoginAction.java代码
package test.interceptor;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
//登陆action
//通过实现SessionAware接口获得session
public class LoginAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = 8621393046289083366L;
private String name;
//接受session中的map
private
Map<String,Object> sessionMap;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String Login(){
if("tom".equals(name)){
//存放登陆信息,将name存储到session中
sessionMap.put("username", name);
}else{
//回到登陆页面
return LOGIN;
}
return "success";
}
public String toLoginView(){
return "loginView";
}
//注入session map
public void setSession(Map<String, Object> session) {
this.sessionMap = session;
}
}
2.自定义登陆拦截器LoginInterceptor.java代码
package test.interceptor;
import java.util.Map;
import test.action.RegAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
//登陆拦截器
public class LoginInterceptor implements Interceptor {
private static final long serialVersionUID = -9160271954215546383L;
public void destroy() {
}
public void init() {
}
//看session中有无数据,若无则跳到登陆页面,若有则放行
public String intercept(ActionInvocation invocation) throws Exception {
//获得所到达的action对象
Object action = invocation.getAction();
//若来的action为登陆action或注册action都不管,直接放行
if(action instanceof LoginAction || action instanceof RegAction){
return invocation.invoke();
}
Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();
//若无登陆,跳刀登陆页面
if(sessionMap.get("username" ) == null){
return "login";
}else{
//放行操作即失去控制权,将控制权交给重新交还给中间人invocation
return invocation.invoke();
}
}
}
3.配置文件login.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="LoginPkg" namespace="/login" extends="struts-default">
<!-- 自定义的拦截器需要注册(注册后才能用),首先要注册 -->
<interceptors>
<interceptor name="loginInterceptor" class="test.interceptor.LoginInterceptor"/>
<!-- 自定义拦截栈 -->
<interceptor-stack name="loginStack">
<!-- 在自定义拦截栈中配置自己的拦截器,再把默认栈重用过来 -->
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 定义默认栈,将登陆栈定义为默认栈 -->
<default-interceptor-ref name="loginStack"/>
<!-- 定义全局结果,在action中定义的结果为局部结果,且局部结果优先级更高 -->
<global-results>
<result name="login">/login/login.jsp</result>
</global-results>
<!-- 登陆action -->
<action name="LoginAction_*" class="test.interceptor.LoginAction" method="{1}">
<result name="success">/login/success.jsp</result>
<result name="loginView">/login/login.jsp</result>
</action>
</package>
</struts>
4.登陆界面login.jsp
<s:form namespace="/login" action="LoginAction_Login" method="post" >
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
package test.interceptor;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
//登陆action
//通过实现SessionAware接口获得session
public class LoginAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = 8621393046289083366L;
private String name;
//接受session中的map
private
Map<String,Object> sessionMap;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String Login(){
if("tom".equals(name)){
//存放登陆信息,将name存储到session中
sessionMap.put("username", name);
}else{
//回到登陆页面
return LOGIN;
}
return "success";
}
public String toLoginView(){
return "loginView";
}
//注入session map
public void setSession(Map<String, Object> session) {
this.sessionMap = session;
}
}
2.自定义登陆拦截器LoginInterceptor.java代码
package test.interceptor;
import java.util.Map;
import test.action.RegAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
//登陆拦截器
public class LoginInterceptor implements Interceptor {
private static final long serialVersionUID = -9160271954215546383L;
public void destroy() {
}
public void init() {
}
//看session中有无数据,若无则跳到登陆页面,若有则放行
public String intercept(ActionInvocation invocation) throws Exception {
//获得所到达的action对象
Object action = invocation.getAction();
//若来的action为登陆action或注册action都不管,直接放行
if(action instanceof LoginAction || action instanceof RegAction){
return invocation.invoke();
}
Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();
//若无登陆,跳刀登陆页面
if(sessionMap.get("username" ) == null){
return "login";
}else{
//放行操作即失去控制权,将控制权交给重新交还给中间人invocation
return invocation.invoke();
}
}
}
3.配置文件login.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="LoginPkg" namespace="/login" extends="struts-default">
<!-- 自定义的拦截器需要注册(注册后才能用),首先要注册 -->
<interceptors>
<interceptor name="loginInterceptor" class="test.interceptor.LoginInterceptor"/>
<!-- 自定义拦截栈 -->
<interceptor-stack name="loginStack">
<!-- 在自定义拦截栈中配置自己的拦截器,再把默认栈重用过来 -->
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 定义默认栈,将登陆栈定义为默认栈 -->
<default-interceptor-ref name="loginStack"/>
<!-- 定义全局结果,在action中定义的结果为局部结果,且局部结果优先级更高 -->
<global-results>
<result name="login">/login/login.jsp</result>
</global-results>
<!-- 登陆action -->
<action name="LoginAction_*" class="test.interceptor.LoginAction" method="{1}">
<result name="success">/login/success.jsp</result>
<result name="loginView">/login/login.jsp</result>
</action>
</package>
</struts>
4.登陆界面login.jsp
<s:form namespace="/login" action="LoginAction_Login" method="post" >
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
相关文章推荐
- struts2自定义拦截器一——模拟登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2 自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证+验证框架
- struts2自定义拦截器一――模拟登陆权限验证
- struts2自定义拦截器一——模拟登陆权限验证
- Struts2自定义拦截器,实现发表文章检查是否已登陆功能
- Struts2自定义拦截器实例—登陆权限验证
- Struts2 自定义拦截器实例—登陆权限验证
- Struts2 自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证
- Struts2自定义拦截器实例—登陆权限验证