1.
Java Web的三大组件( 1)都需要交给web服务器运行 2)在web.xml文件中配置 )
1. Servlet: javax.servlet.Servlet 通过HTTP协议接收客户端的请求,并且做出响应的一个Java应用程序。
2. Filter过滤器:javax.servlet.Filter 是一个接口,过滤请求,实现请求的拦截或者放行,并且添加新的功能。
3. Listener 监听器: javax.servlet.XxxListener,用来监听Web容器中各种域的事件
2.1
1、场景1: 用户表单提交参数,使用POST方法提交,编写Servlet,接收参数: request.getParameter() /getParameterValues() 如果在客户端提交汉字而不做任何处理,就出现中文乱码的问题。
解决编码问题: request.setCharacterEncoding("utf-8");
Ø问题:如果在项目中的每一个Servlet都加上request.setCharacterEncoding("utf-8");
代码重复,而且后期维护也不方便。能不能把这部分公共代码抽取处理,放在一个地方执行?
2、场景2: 登录 -> 输入信息 -> 登录成功 -> 看到用户主页(欢迎xxx回来。。。)
用于验证用户是否登录成功代码:
HttpSession session = request.getSession()
Object obj = session.getAttribute("loginInfo");
if(obj==null){
//没有登录标记,代表没有登录
}else{
///已经登录了,继续访问此功能
}
如果用户不登录,直接访问用户主页,跳转到登录页面
在其他需要登录才能访问的页面中,同样也需要加上验证用户是否登录成功代码。
Ø问题: 能不能把这部分公共验证用户是否登录成功代码抽取处理,在一个地方执行?
3. 结论:
以上两种场景出现的问题,可以使用过滤器(Filter)解决!
2.2 过滤器的作用:
1. 作用:
通过Filter技术,对Web服务器管理的所有Web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,并且添加功能,从而实现一些“共同”的功能。
2. 例如:
1) 实现URL级别的权限访问控制
2) 过滤敏感词汇
3) 自动登录
4) 压缩响应信息等一些功能。
2.3 过滤器编写步骤:
特点:过滤器不是用户主动调用的,而是根据规则自己执行
1. 编写一个java类,实现Filter接口,并实现其中的所有方法
2. 在web.xml文件中配置Filter
<filter>
<filter-name>HelloFilter</filter-name>
<filter-class>org.newboy.filter.HelloFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HelloFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 把Filter部署到tomcat服务器运行
4. 示例:
创建一个过滤器HelloFilter,在运行HelloServlet前和后分别输出一句话,在HelloServlet中也输出一句话,观察控制台的运行效果。
1) 过滤器类:
网友评论