`
wzhiju
  • 浏览: 139688 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目源码解读(1): web.xml <filter> 的配置

阅读更多
在最近接触的一个项目中,涉及到对系统初始化的检测。在web.xml中,配置过滤器,用于拦截请求信息。web.xml 中filter 元素 配置如下:
<filter>
    <filter-name>PowerCheck</filter-name>           
        <filter-class>apabi.edoc.util.filter.PowerFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GBK</param-value>
        </init-param>       
  </filter>
    <filter-mapping>
        <filter-name>PowerCheck</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping> 

filter 的配置和servlet 差不多,有一个filter-name 元素节点,定义了该filter的name ,filter-class 为该filter的具体实现的类,<init-param> 初始化参数 encoding,在powerFilter.java 文件中,可以获取。
对应的PowerFilter.java文件为:
public class PowerFilter implements Filter{
private FilterConfig filterConfig;
protected String encoding = null;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
{
try
{
//进行请求和响应的类型转换
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;

String spath = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
spath = spath.toUpperCase();
if(spath.indexOf(".cebx") >= 0 || spath.indexOf("/downloadcebx.do") == 0 || spath.indexOf("/IMGS/") == 0 || spath.indexOf("/SCRIPTS/") == 0 || spath.indexOf("/CSS/") == 0 || spath.indexOf("/LAYOUTS/") == 0)
{
chain.doFilter(request, response);
return;
}

//设置编码,处理中文编码问题
if(encoding != null)
{
httpRequest.setCharacterEncoding(encoding);
httpResponse.setContentType("text/html; charset=" + encoding);
}
httpResponse.setHeader("Cache-Control", "no-cache");
/* String spath = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
spath = spath.toUpperCase();
if(spath.indexOf("/IMGS/") == 0 || spath.indexOf("/SCRIPTS/") == 0 || spath.indexOf("/CSS/") == 0 || spath.indexOf("/LAYOUTS/") == 0)
{
chain.doFilter(request, response);
return;
}
*/

//系统初始化
if(spath.indexOf("/SERVICES/ERRORPAGES/ERROR.HTM") == -1)
{
if (!SysEnv.init(httpRequest))
{
// TODO 添加系统初始化错误处理
PrintWriter wr = httpResponse.getWriter();
wr.write( "<script language='javascript'>alert('系统初始化失败,请检查。');window.top.location.replace( '" + httpRequest.getContextPath()+ "/services/errorpages/Error.htm' );</script>" );
wr.flush();
wr.close();
return;
}
}

//权限控制
// if(!PowerAdmin.PowerQuery(httpRequest, httpResponse))
// return;

chain.doFilter(request, response);
}
catch (ServletException sx)
{
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox)
{
filterConfig.getServletContext().log(iox.getMessage());
}
catch(Exception e)
{
Logger.getLogger().error(e.getMessage(), e);
}
catch(Error e)
{
Logger.getLogger().error(e.getMessage(), e);
}
}

public FilterConfig getFilterConfig()
{   
return this.filterConfig;


public void setFilterConfig(FilterConfig filterConfig)
{   
this.filterConfig = filterConfig;
}

public void init(FilterConfig filterConfig)throws ServletException
{   
this.filterConfig = filterConfig;
        this.encoding=filterConfig.getInitParameter("encoding");
}

public void destroy()

}
}

在该java文件中,需要实现三个方法,init(),doFilter(),以及destroy();其中,init()方法,在容器启动时便开始进行初始化。在web.xml 中,配置<url-pattern>/*</url-pattern> ,对所有的请求均通过该过滤器检查,如果 当前环境检测失败,提示系统初始化失败。
对servlet 中,filter 的配置,可以参考一下网页介绍,http://www.java2s.com/Tutorial/Java/0400__Servlet/0340__Filter.htm;
该网页提供了几个实例,可以小试一下。。。
0
0
分享到:
评论

相关推荐

    jdk10+ java.lang.NoClassDefFoundError: javax/xml/ws/Service 错误

    jdk升级之后出现异常:java.lang.NoClassDefFoundError: javax/xml/ws/Service ... &lt;groupId&gt;javax.xml.bind&lt;/groupId&gt; &lt;artifactId&gt;jaxb-api&lt;/artifactId&gt; &lt;version&gt;2.3.1&lt;/version&gt; &lt;/dependency&gt; .....

    web.xml文件中各个标签的介绍

    例如:&lt;filter&gt;&lt;filter-name&gt;CocoSystemAuthFilter&lt;/filter-name&gt;&lt;filter-class&gt;org.coco.sysmgr.web.filter.AuthFilter&lt;/filter-class&gt;&lt;/filter&gt; 6. 过滤器映射(Filter Mapping) filter-mapping 元素用于声明 ...

    J2EE中关于web.xml文件的配置

    1. `&lt;web-app&gt;`:web.xml 文件的根元素,用于描述 Web 应用的基本信息。 2. `&lt;display-name&gt;`:定义 Web 应用的名称。 3. `&lt;description&gt;`:声明 Web 应用的描述信息。 4. `&lt;context-param&gt;`:声明应用程序范围内的...

    pom.xml常用配置

    1. `&lt;project&gt;`:pom.xml文件的根元素,定义了整个项目的信息。 2. `&lt;modelVersion&gt;`:定义了pom.xml文件的版本号,当前版本号为4.0.0。 3. `&lt;groupId&gt;`:定义了项目的组ID,通常是项目的唯一标识符。 4. `...

    applicationContext.xml详解

    4. 使用&lt;list&gt;标签来配置Bean的集合属性,例如:&lt;list&gt; &lt;value&gt;com/alonely/vo/User.hbm.xml&lt;/value&gt; &lt;/list&gt; 在ApplicationContext.xml文件中,我们还可以使用以下几种方式来管理Bean之间的依赖关系: 1. 使用...

    DWR.xml配置文件说明书.txt

    1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    JSPservlet中web.xml详细配置指南(包含所有情况)

    1. `&lt;web-app&gt;`:定义了 Web 应用的根元素。 2. `&lt;icon&gt;`:定义了 Web 应用的图像文件。 3. `&lt;display-name&gt;`:定义了 Web 应用的名称。 4. `&lt;description&gt;`:定义了 Web 应用的描述信息。 5. `&lt;context-param&gt;`:...

    web.xml配置详解

    1. Web 应用名称:&lt;display-name&gt; 元素用于定义 Web 应用的名称,该名称将出现在服务器的管理控制台和 IDE 中。 2. Web 应用描述:&lt;description&gt; 元素用于声明 Web 应用的描述信息,该信息将出现在服务器的管理...

    Tomcat中web.xml文件的详细说明

    Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用。 1. 文件头部声明 web.xml 文件...

    基于JSP的办公自动化系统

    人性化设计&lt;br&gt;&lt;br&gt;软件产品介质:&lt;br&gt;1.oa.rar &lt;br&gt;2.oaclass.rar &lt;br&gt;3.oalib.rar&lt;br&gt;4.oadatabase.rar&lt;br&gt;4.Web版办公自动化OA系统使用手册.doc &lt;br&gt;5.web.xml server.xml &lt;br&gt;&lt;br&gt;需要者请联系:e_mail:fzlotuscn...

    XML入门与实例

    DOM &lt;br&gt; &lt;br&gt;· 第三章:XML的术语&lt;br&gt;· 导言 &lt;br&gt;· 一.XML文档的有关术语&lt;br&gt;· 二.DTD的有关术语&lt;br&gt;· 第四章:XML的语法&lt;br&gt;· 一.XML语法规则&lt;br&gt;· 二.元素的语法&lt;br&gt;· 三.注释的语法&lt;br&gt;· 四.CDATA的语法...

    xbean,xmlpublic,xml-apis等jar

    xbeanetc.rar 该压缩包包括如下jar包:&lt;br&gt;xbean.jar&lt;br&gt;xbean_xpath.jar&lt;br&gt;xerces.jar&lt;br&gt;xercesImpl.jar&lt;br&gt;xercesImpl-2.6.2.jar&lt;br&gt;xml-apis.jar&lt;br&gt;xml-apis1.jar&lt;br&gt;xml-apis-2.6.2.jar&lt;br&gt;xmlbeans-qname.jar...

    基于JSP新闻发布系统

    其它小型社区&lt;br&gt;&lt;br&gt;软件产品介质:&lt;br&gt;1.xwfb.rar &lt;br&gt;2.xwfbclass.rar &lt;br&gt;3.xwfblib.rar&lt;br&gt;4.Web版新闻发布管理系统使用手册.doc &lt;br&gt;5.web.xml server.xml &lt;br&gt;&lt;br&gt;需要者请联系:&lt;br&gt;&lt;br&gt;e_mail:fzlotuscn@...

    android P 9.0添加Ethernet功能(settings+framework).zip

    &lt;br&gt;res\xml\network_and_internet.xml res\drawable\ic_ethernet_cell.xml &lt;br&gt;res\values\strings.xml res\xml\ethernet_settings.xml &lt;br&gt;res\xml\ethernet_static_ip.xml &lt;br&gt;src\...

    xml实用教程

    9&lt;br&gt;1.1 什么是XML. 10&lt;br&gt;1.1.1 XML是元标记语言... 10&lt;br&gt;1.1.2 XML描述的是结构和语义,而不是格式化... 10&lt;br&gt;1.2 为什么开发人员对XML感到激动... 13&lt;br&gt;1.2.1 设计与特定领域有关的标记语言... 13&lt;br&gt;1.2.2 ...

    基于JSP的实验室教学管理系统

    &lt;br&gt;&lt;br&gt;本系统是WEB模式的实验室教学管理系统&lt;br&gt;运行环境:Tomact+JDK&lt;br&gt;编程模式:JSP+JavaBean+JavaServlet&lt;br&gt;后台数据库:MS-Access\MySql&lt;br&gt;&lt;br&gt;系统特点:&lt;br&gt;&lt;br&gt;1.基于免费环境开发 jdk+Tomcat+Ms-Access...

    XML轻松学习手册(chm)

    DOM &lt;br&gt;· 第三章:XML的术语&lt;br&gt;· 导言 &lt;br&gt;· 一.XML文档的有关术语&lt;br&gt;· 二.DTD的有关术语&lt;br&gt;· 第四章:XML的语法&lt;br&gt;· 一.XML语法规则&lt;br&gt;· 二.元素的语法&lt;br&gt;· 三.注释的语法&lt;br&gt;· 四.CDATA的语法&lt;br&gt;...

    基于JSP的在线考试系统

    人性化设计&lt;br&gt;&lt;br&gt;&lt;br&gt;软件产品介质:&lt;br&gt;1.zxks.rar &lt;br&gt;2.zxksclass.rar &lt;br&gt;3.zxkslib.rar&lt;br&gt;4.Web版在线考试管理系统使用手册.doc &lt;br&gt;5.web.xml server.xml &lt;br&gt;需要者请联系:&lt;br&gt;e_mail:fzlotuscn@yahoo....

    jsp航空订票系统

    人性化设计&lt;br&gt;&lt;br&gt;软件产品介质:&lt;br&gt;1.ticket.rar &lt;br&gt;2.ticketclass.rar &lt;br&gt;3.ticketlib.rar&lt;br&gt;4.Web版航空订票系统管理系统使用手册.doc &lt;br&gt;5.web.xml server.xml &lt;br&gt;&lt;br&gt;需要者请联系:&lt;br&gt;&lt;br&gt;e_mail:...

    Web.xml配置文件[文].pdf

    `&lt;web-app&gt;`元素是Web.xml配置文件的根元素,用于定义Web应用程序的所有配置信息。 2. `&lt;display-name&gt;`元素 `&lt;display-name&gt;`元素用于定义Web应用程序的名称,该名称将被IDE和GUI工具用来标记这个特定的Web应用。 ...

Global site tag (gtag.js) - Google Analytics