Servlet-过滤器
2017-12-21 00:00
225 查看
在Web应用开发中的过滤器截取从客户端进来的请求,并做出处理的答复
过滤器可以部署多个组成一个过滤链,每个过滤器只执行某个特定的操作或者检查,这样请求在达到被访问的目标前,需要经过这个过滤链。如果安全的问题不能访问目标资源,那么过滤器可以把客户端的请求拦截。
LoginFilter
以上是实现了一个拦截过滤器只有登陆过后才能访问其他请求
过滤器在WEB应用开发中的常见应用
可以对客户提交的数据进行重新编码 可以从系统里获得配置的信息 可以过滤掉客户的屏蔽非法文字 可以验证客户是否已经登录
过滤器可以部署多个组成一个过滤链,每个过滤器只执行某个特定的操作或者检查,这样请求在达到被访问的目标前,需要经过这个过滤链。如果安全的问题不能访问目标资源,那么过滤器可以把客户端的请求拦截。
实现一个过滤器
1.所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 2.在web.xml中部署过滤器 3.init(FilterConfig)初始化方法,读取Web.xml文件中servlet过滤器的初始化参数 4.doFilter(ServletRequest,ServletResponse,FilterChain);--这个方法完成实际的过滤器操作。当客户请求访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter()方法,FilterChain参数用于访问后续过滤器 5.destroy()方法:Servlet容器在销毁过滤器实例前调用该方法,在这个方法中可以释放Servlet过滤器占用的资源
代码实现
web.xml<!-- 配置拦截过滤器 --> <filter> <filter-name>LoginFilter</filter-name> <filter-class>com.kaner.bbs.filter.LoginFilter</filter-class> <init-param> <param-name>noLoginPaths</param-name> <param-value>login.jsp;reg.jsp;imageServlet;regServlet;checkUsernameServlet</param-value> </init-param> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
LoginFilter
public class LoginFilter implements Filter{ private FilterConfig config; @Override public void destroy() { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; request.setCharacterEncoding("utf-8"); HttpServletResponse response = (HttpServletResponse) resp; response.setContentType("text/html;charset=utf-8"); HttpSession session = request.getSession(); String noLoginPaths = config.getInitParameter("noLoginPaths"); if (config != null) { String[] noLoginPathArray = noLoginPaths.split(";"); for (int i = 0; i < noLoginPathArray.length; i++) { String noLoginPath = noLoginPathArray[i]; if (noLoginPath==null && "".equals(noLoginPath)) { continue; }else{ chain.doFilter(request, response); return; } } } if (session.getAttribute("username") != null) { chain.doFilter(req, resp); }else{ response.sendRedirect("login.jsp"); } } @Override public void init(FilterConfig arg0) throws ServletException { config = arg0; } }
以上是实现了一个拦截过滤器只有登陆过后才能访问其他请求
相关文章推荐
- 使用java的过滤器filter备忘(HttpServletResponseWrapper)
- jsp servlet中的过滤器Filter配置总结
- Servlet过滤器与SpringMVC拦截器
- 显示JSP之前执行servlet(过滤器)
- Servlet程序开发-- 过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet Filter(过滤器)
- servlet3.0之过滤器(@WebFilter)
- Servlet初始配置 监听器和过滤器
- Servlet过滤器的概念
- Servlet过滤器的特性
- Servlet 2.3过滤器编程[转]
- Servlet过滤器(Filter)
- servlet最常用的过滤器总结
- 动手学servlet(六) 过滤器和监听器
- 使用servlet过滤器播放amr音频
- Servlet中的过滤器Filter详解
- java servlet过滤器介绍
- Servlet和JSP过滤器Filter