欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servlet基础

程序员文章站 2022-06-03 09:16:56
...

Tomcat容器等级

四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程。

Servlet基础


手工编写第一个Servlet

1.继承HttpServlet
2.重写doGet()或者doPost()方法
3.在web.xml中注册Servlet

编写好Servlet之后,接下来要告诉Web容器有关于这个Servlet的一些信息。在Servlet 3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。
如:


@WebServlet(name = "myServlet", urlPatterns = {"/myServlet"})  
public class MyServlet extends HttpServlet {  
/*--------代码--------*/  
/*--------代码--------*/  
}  

@WebServlet告知容器,HelloServlet这个Servlet的名称是 myServlet 。URL是 /myServlet (绝对路径),则由具 myServlet 名称的Servlet来处理,这是由urlPatterns属性来指定的。


base标签

发送请求到配置好的url路径,通常在jsp页面上做这样的处理:

<!-- 代码 -->
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!-- 代码 -->
<html>
<head>
    <!-- 代码 -->
    <base href="<%=basePath%>">
    <!-- 代码 -->
</head>
    <!-- 代码 -->
</html>

作用就是将basePath(这里即为根目录下)作为相对路径时的起始位置,因此不必考虑此时编写的文件位置在项目何处。

Servlet生命周期

  1. 初始化阶段
  2. 响应客户端请求阶段,调用servlet()方法。由servlet()方法根据提交方式选择执行doGet()或者doPost()方法。
  3. 终止阶段,调用destroy()方法。值得注意的是,当在控制台直接关闭服务器时是以结束线程的方式关闭,因此不会执行destroy()方法
Created with Raphaël 2.1.2开始Servlet实例不存在 装载Servlet类并创建实例 调用init(ServletConfig)方法 调用service(Servlet Request Servlet Response)方法 yesno
Created with Raphaël 2.1.2服务器关闭 调用destroy()方法 yes

在下列示客Tomcat容器装载Servlet

  1. Servlet容器启动时自动自动装载某些Servlet,实现它只需要在web.xml文件中的<Servlet></Servlet>之间添加如下代码:<loadon-startup>1</loadon-startup>数字越小表示优先级别越高。
    PS:Servlet3.0中可以写在@WebServlet(在上面的”手工编写第一个Servlet”有介绍,每项逗号隔开)
  2. Servlet容器启动后,客户首次向Servlet发送请求。
  3. Servlet类文件被更新后,重新加载Servlet。

Servlet被加载后,将被长期保存在内存中,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。


Servlet与JSP九大内置对象对应关系

JSP对象 Servlet中怎样获得
out resp.getWriter
request service方法中的req参数
response service方法中的resp参数
session req.getSession()函数
application getServletContext()函数
exception Throwable抛出异常的方式
page this
pageContext PageContext
Config getServletConfig函数

阶段案例,servlet实现用户登录