最近使用struts2做项目,需要拦截JSP以校验是否已经登,但struts2的过滤器链只能过滤action。后来发现在web.xml里可以直接增加javax.servlet.Filter实现类的过滤器,可以过滤JSP。请看代码
Filter实现类
[java]
<span style="font-size:18px;">package com.common;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginFilter extends HttpServlet implements Filter {
private static final long serialVersionUID = 1L;
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
String path = req.getContextPath();
String indexPath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+ "/pages/login.jsp";
if(req.getRequestURI().endsWith("login.jsp"))
{
chain.doFilter(request, response);
return;
}
Object loginuser = req.getSession().getAttribute("<strong><span style="color:#ff0000;">loginSession</span></strong>");
if(loginuser == null){
res.sendRedirect(indexPath);
return;
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
</span>
登录方法:
[java]
<span style="font-size:18px;"> public String login()
{
Login login = new Login();
//.......校验登录信息
ActionContext ctx = ActionContext.getContext();
Map<String, Object> session = ctx.getSession();
session.put("<strong><span style="color:#ff0000;">loginSession</span></strong>", login);
return "success";
}</span>
web.xml配置
[html]
<filter>
<filter-name>setlog</filter-name>
<filter-class>com.common.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>setlog</filter-name>
<url-pattern>/pages/home.jsp</url-pattern>
<url-pattern>/pages/channel/*</url-pattern>
<url-pattern>/pages/content/*</url-pattern>
<url-pattern>/pages/product/*</url-pattern>
<url-pattern>/pages/vodtask/*</url-pattern>
</filter-mapping>
注意,如果页面上使用了框架,则可能导致session超时后退出到登录页面,此时登录页面显示在框架的某个子页面,解决方法,在登录页面加入如下代码即可。
[html]
<span style="font-size: 18px;"> <script language="javascript">
if (top != window)
top.location.href = window.location.href;
</script></span>
分享到:
相关推荐
5. **校验结果处理**:当验证失败时,Struts2会将错误信息添加到ActionContext中,然后可以通过OGNL表达式在JSP页面中展示。同时,Action的execute方法不会执行,直到所有验证都通过。 6. **拦截器(Interceptor)*...
最后,压缩包中的`struts2`文件可能包含了Struts2的配置文件、Action类、视图文件(JSP或Freemarker)以及可能的自定义拦截器和转换器。通过分析这些文件,你可以更深入地了解Struts2如何处理请求,执行类型转换,...
Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...
// 用户已登录,继续执行Action return invocation.invoke(); } } ``` 接着,你需要在struts配置文件(struts.xml)中注册这个拦截器,并将其应用于需要登录保护的Action: ```xml <struts> <!-- ... --> ...
在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...
4. 结果处理:Action执行完毕后,Struts2会根据Action返回的结果码来决定如何进一步处理,可能转发到一个新的JSP页面,或者重定向到另一个URL。 二、拦截器的实现 在Struts2中,拦截器需要实现`Interceptor`接口或...
在这个名为"struts2-login校验.rar"的压缩包中,我们很显然会看到一个关于Struts2登录验证的实现,涉及到admin和user两个不同角色的登录页面。 首先,我们需要了解Struts2的核心概念,如Action和Result。Action是...
在Struts2中,拦截器(Interceptor)扮演着关键角色,它们允许开发者在Action执行前后插入自定义逻辑,比如日志记录、权限验证、数据校验等。本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解...
拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...
与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...
### Struts2拦截器实例——登录校验 #### 概述 在Web应用开发中,登录验证是一项重要的功能。为了确保只有已登录的用户才能访问特定的资源或页面,通常会采用拦截器来实现这一需求。本文档将详细介绍如何在Struts2...
如果校验失败,Struts2不会创建Action实例,而是直接返回到错误页面,展示错误消息。 3. **错误消息展示** 错误消息可以通过`FieldError`对象存储,然后在视图层(如JSP)中使用`s:fielderror`标签显示。 4. **...
本篇将详细介绍如何拦截JSP页面并校验用户是否已登录,以及提供相应的实现代码。 首先,我们通常使用过滤器(Filter)来实现这一功能。在Java Web中,`javax.servlet.Filter`接口用于创建过滤器,它可以拦截请求并...
Struts2 拦截器是基于Java的Servlet Filter设计模式的一种实现,它提供了一种在Action执行前后插入额外逻辑的方式。拦截器是Struts2框架的核心组件之一,用于增强应用的功能,比如权限验证、日志记录、数据校验等。 ...
如果用户未登录,拦截器可以重定向到登录页面;反之,允许用户继续访问。 具体步骤如下: 1. **创建Action类**:每个Action类对应一个用户请求,实现特定的业务逻辑,如添加数据、删除数据等。 2. **配置Struts2**...
手动验证通常由开发者编写代码来检查用户是否已登录,如果未登录则重定向到登录页面。而自动验证则是利用Struts2的内置验证框架,根据配置文件自动进行数据校验。 **手动验证**: 1. 创建自定义拦截器:首先,我们...
Struts2的拦截器是一种AOP(面向切面编程)的概念,它在Action调用前后执行特定的逻辑,如日志记录、权限验证、数据校验等。拦截器通过配置在struts.xml或struts-plugin.xml文件中,按照定义的顺序进行调用。每个...
### Struts2拦截器原理与实战案例解析 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的重要工具之一,其核心优势在于强大的MVC架构支持和丰富的扩展性。其中,拦截器(Interceptor)是Struts2框架的...
- 错误信息:当校验失败时,Struts2会将错误信息存入ActionContext,然后可以在JSP页面中显示这些错误。 - 转发或重定向:根据校验结果决定是否需要重新显示表单,或者跳转到其他页面。 三、最佳实践与注意事项 1...
否则,使用`ActionContext`的`setResult()`方法设置结果代码,让Struts2重定向到登录页面。 5. 实验报告和项目源代码:这个压缩包中包含的实验报告应该详细解释了上述步骤,并提供了具体的代码示例。通过阅读报告和...