java web学习笔记(3) Servlet技术

1.Servlet是javaWeb应用中最核心组件,由Servlet容器创建。Servlet规范为javaweb应用制定了对象模型,在模型中Servlet是对象,容器为其提供的十八般武器也都是Java对象。
2.Servlet重要对象:请求对象ServletRequest(HttpServletRequest)、响应对象ServlertResponse(HttpSevletResponse)、配置对象ServletConfig、上下文对象ServletContext
3.Servlet核心接口 javax.servlet.Servlet,所有Servlet类都必须实现该接口
4.协议无关通用实现:GernericServlet抽象类,Servlet API提供与任何网络应用层协议无关抽象类,各种协议相关类均扩展该类,例如:HttpServlet类。
5.ServletContext(上下文对象):Servlet与Servlet容器之间通信的接口,是web应用的总管家。
ServletContext作用:用于在web应用整个范围内存取共享数据、访问当前应用资源、通过getContext(String uri)方法访问容器内其他应用、访问web容器信息、访问服务端文件系统资源、输出日志。
6.javaweb应用的生命周期:javaweb应用生命周期由Servlet容器控制,包括:启动阶段(加载应用数据,创建ServletContext、Filter和初始化一些需要立即创建的Servlet)、运行时阶段(为客户提供服务)、终止阶段(释放资源)。
7.Servlet的生命周期:Servlet生命周期由Servlet容器控制,包括:初始化、运行时阶段、销毁三阶段。Servlet初始化有两大时机:客户端首次请求访问某个Servlet时,容器会创建该实例,绝大部分Servlet都是在这种情况初始化;Web应用启动时立即创建,即 load-on-startup Servlet。
8.ServletContext对象与JavaWeb应用有同样的生命周期,用于存放Web应用范围内的共享数据。代表共享数据的对象与ServletContext对象关联后,该对象依附于ServletContext对象生命周期,可以通过ServletContext对象访问。
9.ServletContex应用:统计Web应用发布后的访问次数,将计数器存放在Web应用范围(通过setAttribute(“name”,Object)方法与ServletContext关联)客户每次访问应用计数器加1。并实现ServletContextListenter接口(用于监听ServletContext生命周期),监听应用关闭后将计数器数据存取到文件或数据中,每次重新启动先从文件或数据库读取计数器初始值。
10.Servlet输入/输出:Servlet向客户端发送“application/force-download”MIME类型数据时,浏览器会弹出下载提示(以下载方式处理响应正文)。客户端向服务器发送“multipart/form-data"MIME类型数据时,可以利用Apache开源软件组织提供的fileupload软件包实现。

11.cookie运行机制是由HTTP协议规定,Serlvet无需和cookie数据打交道,cookie由Servlet容器进行处理。服务器通过ServletResponse对象的addCookie方法向浏览器写入cookie,可以通过setMaxAge(int x)方法来设置Cookie有效期,参数大于零指示浏览器将客户端硬盘保存cookie,参数等于0指示浏览器删除cookie,小于零,cookie仅仅存在于当前浏览器,当浏览器关闭cookie同时消亡。

12.Web应用通过RequestDispatcher接口(请求分发器)的请求转发和包含功能实现Servlet组件之间的协作。请求转发(forward)与包含(include)方法进行组件交互,交互之前需要通过ServletContext对象的getRequestDispatcher(String 绝对路径)或ServletRequest对象的getRequestDispatcher(String 绝对路径或相对路径)方法获得请求分发器对象。源组件与目标组件共用ServletRequest和ServletResponse对象,不同之处是请求转发源组件响应内容不会发送到客户端,仅目标组件响应结果发送到客户端;而包含源组件和目标组件响应内容均发送到客户端。

13.重定向(senRediret):重定向由HTTP协议规定,运作流程:用户在浏览器输入url访问特定组件、服务器组件返回302状态码的响应结果(包含另一个组件的url)、浏览器收到响应结果立即自动请求访问另一个组件、客户端收到另一个组件的响应结果。重定向不共享请求范围内的数据。

14.多个客户端同时服务器同一服务造成的并发问题处理:(1)根据实际情况合理决定Servlet中变量的作用域;(2)使用java同步机制使操纵数据的代码块成为同步代码块,确保任一时刻只有一个工作线程执行操纵数据代码块。

 

你可能感兴趣的:(java,Web,servlet)