`

设置web.xml中多个过滤器

阅读更多

我们在用struts2的时候,通常会使用默认的过滤器,定义拦截器,这样就可以控制请求过来的.action请求,但是如果我们直接使用.jsp来访问页面的话,就会有一些页面不能被拦截,会出现报错画面,影响网站的整体质量,这个时候我们就可以在web.xml中定义一个过滤器,让它来过滤.jsp的请求,做一些操作。代码如下:

<!-- 让Struts 2 的核心Filter拦截所有.action请求 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<!-- 自定义一个过滤器 -->
	<filter>
		<filter-name>myFilter</filter-name>
		<filter-class>jy.filter.MyFilter</filter-class>
	</filter>
	<!-- 让自定义的Filter拦截所有.jsp请求 -->
	<filter-mapping>
		<filter-name>myFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

 

过滤器java代码如下:

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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class MyFilter implements Filter {

    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
	    FilterChain chain) throws IOException, ServletException {
	System.out.println("自定义过滤器开始!");
	HttpServletRequest request = (HttpServletRequest) req;
	HttpServletResponse response = (HttpServletResponse) res;
	HttpSession session = request.getSession();
	String uri = request.getRequestURI();
	uri = uri.split("/")[uri.split("/").length - 1];
	if (uri.equals("login.jsp") || uri.equals("regist.jsp")) {
	    chain.doFilter(req, res);
	} else {
	    if (session.getAttribute("user") != null) {
		chain.doFilter(req, res);
	    } else {
		response.sendRedirect(request.getContextPath() + "/login.jsp");
		return;
	    }
	}
    }

    public void init(FilterConfig arg0) throws ServletException {
    }

}

 

分享到:
评论

相关推荐

    在web.xml中引入其他xml配置文件的步骤

    例如,在示例中提到的`test.xml`包含了过滤器(`filter`)的相关配置: ```xml &lt;filter-name&gt;CasValidationFilter &lt;filter-class&gt;org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter ...

    web.xml配置详解, web.xml web.xml 配置实例

    * filter-mapping 元素:一旦命名了一个过滤器,就要利用 filter-mapping 元素把它与一个或多个 servlet 或 JSP 页面相关联。 * listener 元素:事件监听程序在建立、修改和删除会话或servlet 环境时得到通知。 * ...

    Tomcat中用web.xml控制Web应用详解

    在 Servlet 的生命周期中,context-param 可以被多个组件所使用。 listener 元素 listener 元素用于配置监听器。监听器可以在 Web 应用启动时执行一些初始化操作。容器将创建 listener 中的类实例,并将其作为监听...

    详解Spring mvc的web.xml配置说明

    `context-param`用于指定Spring上下文配置文件的位置,通常是一个或多个路径,用逗号分隔,如`classpath*:spring/spring-config.xml`。`ContextLoaderListener`监听器会在Web应用启动时读取这些配置文件,创建Spring...

    web.xml配置文件详解

    4. ****:用于定义一个过滤器。过滤器可以拦截用户请求,并进行预处理或后处理工作。 - `&lt;filter-name&gt;`:过滤器的名称。 - `&lt;filter-class&gt;`:过滤器的具体实现类,通常是一个实现了`javax.servlet.Filter`接口的...

    web.xml配置详解

    distributable 元素用于指定是否可以在多个服务器之间分发该 Web 应用,&lt;!ELEMENT distributable (true | false) &gt;。 context-param 元素用于定义 Web 应用的参数,&lt;!ELEMENT context-param (param-name, param-...

    web.xml各种配置

    web.xml中可以定义多个配置元素,包括但不限于: - **icon**: 指定IDE和GUI工具用来表示Web应用的图像文件位置。 - **context-param**: 定义Web应用范围内的初始化参数。 - **listener**: 声明Web应用启动和终止时...

    WEB.XML详解

    在web.xml中,还可以定义多个filter,每个filter可以有多个节点,但每个都必须在对应的节点之后。因为当Web容器解析到filter-mapping时,必须确保filter-name已经被定义,否则会出现错误。 综上所述,web.xml文件...

    Filter过滤器的代码及其web.xml配置代码

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...

    web.xml文件配置.doc

    在filter配置中,多个filter的初始化顺序由它们在web.xml文件中的位置决定,但filter拦截资源的顺序则是根据filter-mapping的顺序进行。每个filter-mapping对应一个filter,且filter-mapping必须位于相应的filter...

    java web项目 web.xml配置详解

    `web.xml`是Java Web应用的核心配置,它管理了Servlet、过滤器和监听器等组件,以及会话、安全、错误处理等多个方面。理解和熟练掌握`web.xml`配置,能有效提升开发效率,保证应用的稳定性和安全性。在实际开发中,...

    Web.xml配置详解

    5. ****:定义一个过滤器,该过滤器实现`javax.servlet.Filter`接口。过滤器可以用于执行预处理操作,如编码转换、权限验证等。 6. ****:用于把过滤器与一个或多个Servlet或JSP页面相关联。需要注意的是,对于具有...

    Web项目没有web.xml配置文件

    传统的Java Web应用通常依赖于`web.xml`文件来配置Servlet、过滤器、监听器等核心组件,但在最新的技术栈中,这种硬编码的方式已经被更加灵活和动态的配置方式所取代。 1. **Spring Boot**:Spring Boot是推动这一...

    web.xml详解.txt

    此标签表明Web应用是否支持分发部署,即多个JSP容器之间能否共享会话状态。 #### 四、示例 以下是一个简单的`web.xml`文件示例: ```xml &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; &lt;web-app xmlns=...

    web.xml sample

    这个`web.xml`示例展示了如何通过XML配置来定制Java Web应用的行为,包括处理请求、错误处理、会话管理、安全控制等多个方面,是学习和理解SCWCD(Sun Certified Web Component Developer)认证的重要内容。...

    web.xml文件的详细说明.txt

    - **`&lt;filter&gt;`**:定义一个过滤器,可以对进入或离开特定的资源(如servlet或jsp页面)的数据进行预处理或后处理。 - **`filter-name`**:过滤器的唯一名称。 - **`filter-class`**:实现过滤器功能的具体类名。 ...

    Web.xml配置文件.pdf

    此时,`Web.xml`可能不是唯一的部署描述符来源,服务器会将多个XML配置文件合并,包括`META-INF/web-fragment.xml`和`WEB-INF/web.xml`。 总结,`Web.xml`是Java Web应用的心脏,它定义了应用的架构、行为和运行...

Global site tag (gtag.js) - Google Analytics