Servlet——Servlet生命周期与路径跳转
来源:互联网 发布:朱苏力 知乎 编辑:程序博客网 时间:2024/06/04 23:55
之前有学过Servlet,对于Servlet的基本原理也大致有一些了解,最近回头又看了关于Servlet的视频,总结了两点Servlet的小知识,也是Servlet中比较常见的知识,在这里做一个记录。
一、Servlet的生命周期
Servlet是在服务器上运行的的小程序,我们自己编写的Servlet类都是继承自HttpServlet类的,所以也复写了HttpServlet的主要方法:init()、doGet()、doPost()、destory()。当用户向服务器请求一个Servlet时,它的生命周期就开始了,首先服务器检查请求的Servlet实例是否已经存在,如果存在则直接根据请求的类型执行相应的service方法;如果请求的Servlet实例不存在,则服务器装载相应的Servlet类并创建Servlet实例,创建了Servlet实例后服务器会执行init()方法对Servlet进行初始化操作,在这里init()方法只有在创建Servlet实例后执行一次。创建了Servlet实例之后,服务器会根据请求的类型即get类型还是post类型调用相应的service方法处理请求,请求完成后通过response返回给用户,这时已经创建的Servlet实例会驻留在服务器内存中等待下一次请求。当服务器关闭时,服务器会执行Servlet的destory()方法对Servlet进行销毁。Servlet的生命周期可以参考下图(图片转自慕课网)
前面也介绍了服务器在用户请求Servlet时会装载Servlet类,其实这只是一种装载Servlet的方法,装载Servlet的方法一共有三种:1、自动装载:有一些Servlet需要在服务器启动的时候就装载进来,要实现这样的装载,就需要在web.xml文件中<servlet>标签下添加一个子标签load-on-startup,如下所示:
<servlet> …… <load-on-startup>1<load-on-startup></servlet>其中子标签的是值为0或者大于0时,表示容器在应用启动时就装载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet被请求时才装载。正数的值越小,启动该servlet的优先级越高。2、用户首次请求Servlet时装载,这也是我们之前讲解的装载方式。3、当Servlet的类文件被更新后相应的Servlet也会被重新装载,例如在服务器启动时修改了相应的Servlet代码并保存,服务器也会装载相应的Servlet。
二、Servlet的路径跳转
<servlet> <description></description> <display-name>LoginServlet</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.imooc.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/servlet/LoginServlet</url-pattern> </servlet-mapping>1、第一种跳转,在这种情况下,如果路径以/开头,则/类似于http://localhost:8080/,也就是服务器的根目录。
<form action="……" method="post">用户名:<input type="text" name="userName"/><br/>密码:<input type="password" name="password"/><br/>爱好:<input type="checkbox" name="favourite" value="internet"/>上网 <input type="checkbox" name="favourite" value="football"/>足球 <input type="checkbox" name="favourite" value="cook"/>做菜<input type="submit" value="登录"/></form>在这个action里我们可以写绝对路径也可以写相对路径,先看绝对路径,以/开头,上面介绍了如果是第一种跳转即一个新的用户请求,则/代表了服务器的根目录,那么接下来就需要分别加上项目的根目录、Servlet的路径,在我们这个例子里为/servlet-web/servlet/LoginServlet。当然我们也可以通过request.getContextPath()来获取项目的上下文,然后再拼接上Servlet的路径,即<%=request.getContextPath() %>/servlet/LoginServlet。我们还可以通过相对路径来访问相应的Servlet,要注意的是这里的相对路径是指LoginServlet相对于login.jsp所在位置,如果action什么都不填写,则代表了当前login.jsp的位置,而LoginServlet的位置在我们的例子里是在login.jsp所在目录的上一级的路径下的servlet/LoginServlet,用相对路径表示就是../servlet/LoginServlet。
- Servlet——Servlet生命周期与路径跳转
- 初识Servlet—Servlet生命周期
- Servlet Servlet的路径跳转
- jsp、Servlet路径映射与生命周期
- Servlet——(一)Servlet概述——Servlet的路径跳转
- JSp与Servlet跳转路径配置
- Servlet路径跳转
- Servlet路径跳转问题
- Servlet路径跳转
- Servlet路径跳转
- Servlet路径跳转
- servlet路径跳转
- Servlet的路径跳转
- Servlet路径跳转
- Servlet路径跳转
- Servlet——生命周期
- 黑马程序员——Servlet生命周期和Servlet之间的跳转
- Servlet生命周期与Servlet容器
- 交叉熵在Cross-entropy error function and logistic regression
- 简述在IE下mouseover和mouseenter的区别
- TOJ 2469.Friends(并查集基础题目)
- 日间模式夜间模式切换小功能
- Android开发-调用系统自带软件发送邮件或分享文字-常用操作
- Servlet——Servlet生命周期与路径跳转
- merge sort
- 代码整洁之道-函数
- 去掉使用百度编辑器生成的p标签及生成的实体符号
- scu 4440 Rectangle
- apache Commons-beanutils的使用
- 双向队列
- Redis持久化
- 让Eclipse 安装FindBugs插件