`
lioncode
  • 浏览: 624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java Servlet常用到的几个Filter

 
阅读更多
Java Servlet常用到的几个Filter

一、使浏览器不缓存页面的过滤器
Java代码 
public class ForceNoCacheFilter implements Filter { 
 
    public void init(FilterConfig filterConfig) throws ServletException { 
     
    } 
     
    public void doFilter(ServletRequest request, ServletResponse response, 
            FilterChain filterChain) throws IOException, ServletException { 
        ((HttpServletResponse) response).setHeader("Cache-Control", "no-cache"); 
        ((HttpServletResponse) response).setHeader("Pragma", "no-cache"); 
        ((HttpServletResponse) response).setDateHeader("Expires", -1); 
        filterChain.doFilter(request, response); 
    } 
 
    public void destroy() { 
     
    } 
 

二、检测用户是否登陆的过滤器
Java代码 
/**
* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面 配置参数 checkSessionKey 需检查的在 Session 中保存的关键字
* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath notCheckURLList
* 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath
*/ 
public class CheckLoginFilter implements Filter { 
    protected FilterConfig filterConfig = null; 
    private String redirectURL = null; 
    private List notCheckURLList = new ArrayList(); 
    private String sessionKey = null; 
    public void init(FilterConfig filterConfig) throws ServletException { 
        this.filterConfig = filterConfig; 
        redirectURL = filterConfig.getInitParameter("redirectURL"); 
        sessionKey = filterConfig.getInitParameter("checkSessionKey"); 
 
        String notCheckURLListStr = filterConfig 
                .getInitParameter("notCheckURLList"); 
 
        if (notCheckURLListStr != null) { 
            StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";"); 
            notCheckURLList.clear(); 
            while (st.hasMoreTokens()) { 
                notCheckURLList.add(st.nextToken()); 
            } 
        } 
    } 
    public void doFilter(ServletRequest servletRequest, 
            ServletResponse servletResponse, FilterChain filterChain) 
            throws IOException, ServletException { 
        HttpServletRequest request = (HttpServletRequest) servletRequest; 
        HttpServletResponse response = (HttpServletResponse) servletResponse; 
 
        HttpSession session = request.getSession(); 
        if (sessionKey == null) { 
            filterChain.doFilter(request, response); 
            return; 
        } 
        if ((!checkRequestURIIntNotFilterList(request)) 
                && session.getAttribute(sessionKey) == null) { 
            response.sendRedirect(request.getContextPath() + redirectURL); 
            return; 
        } 
        filterChain.doFilter(servletRequest, servletResponse); 
    } 
    private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) { 
        String uri = request.getServletPath() 
                + (request.getPathInfo() == null ? "" : request.getPathInfo()); 
        return notCheckURLList.contains(uri); 
    } 
    public void destroy() { 
        notCheckURLList.clear(); 
    } 
     

三、字符编码的过滤器
Java代码 
/**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/ 
public class CharacterEncodingFilter implements Filter { 
    protected FilterConfig filterConfig = null; 
    protected String encoding = ""; 
    public void init(FilterConfig filterConfig) throws ServletException { 
        this.filterConfig = filterConfig; 
        this.encoding = filterConfig.getInitParameter("encoding"); 
 
    } 
    public void doFilter(ServletRequest servletRequest, 
            ServletResponse servletResponse, FilterChain filterChain) 
            throws IOException, ServletException { 
        if (encoding != null) 
            servletRequest.setCharacterEncoding(encoding); 
        filterChain.doFilter(servletRequest, servletResponse); 
    } 
 
    public void destroy() { 
        filterConfig = null; 
        encoding = null; 
    } 

四 利用Filter限制用户浏览权限
Java代码 
public class RightFilter implements Filter { 
 
    public void init(FilterConfig arg0) throws ServletException { 
    } 
 
    public void doFilter(ServletRequest sreq, ServletResponse sres, 
            FilterChain arg2) throws IOException, ServletException { 
        // 获取uri地址 
        HttpServletRequest request = (HttpServletRequest) sreq; 
        String uri = request.getRequestURI(); 
        String ctx = request.getContextPath(); 
        uri = uri.substring(ctx.length()); 
        // 判断admin级别网页的浏览权限 
        if (uri.startsWith("/admin")) { 
            if (request.getSession().getAttribute("admin") == null) { 
                request.setAttribute("message", "您没有这个权限"); 
                request.getRequestDispatcher("/login.jsp").forward(sreq, sres); 
                return; 
            } 
        } 
        // 判断manage级别网页的浏览权限 
        if (uri.startsWith("/manage")) { 
            // 这里省去 
        } 
    } 
 
    public void destroy() { 
    } 

<!-- 判断页面的访问权限 -->
Xml代码 
<filter>   
    <filter-name>RightFilter</filter-name>   
    <filter-class>cn.itkui.filter.RightFilter</filter-class>   
</filter>   
<filter-mapping>   
    <filter-name>RightFilter</filter-name>   
    <url-pattern>/admin/*</url-pattern>   
</filter-mapping>   
<filter-mapping>   
    <filter-name>RightFilter</filter-name>   
    <url-pattern>/manage/*</url-pattern>   
</filter-mapping> 
分享到:
评论

相关推荐

    tomcat跨域cors相关jar包 java-property-utils-1.9.jar,cors-filter-1.7.jar,java-util-1.9

    在Tomcat中实现跨域CORS,通常涉及以下几个步骤: 1. **配置CORS过滤器**:在`web.xml`中添加`&lt;filter&gt;`和`&lt;filter-mapping&gt;`,并将`CorsFilter`类绑定到所有请求或特定请求路径。 2. **定义CORS策略**:配置过滤器...

    jsp有关用到的jar包.rar

    6. **Servlet API**:为了在服务器端处理HTTP请求,可能包含`servlet-api.jar`,这是Java Servlet规范的一部分,提供了Servlet和Filter接口以及相关的类。 这些jar包在JSP开发中起着至关重要的作用,它们能够帮助...

    Java购物车及JSTL的应用

    购物车通常由以下几个关键部分组成: 1. **商品添加**:用户选择商品后,系统将商品信息(如ID、名称、价格、数量等)添加到购物车中。这需要一个服务接口用于接收请求并处理数据。 2. **商品展示**:购物车页面...

    BBS java web

    通常,这样的项目结构会包括以下几个部分: 1. **源码目录**:存放Java源代码,可能分为Model(业务模型)、View(视图)、Controller(控制器)三个部分,对应MVC设计模式。 2. **资源目录**:存储静态资源,如...

    轻量级Java EE企业应用实战第4版第8章03源代码.rar

    这个项目的源代码可能涵盖以下几个关键知识点: 1. **Servlet和JSP**:作为Java EE的基础,Servlet负责处理HTTP请求,而JSP则用于生成动态网页内容。开发者可能使用它们来实现用户界面和服务器端逻辑的交互。 2. *...

    图书管理系统(java语言开发)

    3. 用户管理:注册、登录、权限控制等功能,可能利用Java Servlet和JSP技术实现前后端分离,配合过滤器(Filter)进行权限验证。 4. 搜索与查询:支持按书名、作者、类别等多种条件进行检索,这需要对数据库查询...

    java.web王者归来一书宠物商店源码.part1

    在这个部分中,我们可以深入学习到以下几个关键的Java Web开发知识点: 1. **Servlet技术**:Servlet是Java Web应用程序的基础,用于接收和响应来自Web客户端(如浏览器)的请求。在宠物商店项目中,Servlet可能被...

    javaweb学习资料及项目文件包

    在JavaWeb开发中,主要涉及以下几个核心知识点: 1. **Servlet**:Servlet是JavaWeb开发的基础,它是一个运行在服务器端的小程序,用于接收和响应HTTP请求。Servlet生命周期包括加载、实例化、初始化、服务、销毁等...

    基于Java的轻量级CMS-天梯.zip

    2. **了解Java Web开发**:如Servlet、JSP、Filter等,以及MVC(Model-View-Controller)设计模式。 3. **掌握相关框架**:例如Spring Boot、MyBatis或Hibernate,它们简化了Java Web应用的开发和配置。 4. **数据库...

    tomcat8.0源码

    Tomcat 8.0源码主要分为以下几个部分: 1. `common`:包含了所有版本的Tomcat都会用到的通用类。 2. `catalina`:核心服务组件,如`Engine`、`Host`、`Context`和`Wrapper`,它们构成了Tomcat的容器模型。 3. `jdbc...

    java软件工程师面试基本题_共5页.pdf

    * SpringMVC 是基于过滤器对 Servlet 进行了封装的一个框架,我们使用的时候就是在文件中配置 DispatcherServlet 类。 * SpringMVC 工作时主要是通过 DispatcherServlet 管理接收到的请求并进行处理。 * Spring 用的...

    Jsp考试系统-jspks.zip

    该系统的实现主要涉及以下几个核心知识点: 1. **JSP基础**:JSP页面由HTML和嵌入的Java代码组成,通过`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`等指令进行页面间的跳转和数据传递。在本系统中,JSP文件可能包含用户界面...

    javaWEB2

    在JavaWeb开发中,我们通常会涉及到以下几个重要的知识点: 1. **Servlet**:Servlet是Java语言中用于扩展服务器功能的接口,它是JavaWeb开发的核心组件。通过实现Servlet接口或继承HttpServlet类,开发者可以处理...

    OA_Plate.rar

    在【OA_Plate】项目中,我们可以预期以下几个方面的内容: 1. **MVC架构**:为了组织和分离关注点,项目很可能采用了Model-View-Controller(MVC)设计模式。在这种模式下,模型负责业务逻辑,视图负责用户界面,而...

    UrlReWriteDemo

    在项目中,主要涉及以下几个关键知识点: 1. **URL重写规则**:UrlReWriteDemo的核心是定义URL重写规则,这通常通过配置文件(如`.htaccess`或自定义配置)来实现。在Java环境中,可能使用开源库如`Tuckey ...

    JAVAEE云盘管理系统

    在JavaEE平台上,开发云盘管理系统的关键技术主要包括以下几个方面: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的核心组件,负责接收和响应客户端请求。JSP(JavaServer Pages)用于生成动态网页内容,...

    JAVAWEB选择题.pdf

    1. **Filter的实现**:在JavaWeb中,创建一个Filter需要实现`javax.servlet.Filter`接口,并且在web.xml中进行配置。选项B正确描述了这一点。 2. **自定义标签配置**:自定义标签的配置文件通常放在`WEB-INF`目录下...

    XSSSecurityFilter实战

    实现这个过滤器通常需要以下几个步骤: 1. 创建一个实现了javax.servlet.Filter接口的类,如`XSSSecurityFilter`。 2. 在`doFilter`方法中,获取请求参数并进行XSS防护处理。这可能包括对字符串进行HTML实体编码,...

    Javaweb课程设计-网上订餐管理系统(源码+实验报告) .zip

    JavaWeb是指使用Java技术来开发Web应用程序的一系列技术和框架的集合,包括Servlet、JSP、JavaBean、Filter、Listener等。这些技术共同构成了动态Web应用的基础,使得开发者能够构建交互性强、功能丰富的Web应用。 ...

    马士兵老师搭建struts2环境时用到的jar架包

    Struts2是一个强大的Java EE应用程序框架,用于构建和部署企业级Web应用。它结合了Model-View-Controller(MVC)设计模式,并提供了强大的动作调度、国际化、异常处理等功能,大大简化了Java Web开发。马士兵老师是...

Global site tag (gtag.js) - Google Analytics