学习struts2建bbs总结三:登录拦截器
2012-08-13 19:05
483 查看
前面实现了登录action,在以后发帖的过程中,必须要审核用户是否登录,如果登录了才能正常发帖,不然就返回注册界面。
这不,用上了拦截器。需要实现拦截器接口Interceptor 。
init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。
intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
自定义拦截器LoginInterceptor:
然后在struts.xml中注册:
这样一个简单的拦截器就ok了。
同上文中实现登录登出操作,系统实现了postaction,即发帖操作。但发帖必须先登录,所以在这里要引入上面的登录拦截器。如下:
上面的postAction需要在spring的xml中注册。
这样就实现了发帖的登录拦截操作。如果没有登录,即转到登录页面。
这不,用上了拦截器。需要实现拦截器接口Interceptor 。
public interface Interceptor extends Serializable { void destroy(); void init(); String intercept(ActionInvocation invocation) throws Exception; }
init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。
intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
自定义拦截器LoginInterceptor:
import java.util.Map; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class LoginInterceptor implements Interceptor { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } @Override public String intercept(ActionInvocation arg0) throws Exception { Map map= arg0.getInvocationContext().getSession(); if (map.get("USER_NAME")!=null) { return arg0.invoke(); }else{ return "noLogin"; } } }
然后在struts.xml中注册:
<interceptors> <!--判断是否登录--> <interceptor name="login" class="pengbbs.controller.LoginInterceptor" /> <interceptor-stack name="myStack"> <interceptor-ref name="login"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors><default-interceptor-ref name="myStack"></default-interceptor-ref>在这里定义拦截器栈,以供调用。其中还有别的拦截器,下文说明。还需要引用默认defaultStack。并把myStack定义为默认拦截器。
这样一个简单的拦截器就ok了。
同上文中实现登录登出操作,系统实现了postaction,即发帖操作。但发帖必须先登录,所以在这里要引入上面的登录拦截器。如下:
<action name="post" class="postAction"> <result name="success">/post_view.jsp</result> <result name="invalid.token">/error.jsp</result> <result name="notPost">/error.jsp</result> <interceptor-ref name="myStack"></interceptor-ref> <interceptor-ref name="token"></interceptor-ref> <result name="noLogin" type="redirect">/login.jsp</result> </action>
上面的postAction需要在spring的xml中注册。
<bean id="postAction" class="pengbbs.controller.PostAction" abstract="false" lazy-init="default" autowire="default" p:userService-ref="userService"> </bean>
这样就实现了发帖的登录拦截操作。如果没有登录,即转到登录页面。
相关文章推荐
- 学习struts2建bbs总结二:登录loginAction的简单实现
- 学习struts2建bbs总结四:解决jsp/action中文传值乱码问题
- Struts2拦截器总结学习
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- 【转载】struts2 学习总结 ---- 拦截器(interceptor)
- 学习struts2建bbs总结一:用powerdesigner建数据库并自动生成测试数据
- Struts2学习(九)—拦截器之登录权限
- struts2 学习总结 ---- 拦截器(interceptor)
- 学习struts2建bbs总结五:使用jquery+ajax验证用户名是否存在以及struts效验信息不断重复的问题
- 学习struts2建bbs总结七:extends ActionSupport带来的ClassNotFoundException异常
- struts2学习(6)自定义拦截器-登录验证拦截器
- SSH学习——Struts2拦截器实现登录权限验证
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
- 学习struts2建bbs总结六:hibernate分页查询的问题--分页后程序定时无响应
- Struts2学习总结(八):拦截器
- Struts2重新学习之自定义拦截器(判断用户是否是登录状态)
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Java学习笔记 Struts2拦截器实现权限登录
- Struts2学习总结(2)--数据接收,数据共享,类型转换,上传下载
- struts2要点总结 通配符、OGNL、拦截器