程序开发体系
B/S 浏览器/服务器 开发维护成本低 客户端负载低 安全性低
C/S 客户端/服务器 成本高 客户端负载高 安全性高
javaweb简介
静态网页
HTML CSS,人浏览的数据是始终不变的,服务器保存的静态页面
动态网页
根据用户的请求生成动态页面,HTML CSS 数据库技术 一门高级语言(java C# Php),js,xml
动态网页脚本技术(Jsp/Asp.net/Php)
web服务器
指英特网上某种类型的计算机程序,可以向提出请求的浏览器提供文档的程序,服务器是一种被动程序,当浏览器发出请求时,服务器才会响应。
tomcat的目录结构
1 WEB-INF是java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录
2web.xml 项目部署文件,修改后建议重启tomcat
server.xml 修改tomcat的端口号
Tomcat的工作流程
Tomcat服务器的启动是基于一个server.xml文件的,Tomcat启动的时候首先会启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(连接器)",每一个连接器都在等待客户机的连接,当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector(连接器),Connector(连接器)是不处理用户的请求的,而是将用户的请求交给一个Engine(引擎)去处理,Engine(引擎)接收到请求后就会解析用户想要访问的Host,然后将请求交给相应的Host,Host收到请求后就会解析出用户想要访问这个Host下面的哪一个Web应用,一个web应用对应一个Context。
虚拟目录的映射
web应用程序开发好之后,若想让外界访问,需要将web应用所在的目录交给web服务器管理,过程叫做虚拟目录的映射。
方式一: tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录,JavaWeb应用直接copy到tomcat服务器webapps目录中
方式二:在tomcat服务器的\conf\Catalina\localhost目录下添加一个以xml作为扩展名的文件,xml文件的名字可以任意取
tomcat中配置虚拟主机
1修改conf文件夹下的server.xml
新建
2windows系统中注册域名
配置的主机(网站)要想通过域名被外部访问,必须在DNS服务器或windows系统中注册访问网站时使用的域名,找到"C:\Windows\System32\drivers\etc"目录下的hosts文件
javaweb应用
web应用打包部署
Cmd中
使用命令Jar -cvf test.war test
将test.war拷贝到webapps中,当tomcat启动后,会自动将war包解压
jsp基础语法
JSP的组成
静态内容、指令、表达式、小脚本、声明、注释
JSP的生命周期
用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文件转化成一个servlet,生成字节码文件,并执行jspinit()方法,然后再生成字节码文件,若不是第一次请求,则会直接访问生成字节码文件,解析执行,jspservice()方法就是处理用户请求的。
jspservice()方法处理客户端的请求,对于每一个请求,JSP引擎创建新的线程来处理,对于多个客户端,引擎会创建多个线程,提高并发量和响应时间。
脚本程序
脚本<%%>
表达式<%=%>
声明<!%%>
注释
表达式<%=%> 不以分号结尾
中文编码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Jsp的页面元素
JSP指令
page指令 通常位于JSP的顶端,同一个页面可以有多个page指令
include指令 将一个外部的文件嵌入JSP中,同时解析这个JSP页面
taglib指令 使用标签库定义新的自定义标签,在JSP中启用定制行为
Page指令
Language 指定JSP页面使用的脚本语言
Import 引用脚本语言中使用到的类文件
ContentType 指定JSP页面所采用的的编码方式
JSP注释
Html注释 客户端可见
JSP注释 <%--html注释--%> 客户端不可见
JSP脚本注释 // 单行注释 /**/多行注释 客户端不可见
jsp的脚本声明表达式
Javabean
简介:符合某种特定规范的java类,可以解决代码的重复编写,减少代码的冗余,提高维护性
Javabean的出现,使JSP页面使用了javaBean封装了数据,或者调用javabean的业务逻辑代码,提升了程序的可维护性。
设计原则:公有类,无参的公有构造方法,属性是私有的,getter和setter方法
JSP的动作元素:为请求处理阶段提供信息,动作遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内容,与开始便签匹配的结束标签。
JSP动作
简介:符合某种特定规范的java类,可以解决代码的重复编写,减少代码的冗余,提高维护性
设计原则:公有类,无参的公有构造方法,属性是私有的,getter和setter方法
JSP的动作元素:为请求处理阶段提供信息,动作遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内容,与开始便签匹配的结束标签。
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。
id属性
id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
scope属性
该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。
调用javaBean
jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。
jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。
include指令和动作的区别
forward动作
JSP的内置对象
JSP以java为脚本语言,为了简化开发,提供了内置对象。
JSP的内置对象是WEB容器创建的一组对象,不使用new关键就可以使用的内置对象
常用内置对象 九大内置对象 out.request.response.session.application
Page.pageContext.exception.config
缓冲区 buffer 保存临时数据
Void println() 打印字符串
Void clear() 清除缓冲区的内容,在flush之后调用会抛出异常。
Void flush() 将缓冲区的内容输出到客户端
Int getBufferSize() 返回缓冲区以字节的大小,如不设缓冲区则为0
Int getremaining() 返回缓冲区还剩余多少可用
Boolean isAutoFlush() 返回缓冲区满时,是自动清空还是,抛出异常
Void close() 关闭输出流
request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应,它是HttpServlteRequest类的实例。Request对象具有请求域,即完成客户端的请求之前,该对象一直存在。
Getparameter(String name) 返回name指定参数的参数值
GetparameterValues(String name) 返回包含参数name所有值的数组
request.setCharacterEncoding("utf-8") 解决中文乱码问题
使用URL传参数
Request.setCharacterEncoding(“utf-8”)//解决中文乱码问题,无法解决URL传递中文出现的乱码问题,在server.xml中
response对象
Response对象包含了响应客户请求的有关信息,但在JSP中很少引用到它。它是HttpServletResponse类的实例,该对象具有页面作用域,当访问一个页面时,页面内的response对象只对本次访问有效,其他页面的response对象对当前页面无效。
String setCharacterEncoding() 返回响应用的是何种字符编码
Void setContentType(String type) 设置响应的MIME类型
PrintSwrite setWrite()返回可以向客户端输出字符的一个对象(注意比较:PriteWrite与内置out对象的区别) 导入java.io.*
SendRedirect(java.lang.String location) 重新定向客户端的请求
请求转发和请求重定向
请求重定向:客户端行为,response.sendRedirect(),本质上讲等于两次请求,前一次的请求对象不会保存,地址的URL地址会改变,链接相当于请求重定向
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp),是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变,请求会更快
输出缓冲区
服务器输出到客户端的内容不会直接写到客户端,而是写到输出缓冲区。
缓冲区被定义为暂时放置输入或者输出资料的内存。
三个条件下,缓冲区的内容会写到客户端:
1JSP页面的输出信息已经全部写入到了缓冲区
2缓冲区已满
3在JSP页面中,调用了response对象的flushBuffer()方法或out对象的flush()方法
Response.setBufferSize(32) 设置缓存区的大小
out对象
out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
用来输出boolean,char,int,double,String,object等类型数据的重要方法
session对象
Session对象在第一个JSP页面被装载时,完成会话期管理
Session表示客户端和服务器的一次会话,从打开浏览器连接到服务器开始,到关闭浏览器离开服务器结束,被称为一个会话。
Session是一个特定的时间概念,指客户在浏览网站时,进入网站到浏览器关闭所经过的这段时间,session保存在服务器的内存中,和用户一一对应。
Session对象是HttpSession类的实例。
Long GetCreateTime() 返回Session创建时间
Public String getID() 返回session创建时JSP引擎为它设置的唯一ID号
Public Object setAttribute(String name,Object value)使用指定名称将对象绑到此会话
Public Object getAttribute(String name)返回与此会话中指定名称定在一起的对象,如果没有对象绑定在该名称下,则null。
String[] getValueNames()返回包含此Session种所有可用属性的数组。
Int getMaxInactiveInterval() 返回两次请求间隔多长时间此Session被取消(单位秒)
session的生命周期
创建:客户端第一次访问某个JSP或者servlet时候,服务器会为当前会话创建一个SessionID,每次客户端向服务器发送请求的时,都会将sessionID携带过去,服务端Sessionid进行校验。
活动:某会话中通过超级链接打开的新页面属于同一会话,当前会话还没有全部关闭,重新打开浏览器访问同一项目资源属于同一次会话,除非本次会话的所有页面都关闭后再次重新访问某个JSP或者servlet将会创建新的会话。
原有会话还存在,只是这个旧的SessionID仍存在服务端,再也没有客户端携带它然后交于服务器校验。
Session销毁
三种方式,session.invalidate()方法;Session过期(超时);服务器重新启动
Session对象超时
Tomcat默认session超时时间为30分钟
Session超时两种方式
Session.setMaxInactiveInterval(时间秒);
//单位是分钟
application对象
Application对象实现了用户间数据的共享,可存放全局变量,保存应用程序中的公有数据
Application开始于服务器的启动,终止于服务器的关闭
在用户的前后连接或者是不同用户连接中,可以对application对象同一属性进行操作
在任何地方对application对象属性的操作,都影响到其他用户对此的操作
服务器的开启和关闭决定了application对象的生命
Application对象是servletContext类的实例
指定名称和对象在application中关联
Public void setAttribute(String name,Object value)指定使用名称将对象绑定到此会话
Public Object getAttribute(Sring name)返回和名称绑定的对象,若没有对象,返回null
Enumeration getAttributeNames()返回所有可用属性名的枚举
String setServerInfo()返回JSP(SERVLET)引擎名及版本号
访问应用程序初始化参数
初始化参数在
<content-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/db_datebase</param-value>
<content-param>
使用application.getinitParameter(“url”);访问参数的值
Page对象
Page对象就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例,page的方法就是Object的方法
Page.toString 当前Page页面的字符串描述
pageContext对象和config对象
Pageconfig对象
Pagecontext对象提供了对JSP页面所有的对象及名字空间的访问
Pagecontext对象可以访问到本页所在的session,也可以取本页的所在的application某一属性值
PageContext对象相当于页面中所有功能的集大成者
PageContext对象的本类名也叫pageContext
HttpSession setSession() 返回当前页面中的HttpSession对象(session)
Void forword(String relativeUrlPath) 使当前页面重导到另一页面
Void include(String relativeUrlPath) 在当前位置包含另一文件
Config对象
Config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数和服务器有信息,再讲servlet的时候详细说明。
ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象对象
String getInitParameter(String name) 返回初始化参数的值
Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举
exception对象
Exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就是产生这个对象,如果一个JSP页面要引用这个对象,就必须在page指令中把isErrorPate设置为true,否则无法编译,它实际上是一个java.lang.Throwable的对象,常用方法如下:
String getMessage() 返回描述异常的消息
String toString() 返回关于异常简短描述消息
JSP请求和相应
HTTP头信息
当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的。
HttpServletRequest类
request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个页面时,JSP引擎就会产生一个新的对象来代表这个请求。
HttpServletResponse类
Response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。
response 对象是 javax.servlet.http.HttpServletResponse 类的一个实例。就像服务器会创建request对象一样,它也会创建一个客户端响应。
设置HTTP响应头的方法,这些方法由HttpServletResponse 类提供:
Http状态码
下表列出了可能会从服务器返回的HTTP状态码和与之关联的消息
设置状态码
HttpServletResponse 类中用来设置状态码的方法:
表单处理
Get:以明文的方式提交数据,数据在URL中可以看到,最多不能超过2K,安全性低效率高,比如搜索查询。
Post:将用户的信息封装到HTML HEADER中,适合提交数据量大,安全性高的用户信息,如注册修改上传
JSP 读取表单数据
getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。
getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型
getParameterNames():该方法可以取得所有变量的名称,该方法返回一个Emumeration。
getInputStream():调用此方法来读取来自客户端的二进制数据流。
可读取URl和表单数据(get和post)
<%= request.getParameter("name")%>
<%= request.getParameter("url")%>
注意:
<%// 解决中文乱码的问题String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
%>
读取所有表单参数
HttpServletRequest 的 getParameterNames() 来读取所有表单参数,该方法可以取得所有变量的名称,该方法返回一个枚举。
获取
<%
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.print("" + paramName + "\n");
String paramValue = request.getParameter(paramName);
out.println(" " + paramValue + "\n");
}
%>
请求
菜鸟教程
淘宝
JSP状态管理
http的无状态性,服务器不会记得发送请求的浏览器是哪一个
保存用户状态的两大机制:session和cookie
Cookie:是web服务器保存在客户端的一系列文本信息
作用:对特定对象的追踪,保存用户浏览记录和习惯,简化登录,容易泄露安全信息
Cookie
Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。
方法:
使用:
创建Cookie对象,名称和值不能包含[ ] ( ) = , " / ? @ : ;
Cookie newCookie = new Cookie(String key,Object values);
设置有效值,调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。
cookie.setMaxAge(606024);
写入Cookie对象,将cookie发送至HTTP响应头中
Response.addCookie(newCookie);
读取Cookie对象
Cookie[] cookie= request.getCookie();
JSP Cookie 处理需要对中文进行编码与解码,方法如下:
String str = java.net.URLEncoder.encode("中文","UTF-8"); //编码
String str = java.net.URLDecoder.decode("编码后的字符串","UTF-8");// 解码
例子:
使用Cookie保存用户信息
<%
request.setCharacterEncoding("utf-8");
//首先判断用户是否选择了记住登录状态
String[] isUserCookies = request.getParameterValues("isUserCookie");
if (isUserCookies != null && isUserCookies.length > 0) {
//把用户名和密码保存在Cookie对象里
String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
//解决无法在Cookie中保存中文字符串的问题(添加java.net.*包)
String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
Cookie usernameCookie = new Cookie("username", username);
Cookie passwordCookie = new Cookie("password", password);
usernameCookie.setMaxAge(864000);
passwordCookie.setMaxAge(864000);//设置最大的生存期间为10天
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
} else {
Cookie[] cookie = request.getCookies();
if (cookie != null && cookie.length > 0) {
for (Cookie c : cookie) {
if (c.getName().equals("username") || (c.getName().equals("password"))) {
c.setMaxAge(0);//设置保存Cookie失效
response.addCookie(c);//重新保存
}
}
}
}
%>
提取Cookie中的用户信息
<%
request.setCharacterEncoding("utf-8");
String username="";
String password="";
Cookie[] cookie = request.getCookies();
if (cookie != null && cookie.length > 0) {
for (Cookie c : cookie) {
if (c.getName().equals("username")){
username = URLDecoder.decode(c.getValue(),"utf-8");
}
if (c.getName().equals("password")){
password = URLDecoder.decode(c.getValue(),"utf-8");
}
}
}
%>
Session
session和Cookie的区别
1相同点,都会保存用户状态,都会过期
2区别 session在服务端保存用户信息,Cookie在客户端保存用户信息;session保存的是Object类型,Cookie保存的是String类型;session随着会话的结束而将其数据销毁,Cookie可以长期的保存在客户端;session一般保存是重要的用户信息,Cookie保存不重要的用户信息。
Servlet
Servlet简介
Servlet是在web服务器上运行的java程序,一个servlet就是一个java类,并且可以通过请求-响应编程模式来访问这个驻留正在服务器里Servlet程序
tomcat容器等级,servlet容器管理Context容器,一个context对应一个Web工程
手写Servlet
1继承HttpServelt
2重写doGet()或者doPost()
例子:
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理GET请求");
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=utf-8");
out.print("<strong>HelloWorld!<string><br>");
}
Web.xml中注册Servlet
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
url-pattern中配置了“/”表示加了绝对路径类似于:localhost:8080/,所以这里我们经常看到只需要配置访问页面的文件名
servlet执行流程和周期
get请求方式,通过超链接地址在
tomcat装载servlet的情况
1Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件的之间添加如下代码:数字越小代表优先级越高
2Servlet容器启动之后,客户首次向Servlet发送请求
3Servletlei类文件被更新之后,重新装载Servlet
5Servlet和九大内置对象的对应关系
Servlet获取表单数据
1创建用户实体类,参数和表单的参数一一对应
2表单action跳转到对应的Servlet
3创建Servlet类,选择跳转方法
调用实体类,使用request方法将表单值赋予实体类的属性值,使封装类的方法传值
4 设置session存储,在表单页面使用JSP动作元素调用数据
servlet的路径跳转
1当使用超链接的时候
herf=”” 时 /表示的是服务器的根目录
正确为herf=”servlet/HelloServlet”
2使用绝对路径访问
herf=”<%=PATH%>/servlet/HelloServlet” 使用JSP定义的PATH变量,表示项目的根目录
表单中action的URL地址的写法,与超链接方式完全相同
Web.xml中url-pattern标签中/HelloServlet必须加/的,这里的/表示的项目的根目
录,若是没有,tomcat会报错(component)
3请求重定向 response.sendRedirect(request.getContextPath()+”/test.jsp”)
先获取上下问对象获取
4服务器内部跳转
request.getRequestDispather(“/test.jsp”).forward(request,response)这里的/表示的项目的根目录 或者使用../test.jsp
获取初始化参数
Web.xml中 可以配置Servler的初始化参数,在servlet只不过可以通过ServletConfig接口提供的方法来获取这些参数
在初始化方法中,使用this.getInitParameter(“username”)的接口方法获取
<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
MVC模型(Model ,View,Controller )软件开发中 流行的设计思想,意在分离模型,控制和视图,一种分层思想的体现
EIS企业信息系统
请求 控制器实例化Javabean,连接数据库 之后选择jsp视图 响应给浏览器
Javabean封装属性和业务逻辑,访问数据库
过滤器
1定义:过滤器是一个服务器的组件,他可以截取用户端的请求与响应信息,并对这些信息进行过滤;过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
2过滤器的工作原理:
3过滤器的生命周期
4过滤器的方法
5创建过滤器
继承java.servlet .filter接口
web.xml的配置
Dofilter中间放行
Chain.dofilter(request,response);
init 方法使用 FilterConfig 对象获取参数
public void init(FilterConfig config) throws ServletException {
// 获取初始化参数
String site = config.getInitParameter("Site");
// 输出初始化参数
System.out.println("网站名称: " + site);
}
6过滤器可以改变用户请求的web资源,不能直接返回数据,处理用户的请求
7过滤器链
多个过滤器配置
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>com.runoob.test.LogFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Paramter</param-value>
</init-param></filter>
<filter>
<filter-name>AuthenFilter</filter-name>
<filter-class>com.runoob.test.AuthenFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Paramter</param-value>
</init-param></filter>
8过滤器链的执行过程
执行先后顺序,由web.xml中的过滤器的配置先后决定
9过滤器的分类
当创建java类6.0的项目时,过滤器可选择ASYNC种类的过滤器。
@webfilter用于将一个类声明为过滤器,该注解会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。
@webfilter{添加属性}
当使用异步时,web.xml 中servlets的异步支持要选择true
主要常用第一点和第二点
1请求认证的情景
2当许多个页面都需要过滤的时候,就需要初始化参数
3编码格式场景
监听器
1指专门用于其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动。
2监听对象
1按照对象划分:应用环境对象,用户对话对象,请求消息对象
2按照监听事件划分:
监听域对象自身的创建和销毁的时间监听器
监听域对象的属性的增加和删除的时间监听器
监听绑定到HttpSesstion域中的某个对象的状态的时间监听器
3web监听器的概念:
Servlet规范中定义的一种特殊类
用于监听ServletContext、httpSession和Servletreqquest等域对象的创建和销毁
用户监听域对象属性发生修改的事件
可以在事件发生前、发生后做一些必要的处理
4监听器的用途
5创建监听器
1创建类引用ServletContextListener接口
2 web.xml中配置
ContextInitialized()初始化方法,在web项目启动时执行
ContextDestroy()销毁方法,在关闭项目后执行
6监听器的启动顺序
7监听域对象自身的创建和销毁的时间监听器
ServletContextListener的监听
作用:(全局属性对象;定时器)获取参数,或者使用setAttrutube方法插入参数,在别的地方获取参数值
HttpSessionListener的监听 一对多
当用户访问的时候执行初始化方法,销毁 的时候执行销毁方法
作用:(在线人数,登录日志)
ServletRequestListener 一对多
作用(读取参数,记录访问历史)
8监听属性的增加和删除
Request.setAttribute()是Request.getAttribute()获取值得唯一方法
Request.getParamter()是获取request的请求参数
9监听绑定到HttpSession域中的某个对象的状态和时间监听器
1绑定就是setAttribute,非绑定就是removeAttribute
2钝化和活化,钝化本质在于把服务器中不经常使用的session对象暂时序列化到系统文件系统或者是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。
用户的实例绑定
钝化和活化实例
10监听器在Servlet3.0应用
Servlet3.0
最新版本的Servlet3.0,引入了新特性,新增注释,异步处理,可插性支持等内容。
新增注释
通过使用注释就无需在web.xml中对servlet或者过滤器进行配置。
@Webservlet
@WebFilter
@WebListener
@WebInitParam
原文地址:https://www.cnblogs.com/ww11/p/9157029.html