Servlet 过滤器

来源:互联网 发布:mac pdf 导出图片 编辑:程序博客网 时间:2024/05/27 09:44

Servlet 过滤器

作用:把某些信息过滤掉1、滤器可以做什么?    (1) 对请求进行统一编码---》乱码处理功能    (2) 对请求进行认证---》强制登录    (3)过滤非法字符---》非法字段2、实现方式    一、实现 Filter 接口

    案例1:过滤乱码//重写doFilter方法    @Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,        FilterChain arg2) throws IOException, ServletException {    HttpServletRequest request=(HttpServletRequest) arg0;//转为HttpServletRequest    HttpServletResponse response=(HttpServletResponse) arg1;//转为HttpServletResponse    request.setCharacterEncoding("utf-8");//请求编码    response.setCharacterEncoding("utf-8");//响应编码    response.setContentType("text/html;charset=utf-8");//设置响应编码类型    arg2.doFilter(request, response);//条件成立则放行}Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。二、配置web.xml<!-- 配置过滤器 --><filter>    <filter-name>q1</filter-name>    <filter-class>com.xdl.filter.FilterEncoding    </filter-class></filter><filter-mapping>    <filter-name>q1</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>三、案例2:过滤非法字符@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,        FilterChain arg2) throws IOException, ServletException {    HttpServletRequest request=(HttpServletRequest) arg0;    HttpServletResponse response=(HttpServletResponse) arg1;    String jl = request.getParameter("jl");//取 :简历中的内容//      if(jl!=null&&(jl.contains("小日本")||jl.contains("坏蛋"))){//          response.sendRedirect("filter.jsp");//      }else{//          arg2.doFilter(request, response);//放行//      }    PersonDaoImpl db=new PersonDaoImpl();//实例化数据库    List<String> findSpeak = db.findSpeak();//找出扎有表中speka字段的信息    boolean flag=false;    for(String ss:findSpeak){        if(jl.contains(ss)){//找到此信息,则为非法,然后就把flag设置为 true            flag=true;        }    }    if(jl!=null&&flag){        System.out.println("重点关注此人:"+request.getRemoteAddr());        response.sendRedirect("filter.jsp");    }else{        arg2.doFilter(request, response);//放行    }}web.xml配置<filter>    <filter-name>q2</filter-name>    <filter-class>com.xdl.filter.FilterSpeak</filter-class></filter><filter-mapping>    <filter-name>q2</filter-name>    <url-pattern>/SaveServlet</url-pattern></filter-mapping>

    四、案例3:强制登录    //@WebFilter("/ListServlet")也可以通过全注解方式实现过滤器,只过滤ListServlet 如果用/*则全过滤 ,此时web.xml不用配置    @Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,        FilterChain arg2) throws IOException, ServletException {    HttpServletRequest request=(HttpServletRequest) arg0;    HttpServletResponse response=(HttpServletResponse) arg1;    HttpSession session = request.getSession();    String username = (String) session.getAttribute("usename");    if(username==null){        response.sendRedirect(request.getContextPath()+"/index.jsp");//去登录    }else{    arg2.doFilter(request, response);//通过后,放行    }}

监听器

Servlet监听器也叫做 listener,通过它可以监听Web应用的上下文(环境)信息、Servlet请求信息、Servlet会话信息,并自动根据不同情况,在后台调用相  应的处理程序。通过监听器,可以自动激发一些操作public class Listener1 implements HttpSessionListener, ServletContextListener,    ServletRequestListener {        ......}//配置 web.xml;     <listener>    <listener-class>com.xdl.listener.Listener1</listener-class>    </listener>

Md5加密

一、作用:MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆,即安全性较高,目前情况下md5128位加密认为是不可解的123+12--》135    加密码  ,解密-->135-12>123 就是将来可能会到rsa加密码算法,分为 公有密钥和私有密钥二、开发实现    1、只需从百度找一个md5的文件即可:MD5Utils    2、开发注册功能    public void saveUser(User uu) {    String sql = "insert into stu values(stu_seq.nextval,?,?)";    // 把密码进行md5加密    executeUpdate(            sql,            new Object[] { uu.getName(), MD5Utils.MD5Src(uu.getPassword()) });}3、开发登录功能public boolean loginUser(User uu) {    String sql = "select * from stu where name=? and password=?";// 由用户和密码作条件    ResultSet rs = executeQuery(            sql,            new Object[] { uu.getName(), MD5Utils.MD5Src(uu.getPassword()) });    try {        if (rs.next()) { // 如果找到了            return true;        }    } catch (SQLException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    return false;}