Servlet基础知识

目录!

一、什么是servlet

二、Tomcat容器等级

三、手工编写第一个servlet

四、servlet执行流程

五、servlet生命周期

六、Tomcat装载servlet的三种情况

七、servlet与JSP内置对象的关系

八、servlet获取表单数据

九、servlet路径跳转

 

一、什么是servlet

servlet是在服务器上运行的小程序。一个servlet就是一个java类,并且可以通过“请求-响应”的模型访问这个服务器内存中的servlet程序。JSP的前身就是servlet。

二、Tomcat容器等级

 tomcat的容器分为四个等级,servlet的容器管理context容器,一个context对应一个web工程。

三、手工编写第一个servlet

  1. 新建一个工程 MyFirstServletDemo
  2. 打开默认首页 index.jsp 修改默认字符编码
  3. 1加个标题和链接

  4. 在src下新建一个包servlet 在包中建一个类HelloServlet,继承HttpServlet

  5.1 重写doGet() 

6.1在web.xml中注册servlet

3.2            在index.jsp中加post表单

5.2重写dopost()方法

 

四、servlet执行流程

 

五、servlet生命周期

1.客户端发送请求给服务器。

2.服务器开始接受,先判断该请求的servlet实例是否存在,如果不存在先装载一个servlet类并创建实例。如果存在则直接调用该servlet的service方法,之后进行判断是调用doGet方法还是doPost方法。

3.servlet创建实例后,调用init方法进行初始化。之后调用servce方法,判断是调用doGet方法还是doPost方法。

4.最后判断服务是否关闭,如果关闭则调用destroy方法。

1. 初始化阶段,调用init()方法。但在初始化之前要先调用Servlet类的构造方法,生成Servlet的实例(创建Servlet对象)。
2. 响应客户请求阶段,调用service()方法。由service()方法根据提交方式选择执行doGet()或者doPost()方法。
3. 终止阶段,调用destroy()方法。也就是销毁阶段。
顺序:构造方法-->init()方法-->service方法-->doGet()/doPost()方法-->Destroy方法

六、Tomcat装载servlet的三种情况

1. servlet容器启动时自动装载某些servlet,实现他只需要在web.xml文件中的<Servlet></Servlet>之间添加:  <loadon-startup>1<loadon-startup>  数字越小优先级越高

2. 在Servlet容器启动后,客户首次向servlet发送请求。

3.servlet类文件被更新后,重新装载servlet。

注意:servlet被转载后,servlet容器创建一个servlet思路并且调用servlet的init()方法进行初始化。在servlet的整个生命周期内,init()方法只调用一次。

 

七、servlet与JSP内置对象的关系

 

八、servlet获取表单数据

1.单个数据:

username =request.getParameter(“”);

获取多个数据(复选框型,返回字符串数组):

favorites=request.getParameterValues Parameter(“”);

u.setUsername(username);

u.setMypassword (mypassword);

u.setEmail (email);

2.把注册成功的对象保存在session中

request.getSession().setAttribute(“regUser”,u);

3.跳转到注册成功界面

request.getRequsetDispatcher(“../userinfo.jsp”).forward(request,response);

 

九、servlet路径跳转

1、在页面中访问servlet
   ①相对路径:servlet/HelloServlet
   ②绝对路径:path变量表示项目的根目录,path/servlet/HelloServlet,其中path=request.getContextPath
**超链接中href应该写成"servlet/HelloServlet",servlet前不能有/;web.xml中url-pattern标签中的url地址应写成“/servlet/HelloServlet”,servlet前必须有/,表示项目的根目录

2、在servlet中跳转到jsp页面
   ①请求重定向:response.sendRedirect(request.getContextPath()+"/test.jsp")
     如果只写"test.jsp"表示的是相对路径,当前路径是“项目名称/servlet”,就错了
   ②Servlet服务器内部跳转路径写法:
     request.getRequestDispatcher("/test.jsp").forward(request,response),这里的“/”表示项目的根目录,
     也可以写成"../test.jsp",“..”表示上一层目录
原文地址:https://www.cnblogs.com/olivegyr/p/7400419.html