`
wzhiju
  • 浏览: 138990 次
  • 性别: 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; .....

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

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

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错 &lt;!-- oracle数据库驱动 --&gt...3.最后找到项目的pom.xml引入如下代码,右击项目名称,找到maven,找到update project更新下就ok了

    基于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:...

    VB编程资源大全(源码 网络)

    1,codenet5.ZIP &lt;br&gt;网络五子棋(84KB)&lt;br&gt;2,mailcheck.ZIP &lt;br&gt;邮件检查程序(8KB)&lt;br&gt;3,sendmail.ZIP &lt;br&gt;简单电子邮件发送程序(4KB)&lt;br&gt;4,whois.ZIP &lt;br&gt;Whois 示例程序(2KB)&lt;br&gt;5,mailsender_plus.ZIP &lt;br&gt;发送...

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

    系统帮助&lt;br&gt;&lt;br&gt;软件产品介质:&lt;br&gt;1.lab.rar &lt;br&gt;2.labclass.rar &lt;br&gt;3.lablib.rar&lt;br&gt;4.Web版实验室教学管理系统使用手册.doc &lt;br&gt;5.实验室教学管理系统分析和设计手册(论文).doc &lt;br&gt;6.web.xml server.xml &lt;br&gt;...

    mysql+连接池+JavaBean实现用户注册登陆系统

    * 编号 &lt;br&gt;PRODUCT_NAME VARCHAR(50) 名称&lt;br&gt;PRICE FLOAT 价格&lt;br&gt;DESCRIPTION VARCHAR(200) 描述&lt;br&gt;&lt;br&gt;我的Tomcat 安装目录是:D:\Tomcat5&lt;br&gt;&lt;br&gt;&lt;br&gt;连接池配置:&lt;br&gt; 请查看文件:WebRoot.xml 和 web.xml&lt;br...

    Tomcat配置群集负载均衡[2]

    &lt;br&gt;&lt;br&gt;系统环境&lt;br&gt;&lt;br&gt;操作系统 :WindowsXP &lt;br&gt;&lt;br&gt;Java运行环境 :JDK1.5&lt;br&gt;Tomcat服务器 :Tomcat5.5&lt;br&gt;Apache服务器 :Apache2.2&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;开始配置:&lt;br&gt;&lt;br&gt;1、我们先以普通的方式配置...

    spring+struts+hibernate+dwr+jstl做的实例

    完全由Spring接管DWR AJAX处理(不需要配置dwr.xml)等技术点&lt;br&gt;源码在/mytest/WEB-INF/src下&lt;br&gt;Winxp sp3+JDK1.6+Tomcat 6.0下运行通过&lt;br&gt;因文件长度限制,未加入相关类库,请自行加入,需要的类库有:&lt;br&gt;dom.jar...

    hbase集群配置

    -------hadoop配置--------- core-site.xml &lt;configuration&gt; &lt;property&gt; &lt;name&gt;fs.defaultFS&lt;/name&gt; &lt;value&gt;hdfs://slave-01:9000&lt;/value&gt; &lt;/property&gt; &lt;property&gt; &lt;name&gt;hadoop.tmp.dir&lt;/name&gt; &lt;value&gt;/root...

    java网络对战的国际象棋源码

    &lt;br&gt;&lt;br&gt;一、用ant编译源码(所有源文件及目录结构请下载)&lt;br&gt;&lt;br&gt;C:\cs&gt;ant compile&lt;br&gt;Buildfile: build.xml&lt;br&gt;&lt;br&gt;compile:&lt;br&gt;[mkdir] Created dir: C:\cs\build&lt;br&gt;[javac] Compiling 60 source files to C:\cs...

Global site tag (gtag.js) - Google Analytics