`
gpqhl0071
  • 浏览: 54730 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Struts2--针对session使用过滤器

 
阅读更多
这周带新人在我们系统登录页面做一个单表增删改查功能(如注册),在做的过程中发现跳转的时候存在问题,每次点击新增的按钮后,没有跳转到自己需要的页面,而是跳转到我们系统的登录页面,经过一段时间的琢磨了解到原来是过滤器搞的鬼。
web.xml配置如下:
<filter>
		<filter-name>SESSION FILTER</filter-name>
		<filter-class>com.sinosoft.common.filter.SessionFilter</filter-class>
	</filter>

在这个Fileter类中doFilter方法校验如果session中没有usercode(用户名)在跳转的时候页面都跳转到登录页面。
public class SessionFilter implements Filter {

	public void init(FilterConfig filterconfig) throws ServletException {
	}

	public void destroy() {
	}
	public void doFilter(ServletRequest request, ServletResponse response,
				FilterChain chain) throws IOException, ServletException {
			HttpServletRequest httprequest = (HttpServletRequest)request;
			String   request_uri   =   httprequest.getRequestURI();
			// 对SESSION是否有效进行校验
			boolean flag = checkSession((HttpServletRequest) request, (HttpServletResponse) response);
			if (flag)
					IndivCheck.indivCheck((HttpServletRequest) request);
					chain.doFilter(request, response);
			}
	}
	
	private boolean checkSession(HttpServletRequest request,
				HttpServletResponse response) {
		// 如果Session失效,返回null;
		HttpSession session = request.getSession(false);
		String URI = request.getRequestURI();
		
		if ((null != request.getParameter("userCode")
				&& null != request.getParameter("password"))) {
			return true;
		} else {
			try {
				String userCode = (String) session.getAttribute(CASFilter.CAS_FILTER_USER);
				UserMsgResInfo userMsgResInfo = null;
				UserInfo userInfo = null;
				String ssoRequester = request.getParameter("ssoRequester");
				userInfo = (UserInfo) session.getAttribute("userInfo");
				
				// 获取页面中的用户,如果为空 返回登录页面
				if (null == userInfo) {
					response.sendRedirect("/prpins");
					return false;
				}
			} catch (Exception e) {
				System.out.println("登录超时,请重新登录");
				try {
					response.sendRedirect("/prpins");
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				e.printStackTrace();
						return false;
				}
					return true;
			}
	}
}
分享到:
评论

相关推荐

    struts2-core-2.3.7源码

    1. **StrutsPrepareAndExecuteFilter**: 这是Struts2的过滤器,负责初始化框架并处理请求。 2. **ActionContext**: 包含了当前请求的所有上下文信息,如session、request、response、value stack等。 3. **...

    struts2-core-2.0.11.jar

    4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,允许在JSP页面、Action类和配置文件中方便地访问和操作对象属性。 5. **Freemarker和Velocity模板**:Struts2支持使用这两...

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...

    JavaWeb-Hibernate-Struts2-Spring2

    此外,Spring2还提供了数据访问、Web MVC、测试等模块,与Hibernate和Struts2结合使用,可构建强大的企业级应用。 **JavaWeb** 基础知识涵盖了Servlet、JSP、过滤器、监听器等核心概念。Servlet是Java编写的服务端...

    struts2-API.rar

    6. **StrutsPrepareAndExecuteFilter**: 这是Struts2的过滤器,负责初始化Struts2环境并在请求处理过程中拦截请求,调用Action。 7. **配置文件**: Struts2支持XML和注解两种配置方式,如`struts.xml`用于全局配置...

    J2EE-Struts2-Spring-Hibernate整合的例子:添加

    1. 配置Struts2:首先在Web应用的`web.xml`中配置Struts2的核心过滤器,定义Action的命名空间和结果类型。 2. 引入Spring:在Struts2的配置文件(如`struts.xml`)中,声明Spring插件并指定Spring应用上下文的位置...

    struts2.3-core源码

    7. **生命周期**:从请求到达,经过过滤器,到Action的调用,再到Result的返回,每个步骤都涉及到了Struts2的生命周期管理。 8. **ActionContext**:ActionContext封装了当前请求的环境信息,包括请求参数、值栈、...

    struts2-spring2.5-hibernate3.3.rar

    3. `WEB-INF` - 包含web.xml,这是Web应用的部署描述符,用于配置Servlet和过滤器。 4. `jsp` - 视图层的JSP文件,展示数据并处理用户的交互。 通过学习和实践这个SSH集成示例,开发者可以掌握如何在实际项目中运用...

    Struts 2 过滤器和拦截器的区别

    ### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...

    struts-2.3.15-docs.zip-api文档

    6. **Struts2的生命周期**:了解Struts2从接收请求到响应的整个流程,包括请求的过滤、拦截器链的执行、Action的实例化和调用、结果的返回等,有助于开发者更好地调试和优化应用。 7. **国际化与主题**:Struts2...

    struts-2.3.24源码

    - Struts 2使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,用于在视图层和模型层之间获取和设置属性。 7. **过滤器Dispatcher** - Struts 2的核心过滤器,负责拦截HTTP请求,将请求转发到...

    Struts2-OGNL.rar_ognl

    Struts2是一个流行的Java Web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,OGNL(Object-Graph Navigation Language)扮演着核心角色,它是一种强大的表达式语言,用于在Action类...

    struts2简单例子

    Struts2的拦截器是处理请求的过滤器,可以用于日志记录、权限检查、数据校验等。它们通过`struts-default.xml`和自定义配置文件定义,并按顺序执行。 7. **国际化和主题**: Struts2支持应用的多语言支持和UI主题...

    过滤器对于session周期的控制

    当使用其他框架(如Struts2)时,需要注意`OpenSessionInViewFilter`与这些框架中过滤器的顺序。例如,在上面的例子中,`OpenSessionInViewFilter`被配置在`webwork`过滤器之前,这是为了确保在处理Struts2相关的...

    Struts2.0-Hibernate3.2-Spring2.0整合

    此外,还需要配置Struts2的过滤器。 ```xml &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;filter-mapping&gt; ...

    struts-1.3.10-lib.rar

    struts-config.xml定义了ActionMapping、ActionForm和Action的配置,而web.xml则配置了ActionServlet和其他过滤器。 3. **视图技术**:Struts支持JSP作为视图层,通过使用JSP标签库(如struts-bean、struts-html、...

    Struts2拦截器实现权限控制demo

    在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...

    struts2 学习重点笔记

    在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...

    struts过滤器.doc

    Struts过滤器是Java Web开发中的一个重要概念,尤其在使用Struts2框架时,它们扮演着处理请求和响应的关键角色。过滤器(Filter)是Servlet API的一部分,允许开发者在请求到达目标资源(如Servlet或JSP)之前进行...

Global site tag (gtag.js) - Google Analytics