在最近接触的一个项目中,涉及到对系统初始化的检测。在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;
该网页提供了几个实例,可以小试一下。。。
分享到:
相关推荐
jdk升级之后出现异常:java.lang.NoClassDefFoundError: javax/xml/ws/Service ... <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> .....
例如:<filter><filter-name>CocoSystemAuthFilter</filter-name><filter-class>org.coco.sysmgr.web.filter.AuthFilter</filter-class></filter> 6. 过滤器映射(Filter Mapping) filter-mapping 元素用于声明 ...
1. `<web-app>`:web.xml 文件的根元素,用于描述 Web 应用的基本信息。 2. `<display-name>`:定义 Web 应用的名称。 3. `<description>`:声明 Web 应用的描述信息。 4. `<context-param>`:声明应用程序范围内的...
1. `<project>`:pom.xml文件的根元素,定义了整个项目的信息。 2. `<modelVersion>`:定义了pom.xml文件的版本号,当前版本号为4.0.0。 3. `<groupId>`:定义了项目的组ID,通常是项目的唯一标识符。 4. `...
4. 使用<list>标签来配置Bean的集合属性,例如:<list> <value>com/alonely/vo/User.hbm.xml</value> </list> 在ApplicationContext.xml文件中,我们还可以使用以下几种方式来管理Bean之间的依赖关系: 1. 使用...
1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...
1. `<web-app>`:定义了 Web 应用的根元素。 2. `<icon>`:定义了 Web 应用的图像文件。 3. `<display-name>`:定义了 Web 应用的名称。 4. `<description>`:定义了 Web 应用的描述信息。 5. `<context-param>`:...
1. Web 应用名称:<display-name> 元素用于定义 Web 应用的名称,该名称将出现在服务器的管理控制台和 IDE 中。 2. Web 应用描述:<description> 元素用于声明 Web 应用的描述信息,该信息将出现在服务器的管理...
Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用。 1. 文件头部声明 web.xml 文件...
人性化设计<br><br>软件产品介质:<br>1.oa.rar <br>2.oaclass.rar <br>3.oalib.rar<br>4.oadatabase.rar<br>4.Web版办公自动化OA系统使用手册.doc <br>5.web.xml server.xml <br><br>需要者请联系:e_mail:fzlotuscn...
DOM <br> <br>· 第三章:XML的术语<br>· 导言 <br>· 一.XML文档的有关术语<br>· 二.DTD的有关术语<br>· 第四章:XML的语法<br>· 一.XML语法规则<br>· 二.元素的语法<br>· 三.注释的语法<br>· 四.CDATA的语法...
xbeanetc.rar 该压缩包包括如下jar包:<br>xbean.jar<br>xbean_xpath.jar<br>xerces.jar<br>xercesImpl.jar<br>xercesImpl-2.6.2.jar<br>xml-apis.jar<br>xml-apis1.jar<br>xml-apis-2.6.2.jar<br>xmlbeans-qname.jar...
其它小型社区<br><br>软件产品介质:<br>1.xwfb.rar <br>2.xwfbclass.rar <br>3.xwfblib.rar<br>4.Web版新闻发布管理系统使用手册.doc <br>5.web.xml server.xml <br><br>需要者请联系:<br><br>e_mail:fzlotuscn@...
<br>res\xml\network_and_internet.xml res\drawable\ic_ethernet_cell.xml <br>res\values\strings.xml res\xml\ethernet_settings.xml <br>res\xml\ethernet_static_ip.xml <br>src\...
9<br>1.1 什么是XML. 10<br>1.1.1 XML是元标记语言... 10<br>1.1.2 XML描述的是结构和语义,而不是格式化... 10<br>1.2 为什么开发人员对XML感到激动... 13<br>1.2.1 设计与特定领域有关的标记语言... 13<br>1.2.2 ...
<br><br>本系统是WEB模式的实验室教学管理系统<br>运行环境:Tomact+JDK<br>编程模式:JSP+JavaBean+JavaServlet<br>后台数据库:MS-Access\MySql<br><br>系统特点:<br><br>1.基于免费环境开发 jdk+Tomcat+Ms-Access...
DOM <br>· 第三章:XML的术语<br>· 导言 <br>· 一.XML文档的有关术语<br>· 二.DTD的有关术语<br>· 第四章:XML的语法<br>· 一.XML语法规则<br>· 二.元素的语法<br>· 三.注释的语法<br>· 四.CDATA的语法<br>...
人性化设计<br><br><br>软件产品介质:<br>1.zxks.rar <br>2.zxksclass.rar <br>3.zxkslib.rar<br>4.Web版在线考试管理系统使用手册.doc <br>5.web.xml server.xml <br>需要者请联系:<br>e_mail:fzlotuscn@yahoo....
人性化设计<br><br>软件产品介质:<br>1.ticket.rar <br>2.ticketclass.rar <br>3.ticketlib.rar<br>4.Web版航空订票系统管理系统使用手册.doc <br>5.web.xml server.xml <br><br>需要者请联系:<br><br>e_mail:...
`<web-app>`元素是Web.xml配置文件的根元素,用于定义Web应用程序的所有配置信息。 2. `<display-name>`元素 `<display-name>`元素用于定义Web应用程序的名称,该名称将被IDE和GUI工具用来标记这个特定的Web应用。 ...