博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sturts2 拦截器的设置
阅读量:7276 次
发布时间:2019-06-29

本文共 2607 字,大约阅读时间需要 8 分钟。

hot3.png

sturts2 需要加一个拦截器在action中做登录验证校验,主要的思想是登录后在session中存储一个标志,然后在过滤器中验证这个标志,如果有则通过验证。如果没有,则返回到登录页面。
过滤器代码如下,我把标志就设置为username,需要修改的同学自己改名字
package com.tc.blacktea.util;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.struts2.ServletActionContext;import org.apache.struts2.dispatcher.ServletRedirectResult;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class LoginInterceptor implements Interceptor {	private static final long serialVersionUID = -2255797147687651066L;	private static final Log log = LogFactory.getLog(LoginInterceptor.class);	public String intercept(ActionInvocation invocation) throws Exception {		final ActionContext context = invocation.getInvocationContext();		HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);		HttpSession session = request.getSession();		String username=(String)session.getAttribute("username");		if (username == null) {			ServletRedirectResult result = new ServletRedirectResult();			result.setLocation("/toLogin.action");			try {				result.execute(invocation);			} catch (Exception ex) {				log.error("Unable to create debugging console", ex);			}			return Action.NONE;		}		return invocation.invoke();	}	public void destroy() {	}	public void init() {	}	}
在struts的总配置文件struts.xml里增加对拦截器的引用
/login.action
注意这个package的name,在需要引入这个拦截器的action的配置文件中,首先要extends这个package的name,然后在action中<interceptor-ref >引入拦截器
/jsp/storeclass/storeclasslist.jsp
/jsp/storeclass/storeclass.jsp
此时拦截器已经被引入,注意到我们的拦截器类中
result.setLocation("/toLogin.action");
这句话,所以要有一个配置文件和类专门处理toLogin这个action
新建一个struts-login.xml
/jsp/index.jsp
对应的class需要新建一个LoginAction来做跳转
package com.tc.blacktea.login.action;import com.tc.blacktea.util.BaseAction;public class LoginAction  extends BaseAction  { 	private static final long serialVersionUID = 5555663601912656942L;	public  String toLogin(){		return SUCCESS;	}}
大功告成。1.需要注意我的登录页面是在jsp/index.jsp下以此对应了sturts-login.xml。同时登录成功后,要在session中放入username这个属性。
Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);		session.put("username", username);

转载于:https://my.oschina.net/u/360078/blog/289616

你可能感兴趣的文章
日志及参数的乱码问题
查看>>
自定义广播
查看>>
UWP开发入门(十五)——在FlipView中通过手势操作图片
查看>>
大战设计模式【2】—— 观察者模式
查看>>
一个完整的Node.js RESTful API
查看>>
tornado源码分析-模块介绍
查看>>
高性能 Lua 技巧(译)
查看>>
百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug...
查看>>
lua------------------Unity3D研究院编辑器之打开unity不可识别的文件(十三)
查看>>
【转】windows 控制台cmd乱码的解决办法
查看>>
JavaWEB开发一些小的思想与功能小记
查看>>
wmiprvse.exe cpu占用高怎么解决
查看>>
一张图讲清楚TCP流量控制
查看>>
GC日志分析
查看>>
java线程同步方法,方法块差别
查看>>
【Java知识点专项练习】之 接口和抽象类的区别
查看>>
Docker 常用命令
查看>>
linux添加新磁盘和创建分区
查看>>
Nginx配置文件(nginx.conf)配置具体解释
查看>>
Android中如何在代码中设置View的宽和高?
查看>>