javaWeb三大核心技术笔记
2019-07-14 20:28
253 查看
Servlet
1) 客户端发送请求至服务器端; 2) 服务器将请求信息发送至 Servlet; 3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求; 4) 服务器将响应返回给客户端。 在 Web 应用程序中,一个 Servlet 在一个时刻可能被多个用户同时访问。这时 Web 容器将为每个用户创建一个线程来执行 Servlet。如果 Servlet 不涉及共享资源的问题,不必关心多线程问题。但如果 Servlet 需要共享资源,需要保证 Servlet 是线程安全的。 最新版本3.1,为了简化开发流程,Servlet 3.0 引入了注解(annotation),这使得 web 部署描述符 web.xml 不再是必须的选择。
Filter
Filter实现了javax.servlet.Filter接口,因此一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行。
在启动服务器时加载。随你的web应用启动而启动的,只初始化一次,只有当你的web应用停止或重新部署的时候才销毁。
不像Servlet,它不能产生请求或者响应,它只是修改 对某一资源的请求,或者修改对某一资源的响应。或者成为请求的预处理,响应的后处理
Listenner
输入url,先经过过滤器,然后是servlet。
Servlet,Filter都是针对url之类的,而Listener是针对对象的操作的
Listenner 也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。
web.xml 的加载顺序是:context-param -> listener -> filter -> servlet
下面是一个日志过滤器的实现
public class LogFilter implements Filter { //FilterConfig可用于访问Filter的配置信息 private FilterConfig config; //实现初始化方法 public void init(FilterConfig config) { this.config = config; } //实现销毁方法 public void destroy() { this.config = null; } //执行过滤的核心方法 public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException,ServletException { //---------下面代码用于对用户请求执行预处理--------- //获取ServletContext对象,用于记录日志 ServletContext context = this.config.getServletContext(); long before = System.currentTimeMillis(); System.out.println("开始过滤..."); //将请求转换成HttpServletRequest请求 HttpServletRequest hrequest = (HttpServletRequest)request; //记录日志 context.log("Filter已经截获到用户的请求地址: " + hrequest.getServletPath()); //Filter只是链式处理,请求依然放行到目的地址 chain.doFilter(request, response); //---------下面代码用于对服务器响应执行后处理--------- long after = System.currentTimeMillis(); //记录日志 context.log("过滤结束"); //再次记录日志 context.log("请求被定位到" + hrequest.getRequestURI() + "所花的时间为: " + (after - before)); } }
相关文章推荐
- Java核心技术 卷一 笔记十一 构造器的小探究
- 《Html5,基础知识、核心技术与前沿案例》阅读笔记- 待续
- 蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
- Java2核心技术学习笔记 分类: java 2009-11-29 23:54 339人阅读 评论(0) 收藏
- google的三大核心技术MapReduce/GFS/BigTable
- 谷歌三大核心技术(二)Google MapReduce中文版
- java学习笔记 第二篇 核心技术(二)
- Java核心技术笔记-第5章
- 谷歌三大核心技术(二)Google MapReduce中文版
- 大型网站技术架构:核心原理与案例分析阅读笔记三
- 谷歌三大核心技术(三)Google BigTable中文版
- 《JAVA 核心技术 基础知识》 内部类 笔记
- [笔记] 大型网站技术架构——核心原理与案例分析 [九]
- Java核心技术(第8版)学习笔记_Java程序设计环境
- JSF笔记 – JSF中的三大核心组件 UI标签的详细介绍和使用举例
- 《Java 核心技术 卷2》学习笔记
- Java核心技术笔记——Java的输入输出(2014.04.16~17day36、37)
- 《java多线程编程核心技术》核心笔记(一)
- 谷歌三大核心技术(一)Google File System中文版
- 大型网站技术架构:核心原理与案例分析阅读笔记之六