Servlet-过滤器
来源:互联网 发布:java的webservice 编辑:程序博客网 时间:2024/06/06 03:13
在Web应用开发中的过滤器截取从客户端进来的请求,并做出处理的答复
过滤器在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; }}
以上是实现了一个拦截过滤器只有登陆过后才能访问其他请求
阅读全文
0 0
- servlet 过滤器
- Servlet 过滤器
- servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet 过滤器
- HDU 2039 三角形
- Building+your+Deep+Neural+Network+-+Step+by+Step+v5 课程一第四周编程作业 1
- Android新特性介绍,ConstraintLayout完全解析(吕万友:转载)
- NMS非极大值抑制的原理与代码实现
- springmvc执行流程
- Servlet-过滤器
- python 中集成 mysql
- 【bzoj 2460】元素(线性基)
- 如何用消息系统避免分布式事务?
- iOS开发网络篇 一一 获取文件MIMEType的方式
- 使用tensorboard问题总结
- LeetCode 75. Sort Colors
- Go web开发初探
- 《利用Python进行数据分析》第7章 轴连接与数据转换