JavaWeb_day06_Filter过滤器

本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

转载请注明 出自 : luogg的博客园 谢谢配合!

day06

request 对象常用方法

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

response 对象常用方法

这里写图片描述

302 : 页面跳转

Servlet过滤器

1.统一整个webApp应用的编码方式
2.禁止浏览器缓存webApp动态资源
3.控制浏览器缓存静态资源
4.实现URL权限控制
5.过滤敏感内容

web-xml中设置 : url-pattern /* 过滤所有页面

chain.doFilter(request, response);//放行,过滤拦截

filter生命周期 :

启动服务器的时候创建并且初始化,
访问页面的时候调用doFilter方法,
关闭服务的时候生命结束.

filter对象只会创建一次,init方法只会执行一次,destroy方法也只会执行一次


filter 应用

一.设置页面字体,还有post表单提交的时候乱码.

1.创建filter,并且配置web-xml
2.将web-xml中设置为/*
在filter-class下边加入 : 因为一般总的控制页面编码格式是在web-xml修改的

<init-param>
   <param-name>encoding</param-name>
   <param-value>utf-8</param-value>
</init-param>
public class EncodingFilter implements Filter {
    private String encoding = "utf-8";

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    //4.在doFilter方法下边,设置页面编码格式还有post请求表单编码格式 
        request.setCharacterEncoding(encoding);//设置post表单中文乱码
        response.setContentType("text/html;charaset="+encoding);
        chain.doFilter(request, response);
    }

    public void init(FilterConfig fConfig) throws ServletException {
//3.在Filter页面定义一个`private String encoding = "utf-8";`  
//在Filter页面,init方法下边 :   调用xml中设置的encoding
        String en = fConfig.getInitParameter(encoding);
        if(en != null && !"".equals(encoding)){
            encoding = en;
        }
    }
}

最后在用户登录界面,用户名输入中文,在控制台测试就好了.


二.用户登录校验,不让用户直接登录到主页

清理缓存之后,第一次只可以进去index.html输入用户名密码界面,当输入正确密码之后,进入
主页,但是在此直接输入主页地址,还是可以直接进来,是因为session还存在,可以获取到session name.

public class UrlFilter implements Filter {
    /**
     * 用户登录校验,排除登录页面和校验页面
     */
    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse rep = (HttpServletResponse) response;
        String uri = req.getRequestURI();
        System.out.println(uri);
        HttpSession session = req.getSession();
        Object obj = session.getAttribute("name");
        if (uri.endsWith("index.html") || uri.endsWith("CheckUser")) {//uri以xxx结尾
            chain.doFilter(request, response);
        } else {
            if (obj == null) {
                rep.sendRedirect("/wx_web_day02/index.html");
            } else {
                chain.doFilter(request, response);
            }
        }
    }

    public void init(FilterConfig fConfig) throws ServletException {
    }
}

response.sendRedirect("BSessionTest");//重定向使用了两次过滤器
request.getRequestDispatcher("BSessionTest").forward(request, response);//内部转发使用了一次过滤器

三.过滤掉敏感词功能
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        String s = request.getParameter("userName");
        if(s.indexOf('猪')!=-1){
            s = s.replace('猪', '*');
            request.setAttribute("userName", s);
            System.out.println(s);
        }
        
        chain.doFilter(request, response);
    }

转载于:https://www.cnblogs.com/luogg/p/6017566.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值