Web项目的保安——Filter(过滤器)
2016-01-26 20:11
543 查看
过滤器可以分割出符合要求的和不符合要求的,也可以加上对它们的相关操作,例如符合要求的就让它去1.jsp,不符合要求的就让它去找2.jsp。
使用过滤器:
①配置过滤器:<filter> <filter-name>过滤器名称</filter-name> <filter-class>实体类:包名+类名</filter-class> </filter> <filter-mapping> <filter-name>过滤器名称(注意与<filter的名称对应>)</filter-name> <url-pattern>要捕获的url</url-pattern> </filter-mapping>
②创建一个实体类实现Filter:
public class LoginFilter implements Filter { public void destroy() { // TODO Auto-generated method stub //销毁 } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub //捕获url后进行的操作 } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub //初始化参数 } }
注意实现Filter时,导入的包为:import javax.servlet.Filter;
实例:如果ServletPath为”login.do”,则就让用户访问index.jsp;如果不是,则就让用户访问login_defeat.jsp。Web项目结构:
具体代码:
①LofigFilter.java:package com.sict.service; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class LoginFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub arg0.setCharacterEncoding("UTF-8"); HttpServletRequest request = (HttpServletRequest) arg0; //ServletRequset为父类,所以可以被强制转换 if (!request.getServletPath().equals("/login.do")) { request.getRequestDispatcher("WEB-INF/views/login_defeat.jsp") .forward(request, arg1); } else { request.getRequestDispatcher("index.jsp").forward(request, arg1); } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
别忘了自己在web.xml中配置好过滤器。
明天我再补充一下登录等实例~~
今天差点让Filter和Servlet给弄乱了,不过也明白了Filter的工作机制,只要url发生改变都要经过Filter~~~逻辑很重要。
相关文章推荐
- qt的多语言
- 提交表单时用json的格式提交
- C++ Socket编程步骤
- 前端编程提高之旅(六)----backbone实现todoMVC
- Azure Reserved IP
- erlang驱动使用mysql-otp
- jsp页面提交中文到MySql数据库乱码
- Swift 基本知识点之一基本概念
- Visual C++ 2008 SP1 MFC (OFFICE界面)使用入门
- CWnd与HWND的区别与转换
- [算法]海量数据问题之一
- jsp链接mysql数据库
- 开源日志系统比较
- 07 八皇后问题
- 【React Native开发】React Native控件之TextInput组件讲解与QQ登录界面实现(11)
- C#Xml,json解析以及Socket传输问题
- 批量kill mysql线程和输出完整info mysql线程
- HDOJ 1025 Constructing Roads In JGShining's Kingdom (LIS nlogn)
- iOS崩溃堆栈符号化,定位问题分分钟搞定!
- 树莓派+DS18B20温度传感器+yeelink物联网云