1、Servlet的工作原理
Servlet由tomcat服务器负责管理,Tomcat服务器通过读取web.xml创建并运行servlet,Servlet是javax.servlet包中HttpServlet类的子类的一个实例,由服务器创建并完成初始化工作。当多个用户请求一个Servlet时,服务器为每个用户启动一个线程而不是启动一个进程,这些线程由服务器来管理
2、Servlet中的生命周期
(1)初始化Servlet。Servlet第一次被请求加载时,服务器初始化这个Servlet,即创建一个Servlet,这个Servlet调用init方法完成必要的初始化工作
(2)新诞生的Servlet再调用service方法响应用户的请求(会根据用户的请求方式再调用doGet或doPost方法)
(3)当服务器关闭时,调用destroy方法销毁servlet
init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。当后续的用户请求servlet服务时,Web服务将启动一个新的线程,在该线程中,Servlet调用响应用户的请求。也就是说,每个用户的每次请求都会导致service方法被调用执行,其执行过程分别运行在不同的线程中
3、重定向与请求转发
请求转发:
request.getRequestDispatcher(URL地址).forward(request, response)
处理流程:
1、客户端发送请求,Servlet做出业务逻辑处理。
2、Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。
image.png
重定向:
response.sendRedirect(URL地址)
处理流程:
1、客户端发送请求,Servlet做出业务逻辑处理。
2、Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。
3、客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。
image.png
区别
1、区分是从服务器外的请求,还在是内部转发,从服务器外的请求
2、请求转发,地址还是第一个Servlet的地址,重定向是再次请求其他Servlet的地址
做增、删、改的时候最好用重定向,因为如果不用重定向,每次刷新页面就相当于再请求一次,就可能会做额外的操作,导致数据不对。
4、Session和Cookie的区别
1、Session解决了一个用户在不同请求中处理的数据共享问题,Cookie解决了发送不同的请求的数据共享问题
2、Session存放在服务器端(服务器的一个文件里,而不是内存),Cookie存放在客户端
3、Session的原理:用户第一次访问服务器时,服务器会创建一个S而是session对象给此用户,并将session对象的JSESSIONID使用Cookie技术将JSESSIONID存储到浏览器,保证用户的其他请求能够获取到同一个session对象,也保证不同请求能够获取到共享的数据
5、JSP的访问原理
浏览器发起请求请求JSP,请求被服务器接收,执行JspServlet将请求的JSP文件转义成对应Java文件(即Servlet),然后执行转义好的Java文件
6、JSP的九大内置对象
- 1、内置对象:JSP文件在转译成其对应的Servlet文件的时候,自动生成Servlet对应的对象
- 2、使用:内置对象在JSP页面中使用,使用局部代码块或者脚本段语句来使用,不能够在全局代码块中使用
- 3、内容(主要前4个)
(1)request:封装当前请求数据的对象,由tomcat服务器创建,一次请求
(2)response:响应对象,用来响应请求处理结果给浏览器的对象,设置响应头,重定向
(3)session:此对象用来存储用户的不同请求的共享数据,一次会话
(4)application:也就是ServletContext对象,一个项目只能有一个存储用户共享的数据对象
(5)pageContext:页面上下文对象封存了其他内置对象,封存了当前JSP的运行信息,每一个JSP文件单独拥有一个pageContext对象,作用域:当前页面
(6)out:响应对象,JSP内部使用带有缓冲区的响应对象,效率高于response对象
(7)page:代表当前JSP对象,相当于Java中的this
(8)exception:异常对象,存储了当前运行的异常信息
(9)config:就是ServletConfig,主要是用来获取web.xml中的配置数据,完成一些初始化数据的读取
7、四个作用域对象(作用:数据流转)
1、pageContext:当前页面,解决了在当前页面内的数据共享问题
2、request:一次请求,一次请求的Servlet的数据共享,通过请求转发,将数据流转给下一个Servlet
3、session:一次会话,一个用户的不同请求的数据共享,将数据从一个请求流转到其他请求
4、application:项目内,不同用户的数据共享问题,将数据从一个用户流转到其他用户
8、bean
一、什么是JavaBean
1)必须实现Serializable接口
2)没有public类型的类变量
3)具有无参数的构造器
4)具有public的getters和setters方法
二、如何在一个页面中设置一个JavaBean
<jsp:useBean id="?" class="?" scope="?"></jsp:useBean>
id:相当于一个引用类对象的一个变量名
class:指明创建哪个类的对象
scope:指明这个对象设置在哪个内置对象中(如果scope缺省则,默认为放在page中)
三、bean的作用域
image.png
网友评论