首页 > 代码库 > 11_Servlet基础知识

11_Servlet基础知识

【概念】

Servlet通常被称为服务端小程序,是运行在服务端的程序,用于处理及相应客户端的请求。

Servlet是用java语言开发网页动态资源的技术。

 

【特点】

1.Servlet是个特殊的Java类,这个Java类必须继承HttpServlet类。

2.一个普通的java类实现了Servlet接口,也叫作Servlet程序。通常继承HttpServlet是为了创建一个基于Http协议的Servlet。

3.Servlet程序要部署到服务器(如Tomcat)运行。

 

【Servlet提供的响应客户端请求的方法】

1. doGet()      用于响应客户端的GET请求。

2. doPost()     用于响应客户端的POST请求。

3. doPut()      用于响应客户端的PUT请求。

4. doDelete()  用于响应客户端的DELETE请求

注:客户端的请求通常只有GET和POST两种,Servlet为了响应这两种请求,必须重写doGet()和doPost()方法。

 

【Servlet开发1(Servlet3.0之前)】

[ 第1步 ]

编写java类,继承HttpServlet 。重写doGet()和doPost()方法。

package com.Higgin.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FirstServlet extends HttpServlet {    private static final long serialVersionUID = 1L;           public FirstServlet() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("doGet方法执行---");    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("doPost方法执行---");    }}

[ 第2步 ](没有使用IDE的情况下)

把Servlet的class字节码拷贝到WEB-INF/classes目录下

[ 第3步 ]

在web.xml中配置对应的servlet

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns
="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      id
="WebApp_ID" version="3.0"> <display-name>HelloServlet</display-name> <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>com.Higgin.servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

【运行结果】

技术分享

【对于web.xml中Servlet配置的注释】

  <!-- 配置一个Servlet -->  <servlet>      <!-- Servlet内部名称,自定义 -->      <servlet-name>FirstServlet</servlet-name>      <!-- Servlet的 类全名 -->      <servlet-class>com.Higgin.servlet.FirstServlet</servlet-class>  </servlet>  <!-- Servlet的 映射配置 -->  <servlet-mapping>      <!-- Servlet的内部名称,一定要和上面的保持一致 -->      <servlet-name>FirstServlet</servlet-name>      <!-- Servlet的映射路径(访问Servlet的名称) -->      <url-pattern>/test</url-pattern>  </servlet-mapping>

 

【Servlet开发2:利用Servlet3.0新特性@WebServlet注释】

最大不同:直接在对应的Servlet类名(如上面的FirstServlet类)上加上注释@WebServlet("/test"),无需在web.xml中进行配置就可以实现相同的效果。

package com.Higgin.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class FirstServlet */@WebServlet("/test")  //servlet3.0新特性public class FirstServlet extends HttpServlet {    private static final long serialVersionUID = 1L;           public FirstServlet() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("doGet方法执行---");    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("doPost方法执行---");    }}

 

 

 【Servlet的执行过程】

前提:TomCat服务器启动,首先加载webapps中的每个web应用的web.xml配置文件。

1.在浏览器输入对应的url, http://localhost:8080/HelloServlet/test

2.截取到URL的字符串,得到需要访问的资源名称:     /test

3.在HelloServlet网站下的web.xml信息中搜索是否存在  /test匹配的  url-pattern。

4.匹配到对应的url-pattern之后,取出当前映射信息中的servlet-name的名称,然后在web.xml信息中搜索是否存在一个相同servlet-name名称的servlet配置信息。

5.找到对应的servlet配置信息之后,取出当前配置信息的servlet-class的内容,即字符串 com.Higgin.servlet.FirstServlet

6.创建FirstServlet对象,然后调用FirstServlet类中的方法。

7.Servlet就把内容返回给浏览器用户。

 

11_Servlet基础知识