首页 > 代码库 > WEB - Servlet基础,编写第一个Servlet

WEB - Servlet基础,编写第一个Servlet

什么是Servlet?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

  • 性能明显更好。
  • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
  • Servlet 是独立于平台的,因为它们是用 Java 编写的。
  • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
  • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

编写Servlet

Servlet本质上是一个Java类,创建一个Servlet很简单,就是定义一个Java类,这个类继承自javax.servlet.http.HttpServlet类,覆盖其中的doGet和doPost方法,在doGet和doPost中编写处理请求的代码。
由于 Servlet 不是 Java 平台标准版的组成部分,所以必须添加jar包:servlet-api.jar
可以在Tomcat下lib目录下找到,也可自行下载添加。

示例:FirstServlet.java(注意看代码注释)

package net.codingme.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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测试
 * 
 */
// @WebServlet("/firstServlet") 
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public FirstServlet() {
        super();
    }

    // get请求处理
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //设置响应的文本类型和字符编码
        response.setContentType("text/html;charset=UTF-8");
        //通过输出流向客户端做出响应
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h3>firest servlet</h3>");
        out.println("</body></html>");
        out.close();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

Web请求方式除了GET和POST其实还有很多中,例如PUT、DELETE等,GET和POST则最为常用,所以通常只覆盖doGet和doPost方法。response.setContentType(“text/html;charset=UTF-8”);用于设置响应的文本类型和编码方式,通过响应对象获得输出流对象out,用于向客户端浏览器输出响应内容,代码中输出的HTML标记,这实际上是一个动态的Web的页面。

配置Servlet

Servlet编写完成之后,需要在工程WEBROOT/WEB-INF/web.xml中进行配置才可以生效,web.xml是Web应用的主配置文件,包含Web应用配置的主要信息。

在web.xml中根元素<web-app>中配置Servlet,代码如下:

<servlet>
    <servlet-name>first</servlet-name>
    <servlet-class>net.codingme.servlet.FirstServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>first</servlet-name>
    <url-pattern>/firstServlet</url-pattern>
</servlet-mapping>

配置解释:

<servlet>
    <servlet-name>servlet名</servlet-name>
    <servlet-class>servlet的class的全名</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>servlet名</servlet-name>
    <url-pattern>servlet的访问路径</url-pattern>
</servlet-mapping>

如果Servlet版本是3.0及以上的,可以使用注解进行配置,省去web.xml中的配置。配置方式如:

package net.codingme.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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测试
 * 使用注解
 */
@WebServlet("/firstServlet") 
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public FirstServlet() {
        super();
    }
    .
    .
    .

运行Servlet

Servlet配置完成之后,把Servlet所在工程项目部署到Web服务器上并启动Web服务器,此时Servlet将可以被访问到,访问地址格式为
协议://服务器地址:端口号/WEB应用名/Servlet的访问路径
Web Server可以定位到访问具体哪一个Servlet:

  1. 查找web.xml中Servlet配置信息中的<url-pattern>值与请求路径相匹配的项
  2. 通过查找结果,访问到对应的(<servlet-mapping><servlet-name><servlet><servlet-name>值相等,)<servlet-class>,可以访问到指定的Servlet类,Web服务器将在第一次访问Servlet时实例化Servlet一个对象,为客户端提供响应服务。

访问Servlet

访问Servlet有三种方式

  • 直接在浏览器地址中输入访问路径来访问
  • 通过超链接来访问
  • 通过提交表单来访问

访问测试
技术分享

总结:Servlet开发步骤,执行流程

Servlet开发步骤:

  1. 编写Servlet,编写一个Java类,继承HttpServlet类并覆盖doGet和doPost方法
  2. 在配置文件web.xml中配置Servlet(Servlet3.0以上版本可以使用注解)
  3. 将Servlet所在Java Web项目部署到Web服务器上,例如Tomcat
  4. 启动Web服务器
  5. 请求访问Servlet

Servlet执行流程:

  1. 客户端浏览器向Web服务器发送请求访问某一个Servlet
  2. Web服务器根据配置信息定位到具体的Servlet
  3. 如果这个Servlet是第一次被访问,此时Servlet对象在内存中不存在,则创建这个Servlet对象,如果这个Servlet已经被访问过,则Servlet的对象已经存在内存中,然后创建一个线程操作这个Servlet对象,完成具体功能。
  4. 获得运行结果,通过响应对象(response)设置响应参数并将结果返回到客户端。
  5. 客户端将相应结果显示在浏览器中。

 

WEB - Servlet基础,编写第一个Servlet