在基于struts2开发的web项目中,经常会用到filter过滤器,对session进行验证。如果session失效,则提示登录失效并返回到登录页面。
如下便是简单的实现过程。
首先是Filter:
public class FirstFilter implements Filter {
public void init(FilterConfig cong) {
// do nothing
}
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) {
try {
HttpServletRequest requst = (HttpServletRequest) srequest;
HttpServletResponse response = (HttpServletResponse) sresponse;
HttpSession session = requst.getSession();
//从session从取出userid,如果为空说明没有登录,将其转到登录页面.
Object obj = session.getAttribute("userId");
if (obj == null) {
//跳转到登陆页面
response.sendRedirect("/Expert_DataBase/pages/loginTransfer.jsp");
} else {
//如果存在则跳出过滤器继续执行
chain.doFilter(srequest, sresponse);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void destroy() {
//do nothing
}
}
接下来要在web.xml里对filter进行配置
<!-- Struts2 -->
<!-- 配置Struts2的session的Filter -->
<filter>
<!-- 声明filter -->
<filter-name>struts-session</filter-name>
<filter-class>com.zxt.expert.util.FirstFilter</filter-class>
</filter>
<!-- 定义Struts2的session Filter拦截的URL -->
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/formengine/zsf_switchSystemMenu.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/expertsinfo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/taskinfo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/attachment/*</url-pattern>
</filter-mapping>
……
这个可以自己添加需要进行过滤的路径。
如此,便可以实现对session的过滤了,如果session失效的话,会退回到登录页面。
分享到:
相关推荐
本文将通过一个具体的示例来详细介绍如何在Struts2项目中配置过滤器。 #### 二、过滤器配置实例分析 ##### 2.1 web.xml配置解析 在给定的web.xml配置文件中,可以看到对`SessionInvalidate`过滤器进行了定义和...
在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地利用这两种工具来优化应用程序的性能和安全性。 #### 二、...
在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...
当使用其他框架(如Struts2)时,需要注意`OpenSessionInViewFilter`与这些框架中过滤器的顺序。例如,在上面的例子中,`OpenSessionInViewFilter`被配置在`webwork`过滤器之前,这是为了确保在处理Struts2相关的...
在Struts2中,过滤器与拦截器(Interceptor)一起工作,提供了强大的请求处理和业务逻辑控制。 一、防止浏览器缓存页面的过滤器 `ForceNoCacheFilter`是一个示例,它的目的是确保浏览器不缓存任何页面内容。这在...
Struts2的拦截器是处理请求的过滤器,可以用于日志记录、权限检查、数据校验等。它们通过`struts-default.xml`和自定义配置文件定义,并按顺序执行。 7. **国际化和主题**: Struts2支持应用的多语言支持和UI主题...
在Struts1.2中,过滤器常用于处理共性任务,比如登录验证、字符编码转换、安全过滤等。开发者可以通过配置web.xml来定义Filter的顺序和映射规则。 4. Session: Session是服务器端保存用户状态的一种机制。在...
在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...
- 确保在web.xml中配置了Struts2的核心过滤器`<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>`。 - 当使用EL表达式时,注意对象的作用域,以防止找不到...
- **在`web.xml`中配置核心过滤器:** Struts2框架通过配置一个过滤器来启动,这个过滤器负责初始化Struts2框架。 - **定义Action类并配置Action:** Action类通常需要继承`ActionSupport`类,以便利用Struts2提供...
这篇博客文章可能详细探讨了如何在Struts2中使用OGNL来传递和操作数据。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于...
这篇博客文章《Struts2中使用displaytag标签总结》很可能是讨论如何在Struts2框架下集成并利用DisplayTag库来高效地处理表格显示。 DisplayTag标签库包括一系列自定义JSP标签,这些标签能够帮助开发者快速创建美观...
2. **拦截器(Interceptor)**:类似于过滤器,可以定义一系列预处理和后处理逻辑,如日志记录、权限验证等。 3. **配置文件**:通常为struts.xml,用于配置Action、结果类型、拦截器栈等。 4. **结果类型(Result)...
首先,入口点是`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`,这两个过滤器负责拦截HTTP请求并将其导向Struts2的处理流程。接着,`ActionContext`保存了与当前请求相关的上下文信息,如参数、session等。而...
2. **删除(Delete)**:通过Action获取需要删除的对象ID,根据ID查询数据库中的对象,使用Session的delete()方法删除对象。 3. **修改(Update)**:先根据ID查询数据库中的对象,修改对象的属性,然后调用Session...
- FilterDispatcher和StrutsPrepareAndExecuteFilter:Struts2的两种过滤器,它们在Web应用中的角色和配置。 - Spring集成:如果涉及,会介绍如何将Struts2与Spring框架整合,实现依赖注入和事务管理。 通过阅读这...
本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...
1. **Action与结果**:在Struts2中,业务逻辑处理主要由Action类负责。Action类执行特定的操作,并通过Result返回不同的视图。Result可以是JSP、FreeMarker模板或者其他类型的视图。 2. **拦截器(Interceptors)**...
此外,对于大型项目,通常会使用自定义的过滤器或者Spring Security等更强大的安全框架来处理登录验证。 了解了登录拦截器的工作原理后,我们可以根据项目的具体需求对其进行扩展和定制,以满足各种复杂的业务场景...
1. **配置Struts2**:在web.xml中配置Struts2的DispatcherServlet,添加struts2的核心过滤器,并设置相关的初始化参数。 2. **引入Hibernate**:在项目中添加Hibernate的库,包括hibernate-core、hibernate-...