1 Servlet 简介

1 Servlet是sun公司提供的一门用于开发动态web资源的技术。用户若用Java技术开发一个动态web资源或者网页,需要完成以下2个步骤:
① 编写一个Java类,实现servlet接口
② 把开发好的Java类部署到web服务器中

2 Servlet - Java 小程序

① servlet 就是java程序(java 类)

② servlet 遵循servlet 开发规范

③ servlet是运行在服务器端

④ 功能强大,几乎可以完成网站所有的需求

⑤ 学习jsp的基础

 

 

3 Servlet 和 Tomcat 在网络中的位置

4 Servlet 快速入门案例

Servlet 开发有三种方式

① 实现servlet 接口

② 通过继承GenericServlet

③ 通过继承HttpServlet

 

① 实现servlet 接口 

  • 建立 web应用 TestWeb
  • 在 TestWeb 下建立 WEB-INF/web.xml
  • 在 WEB-INF 下建立 classes目录(servlet就要在这开发),建立lib目录
  • 实现 Servlet接口来开发 Servelt  编写FirstServlet.java 类然后编译
 1 import javax.servlet.*;
 2 import javax.servlet.http.*;
 3 
 4 public class FirstServlet implements Servlet
 5 {
 6     //该函数用于初始化Servlet,把Servlet加载到内存,整个Servlet生命周期只会被调用一次
 7     public void init(ServletConfig config) throws ServletException
 8     {
 9         
10     }
11     
12     //获取ServletConfig对象
13     public ServletConfig getServletConfig()
14     {
15         return null;
16     }
17     
18     //该函数是服务函数,业务逻辑在这个函数实现
19     public void service(ServletRequest request, ServletResponse response)
20     {
21         PrintWriter out = response.getWriter();
22         
23         out.println("Hello Servlet"+" "+ new java.util.Date());
24     }
25     
26     //返回Servlet配置信息
27     public String getServletInfo()
28     {
29         return null;
30     }
31     
32     //destroy()方法只会被调用一次,在 Servlet 生命周期结束时被调用
33     public void destroy()
34     {
35         
36     }
37 }

  

  根据 Servlet 规范部署 Servlet,打开WEB-INF/web.xml 添加如下代码部署 FirstServlet:

 1   <!--Deploys the servlet to here -->
 2     <servlet>
 3         <!-- 自己定义 -->
 4         <servlet-name>FirstServlet</servlet-name>
 5         <!--FirstServlet所在项目的全路径(非物理路径,而是以项目WEB-INFclasses为根目录开始计算) -->
 6         <servlet-class>FirstServlet</servlet-class>
 7     </servlet>
 8     
 9     <servlet-mapping>
10         <!-- 与上面的servlet-name保持一致 -->
11         <servlet-name>FirstServlet</servlet-name>
12         <!-- 外部访问的url: 自己定义 -->
13         <url-pattern>/First</url-pattern>
14     </servlet-mapping>
15     

  

  重启Tomcat,浏览器访问FirstServlet,输入的地址为:http://localhost:8080/TestWeb/First,最后的First就是web.xml 里配置的,可以随意定义。

  

  ③ 继承HttpServlet

   通过继承HttpServlet 开发 Servlet,需要重写 doGet,doPost方法。

  首先编写一个Login.html 用于访问SecondServlet,Login.html必须放在 LatinyWebWEB-INF下

<html>
    <body>
        <form action="/TestWeb/Second" method="post">
        user:<input type="text" name="username"/>
        <input type="submit" value="login"/>
    </body>
</html>

  

  然后编写SecondServlet.java 类,并在 web.xml配置外部访问的 url。

 1 public class SecondServlet extends HttpServlet
 2 {
 3     //在HttpServlet中,设计者对post与get提交分别处理
 4     //doGet()与doPost()调用Servlet的service方法
 5     protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
 6     {
 7         res.getWriter().println("This is doGet method!");
 8     }
 9     
10     protected void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException
11     {
12         res.getWriter().println("This is doPost method!");
13         res.getWriter().println(req.getParameter("username")+" visits.");
14     }
15 }

  

  浏览器访问

  

  

  

  Servlet生命周期

  

  

Servlet生命周期简述

① 当Servlet第一次被调用时,首先会触发init 函数,该函数会把servlet实例加载到内存,它在整个生命周期只会被调用一次。

② 然后Servlet 的 service函数会被调用,后台业务逻辑都在此实现

③  第二次及以后调用Servlet,都是直接调用service函数。

④ 当web服务器停止或者reload时,tomcat关闭或者关机时,都会调用Servlet的destory函数销毁Servlet对象

Servlet 运行过程

Serlvet程序是由web服务器调用,web服务器接收到客户端请求后:

① Web服务器首先检查 Serlvet是否创建并且装载到内存,如果是则到第2步,如果未创建装载Serlvet 实例,则创建Servlet实例对象并且调用init函数装载该Servlet实例对象到内存中。

② 创建一个用于封装http请求消息的 HttpServletRequest 对象和一个代表http响应消息的 HttpServletResponse 对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

③ Tomcat重启或者关闭时;reload 该webapp时;关闭电脑时;都会调用destroy()方法。

  

  

  

原文地址:https://www.cnblogs.com/Latiny/p/8361628.html