自定义拦截器用于用户登录的
2014-06-03 20:32
429 查看
1、编写一个类,实现com.opensymphony.xwork2.interceptor.Interceptor 2、主要实现public String intercept(ActionInvocation invocation) throws Exception{}方法 该方法的返回值就相当于动作的返回值 如果调用了String result = invocation.invoke();得到了动作类的返回的值。 public String intercept(ActionInvocation invocation) throws Exception { //判断用户是否登录 HttpSession session = ServletActionContext.getRequest().getSession(); Object obj = session.getAttribute("user"); if(obj==null){ return "login"; }else{ return invocation.invoke();//调用动作方法 } } 3、拦截器定义好后,一定要在配置文件中进行注册: <interceptors> 只是定义拦截器,并没有起作用 <interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"></interceptor> </interceptors> 4、配置文件中的动作,要通过 <interceptor-ref name="permissionInterceptor"></interceptor-ref>使用该拦截器 注意:一旦动作中使用了自定义的拦截器,那么默认的就不起作用了。一般应该采用如下的做法: <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="permissionInterceptor"></interceptor-ref> 多个动作类都要使用的话,可以通过package来进行组合。
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <!-- <constant name="struts.ui.theme" value="simple"></constant>--> <package name="mydefault" extends="struts-default"> <interceptors> <interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"></interceptor> <interceptor-stack name="mydefaultstack"> <!-- 集总定义的栈内容 --> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="permissionInterceptor"></interceptor-ref> </interceptor-stack> </interceptors> </package> <package name="user" namespace="/user" extends="mydefault"> <action name="login" class="cn.itcast.domain.User" method="login"> <!--用于处理 login.jsp 中提交的表单,登录的请求--> <result name="success">/</result> <result name="login">/login.jsp</result> </action> <action name="user_*" class="cn.itcast.domain.User" method="{1}"> <interceptor-ref name="mydefaultstack"></interceptor-ref> <!--拦截器 引用--> <result name="success">/listUsers.jsp</result> <result type="redirectAction" name="delOk">user_listUsers</result> <result name="input">/{1}.jsp</result> <result name="saveOk">/success.jsp</result> <result name="editOk">/success.jsp</result> <result name="editUI">/editUser.jsp</result> <result name="showUser">/showUser.jsp</result> <result name="login">/login.jsp</result> <!--让拦截器 找的结果--> </action> <action name="download" class="cn.itcast.domain.User" method="download"> <interceptor-ref name="mydefaultstack"></interceptor-ref> <!-- 方便使用一个 --> <result type="stream" name="success"> <param name="contentType">application/octet-stream</param> <param name="inputStream">inputStream</param><!-- 输入是对应的动作类中的那个字段--> <param name="contentDisposition">attachment;filename=${filename}</param><!-- 要下载的文件名--> </result> <result name="login">/login.jsp</result> </action> </package> </struts>
java文件
package cn.itcast.interceptor; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class PermissionInterceptor implements Interceptor { @Override public void destroy() { } @Override public void init() { System.out.println("PermissionInterceptor intercept init"); } @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("PermissionInterceptor intercept "); HttpSession session = ServletActionContext.getRequest().getSession(); Object obj = session.getAttribute("user"); if(obj==null){ return "login"; //返回到 struts.xml中对应的 action下面的result name="longin" 页面 }else{ return invocation.invoke(); } } }
User.java中的
public String login() { User user=service.login(username, password); if(user==null) return LOGIN; else { ServletActionContext.getRequest().getSession().setAttribute("user", user); return SUCCESS; } }
相关文章推荐
- Struts2自定义拦截器案例:验证用户是否登录拦截器
- Struts2拦截器—自定义拦截器验证用户登录
- springmvc用户未登录自定义拦截器
- Struts2自定义拦截器,检查用户是否登录
- springmvc 自定义拦截器实现未登录用户的拦截
- Struts2重新学习之自定义拦截器(判断用户是否是登录状态)
- 自定义HttpModule,用于未登录用户,不弹出Windows认证窗口,而是跳转回SSO站点
- [9月28日的脚本] 用于查找用户登录持续时间的脚本示例(PowerShell)
- 过滤器和拦截器的比较及未登录用户权限限制的实现(ZHUAN)
- struts2定义拦截器(Interceptor)检查用户是否已经登录
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- Struts2拦截器,简单的用户登录拦截及静态缓存的使用
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- 过滤器和拦截器的比较及未登录用户权限限制的实现
- Linux下用于查看系统当前登录用户信息的4种方法
- OutPutCache 自定义缓存:session、登录用户、cookie 等
- 使用拦截器来检测用户是否登录
- 用户自定义的Alert弹出框和ajax验证登录
- iiphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)