Java学习之Servlet篇

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。

init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。

destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

 

Servlet的装载三种情况:

1、自动装载:某些Servlet如果需要在Servlet容器启动时就加载,需要在web.xml下它的<Servlet>标签里中,添加优先级代码:

<Servlet>

<load-on-startup>1<load-on-startup>

</Servlet>

数字越小表示该servlet的优先级越高,会先于其他自动装载的优先级较低的先装载

2、Servlet容器启动后,客户首次向某个Servlet发送请求时,Tomcat容器会加载它

3、当Servlet类文件被更新后,也会重新自动加载 Servlet是长期驻留在内存里的。某个Servlet一旦被加载,就会长期存在于服务器的内存里,直到服务器关闭 Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。

在Servlet的整个生命周期内,init()方法只被调用一次

 

路径跳转:绝对路径&相对路径

一、JSP跳转到Servlet
1、相对路径,如href="servlet/TestServlet" 如果写成"/servlet/TestServlet"会报错,因为第一个“/”表示的是【服务器根目录】
2、绝对路径,通过内置成员变量path实现,如href="<%=path%>/servlet/TestServlet" path得到的是项目根目录,如【http://localhost:8080/ServletDemo】
二、Servlet跳转JSP
1、请求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp"); request.getContextPath()获得项目根目录,或者通过"../xxx.jsp"取得上层路径得到
2、服务器内部转发: request.getRequestDispatcher("../xxx.jsp").forward(req,resp); request.getRequestDispatcher("/test.jsp").forward(request, response); //斜线表示项目的根目录 小结:Servlet都可以通过../xxx.jsp获取路径
三、web.xml的路径 web.xml的<url-pattern>必须以“/”开头,“/”表示项目的根目录
posted @ 2017-02-06 20:04  我不吃饼干呀  阅读(167)  评论(0编辑  收藏  举报