Servlet入门
2019-04-25 06:57:03来源:博客园 阅读 ()
一、servlet工作原理
Servlet的一生受容器的严格控制,容器会创建或销毁servlet对象;
为servlet创建或分配一个线程,并调用servlet的service()方法,
创建请求和响应对象,把请求和响应对象的引用作为参数传递给servlet。
Servelt由Servlet容器来管理,当客户请求到来时,容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装相应数据。这两个对象将被容器作为service()方法的参数传递给(转向给doXXX方法处理)Servlet,Servlet利用ServletRequest对象获取客户端发来的请求数据,利用ServletResponse对象发送相应数据。
1、servlet家族
参照servlet的api
2、生命周期:
(1)init 出生阶段:在下列情形下Servlet容器装载Servlet:
A: Servlet容器启动时自动装载某些Servlet
B: 在Servlet容器启动后,客户端首次向Servlet发出请求
C: Servlet的类文件被更新后,重新装载Servlet
注:Servlet容器是否在启动时自动装载Servlet,是由web.xml中为Servlet设置的<load-on-startup>属性决定的(默认是第一调用时初始化)
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
(3)service()调用
它是Servlet的核心,每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
(4)destroy() 死亡
仅执行一次,在服务器端停止且卸载Servlet时执行该方法
Servlet 生命周期定义了 Servlet 从创建到毁灭的整个过程,总共分为四个步骤。
调用 init() 方法初始化
调用 service() 方法来处理客户端的请求
调用 destroy() 方法释放资源,标记自身为可回收
被垃圾回收器回收
二、HttpServlet的作用
1、处理请求、返回响应
HttpServletRequest:
接口封装了客户请求信息,如客户请求方式、参数、客户使用的协议、以及发出请求的远程主机信息等
HttpServletResponse:为Servlet提供了返回响应结果的方法
2、转发和重定向
实现重定向
使用HttpServletResponse对象的sendRedirect()方法实现
public sendRedirect(String arg0)
实现转发
获取RequestDispatcher实例
dispatcher=request.getRequestDispatcher("servlet2");
调用forward方法
dispatcher.forward(request, response);
转发和重定向的区别
转发是继续传递、处理同一个请求,在服务器端进行
重定向在客户端运行,会产生新请求
因为浏览器需要发出一个新请求 ,所以重定向的速度慢于转发
总结:
在实际开发中转发与重定向的选择如下
优先选择转发,因为转发效率更高
在同一Web应用程序的两个请求间传递数据时,在转发与重定向之间,只能通过转发实现
如果需要跳转到其它服务器上的资源,则必须使用重定向
三:ServletContext(扩展)
是整个Web应用共同的环境,可以保存一些公用的信息。
环境里的每个成员都可以获得环境信息
获取方式:
ServletContext context=getServletContext();
String home=context.getInitParameter(“pandaHome”);
System.out.println(home);
两个重要方法:setAttribute()和getAttribute()
void setAttribute(String name,Object obj): 设置整个应用范围内的属性值
Object getAttribute(String name): 获得整个应用范围内的属性值
原文链接:https://www.cnblogs.com/spring96117/p/10763056.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java基础-异常、断言
- logstash系列-入门整理 2020-06-10
- Java 入门教程 2020-06-09
- RocketMQ4.4 入门进阶+实战 2020-06-08
- 因为 MongoDB 没入门,我丢了一份实习工作 2020-06-07
- Invalid [xxx] in servlet mapping 、 <url-pattern& 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash