这周带新人在我们系统登录页面做一个单表增删改查功能(如注册),在做的过程中发现跳转的时候存在问题,每次点击新增的按钮后,没有跳转到自己需要的页面,而是跳转到我们系统的登录页面,经过一段时间的琢磨了解到原来是过滤器搞的鬼。
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;
}
}
}
分享到:
相关推荐
1. **StrutsPrepareAndExecuteFilter**: 这是Struts2的过滤器,负责初始化框架并处理请求。 2. **ActionContext**: 包含了当前请求的所有上下文信息,如session、request、response、value stack等。 3. **...
4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,允许在JSP页面、Action类和配置文件中方便地访问和操作对象属性。 5. **Freemarker和Velocity模板**:Struts2支持使用这两...
### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...
此外,Spring2还提供了数据访问、Web MVC、测试等模块,与Hibernate和Struts2结合使用,可构建强大的企业级应用。 **JavaWeb** 基础知识涵盖了Servlet、JSP、过滤器、监听器等核心概念。Servlet是Java编写的服务端...
6. **StrutsPrepareAndExecuteFilter**: 这是Struts2的过滤器,负责初始化Struts2环境并在请求处理过程中拦截请求,调用Action。 7. **配置文件**: Struts2支持XML和注解两种配置方式,如`struts.xml`用于全局配置...
1. 配置Struts2:首先在Web应用的`web.xml`中配置Struts2的核心过滤器,定义Action的命名空间和结果类型。 2. 引入Spring:在Struts2的配置文件(如`struts.xml`)中,声明Spring插件并指定Spring应用上下文的位置...
7. **生命周期**:从请求到达,经过过滤器,到Action的调用,再到Result的返回,每个步骤都涉及到了Struts2的生命周期管理。 8. **ActionContext**:ActionContext封装了当前请求的环境信息,包括请求参数、值栈、...
3. `WEB-INF` - 包含web.xml,这是Web应用的部署描述符,用于配置Servlet和过滤器。 4. `jsp` - 视图层的JSP文件,展示数据并处理用户的交互。 通过学习和实践这个SSH集成示例,开发者可以掌握如何在实际项目中运用...
### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...
6. **Struts2的生命周期**:了解Struts2从接收请求到响应的整个流程,包括请求的过滤、拦截器链的执行、Action的实例化和调用、结果的返回等,有助于开发者更好地调试和优化应用。 7. **国际化与主题**:Struts2...
- Struts 2使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,用于在视图层和模型层之间获取和设置属性。 7. **过滤器Dispatcher** - Struts 2的核心过滤器,负责拦截HTTP请求,将请求转发到...
Struts2是一个流行的Java Web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,OGNL(Object-Graph Navigation Language)扮演着核心角色,它是一种强大的表达式语言,用于在Action类...
Struts2的拦截器是处理请求的过滤器,可以用于日志记录、权限检查、数据校验等。它们通过`struts-default.xml`和自定义配置文件定义,并按顺序执行。 7. **国际化和主题**: Struts2支持应用的多语言支持和UI主题...
当使用其他框架(如Struts2)时,需要注意`OpenSessionInViewFilter`与这些框架中过滤器的顺序。例如,在上面的例子中,`OpenSessionInViewFilter`被配置在`webwork`过滤器之前,这是为了确保在处理Struts2相关的...
此外,还需要配置Struts2的过滤器。 ```xml <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <filter-mapping> ...
struts-config.xml定义了ActionMapping、ActionForm和Action的配置,而web.xml则配置了ActionServlet和其他过滤器。 3. **视图技术**:Struts支持JSP作为视图层,通过使用JSP标签库(如struts-bean、struts-html、...
在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...
在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...
Struts过滤器是Java Web开发中的一个重要概念,尤其在使用Struts2框架时,它们扮演着处理请求和响应的关键角色。过滤器(Filter)是Servlet API的一部分,允许开发者在请求到达目标资源(如Servlet或JSP)之前进行...