Web项目配置字符过滤器
2018-03-05 09:31
260 查看
一、Dynamic Web Project项目,其web.xml中配置字符过滤器
1.直接使用Spring MVC 提供的实现类org.springframework.web.filter.CharacterEncodingFilter【spring-web-3.2.1.RELEASE.jar中】<filter><description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.自定义字符过滤器EncodingFilterpackage cn.sh.sstic.smet.comm.filter;
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;
public class EncodingFilter implements Filter {
private String charset = "UTF-8";
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding(this.charset);
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) {
this.charset = arg0.getInitParameter("charset");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}在web.xm中配置过滤器:<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>cn.sh.sstic.smet.comm.filter.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
二、自定义session过滤器【检查用户是否登录】
package cn.sh.sstic.smet.comm.filter; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; 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 org.apache.log4j.Logger; import cn.sh.sstic.tesc.model.TescUser; public class SessionFilter implements Filter { private Logger log = Logger.getLogger(SessionFilter.class); private String redirectURL = ""; private List<String> ignoreList = new ArrayList<String>(); public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; boolean ignore = false; // 检查当前请求是否是登录请求,或者是需要忽略的请求 String requestURI = request.getRequestURI(); if(requestURI.contains("login.do")) ignore = true; if(requestURI.contains("doLogin.do")) ignore = true; if(requestURI.contains("doGetPassword.do")) ignore = true; if(requestURI.contains("doRegist.do")) ignore = true; if(requestURI.contains("doRegister.do")) ignore = true; if(requestURI.contains("ajaxYZ.do")) ignore = true; if(requestURI.contains("ajaxYZ2.do")) ignore = true; if(requestURI.contains("ajaxProUndertake.do")) ignore = true; if (requestURI.contains(this.redirectURL)) { ignore = true; } else { for (String ignoreURI : ignoreList) { if (requestURI.endsWith(ignoreURI)) { ignore = true; break; } } } if (!ignore) { TescUser tescUser = (TescUser)request.getSession().getAttribute("USERINFO"); if (tescUser == null) { log.info("session会话超时,重定向登录页面"); response.sendRedirect(request.getContextPath() + this.redirectURL); // 重定向登录页面 return; } } chain.doFilter(req, res); } public void init(FilterConfig config) throws ServletException { this.redirectURL = config.getInitParameter("redirectURL"); Enumeration<String> e = config.getInitParameterNames(); while(e.hasMoreElements()) { String paramKey = e.nextElement(); if (paramKey.indexOf("ignoreURL") != -1) { String ignoreURL = config.getInitParameter(paramKey); this.ignoreList.add(ignoreURL); } } } }
二、过滤器介绍
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
javax.servlet.Filter【servlet-api-2.5.jar】,其源码如下:package javax.servlet;
import java.io.IOException;
public abstract interface Filter
{
public abstract void init(FilterConfig paramFilterConfig)
throws ServletException;
public abstract void doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain)
throws IOException, ServletException;
public abstract void destroy();
}
相关文章推荐
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
- web项目特殊字符限制 过滤器实例
- 配置web.xml中Filter的(字符)过滤器
- 字符过滤器+在web.xml中的配置
- javaWeb开发中的字符过滤器配置--->让你二步轻松告别乱码
- Web.xml配置----字符过滤器
- 错误信息nulljsp之初学过滤器二---web.xml配置错误
- Vue2+VueRouter2+webpack 构建项目实战(三)配置路由,整俩页面先
- vs打开项目出现“尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost:…… .要打开此项目,需要配置虚拟目录……”提示
- web项目中过滤器不对某些指定文件进行过滤
- IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
- web项目web.xml的配置中<context-param>配置作用
- 无法在Web服务器上启动调试。未将项目配置为进行调试
- 获取java web项目里面所有的properties文件并组装在一起,使用方便,配置简单
- 用本地局域网中的电脑做web服务器,dns配置,花生壳,XAMPP 虚拟主机配置,实现多域名访问本地项目
- eclipse 搭建web项目tomcat配置问题
- web 项目中 在spring中使用log4j 定时刷新log4j配置文件
- tomcat配置多个虚拟host,访问不同的web项目
- 转:无法在Web服务器上启动调试。未将项目配置为进行调试
- MyEclipse10+Flash Builder4+BlazeDS+Tomcat7配置J2EE Web项目报错(一)