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

**转载请注明 出自 : 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);
}

JavaWeb_day06_Filter过滤器的更多相关文章

  1. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  2. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  3. ASP.NET Web API 过滤器创建、执行过程(一)

    ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...

  4. ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...

  5. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

    系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecu ...

  7. Hawk 4.2 过滤器

    过滤器可以在流中,过滤掉不符合条件的文档.当然也可勾选反向,此时只会留下不符合条件的文档. 空对象过滤器 最为常用,需要列名,可以过滤掉所有内容为Null,或字符串全部都是空字符的情况 数值范围过滤 ...

  8. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  9. 自定义jinja2 过滤器

    今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当 ...

随机推荐

  1. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  2. 强强联合,Testin云测&云层天咨众测学院开课了!

    Testin&云层天咨众测学院开课了! 共享经济时代,测试如何赶上大潮,利用碎片时间给女票或者自己赚点化妆品钱?   2016年12月13日,Testin联手云层天咨带领大家一起推开众测的大门 ...

  3. TYPESDK手游聚合SDK服务端设计思路与架构之二:服务端设计

    在前一篇文中,我们对一个聚合SDK服务端所需要实现的功能作了简单的分析.通过两个主要场景的功能流程图,我们可以看到,作为多款游戏要适配多个渠道的统一请求转发中心,TYPESDK服务端主要需要实现的功能 ...

  4. css中line-height行高的深入学习

    之前对css中行高line-height的理解还是有些肤浅,深入后才发觉里面包罗万象.学习行高line-height,首先从基本原理开始 (标注该文章转载 http://www.cnblogs.com ...

  5. VMware安装CentOS

    centos镜像地址:https://www.centos.org/download/ VMware版本:12.5.2 build-4638234 创建新的虚拟机 直接默认下一步 稍后安装操作系统-& ...

  6. 换个角度看微信小程序[推荐]

    去年参加几次技术沙龙时,我注意到一个有意思的现象:与之前大家统一接受的换名片不同,有些人并不愿意被添加微信好友--"不好意思,不熟的人不加微信". 这个现象之所以有意思,是因为名片 ...

  7. ucos实时操作系统学习笔记——任务间通信(信号量)

    ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代 ...

  8. SSH免密码登录

    每次用SSH登录服务器都要输入密码,次数多了就觉得有些麻烦,反正是自己个人用的电脑,安全应该有保障,如何能直接登录上去而不需要输入密码呢?其实一句话就讲清楚了:把自己公钥放在服务器上. Linux客户 ...

  9. 高性能Javascript--高效的数据访问

    接上一篇,希望能写一个高性能Javascript专题. 第一篇:高性能Javascript--脚本的无阻塞加载策略. 参考摘录<高性能Javascript>. 经典计算机科学的一个问题是, ...

  10. ABP(现代ASP.NET样板开发框架)系列之15、ABP应用层——应用服务(Application services)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之15.ABP应用层——应用服务(Application services) ABP是“ASP.NET Boiler ...