第一个Servlet
2117字,阅读需时8分钟
来自课程
课程/专栏

Servlet技术是开发动态网页的核心组件,用于处理客户端浏览器向服务端发送的请求。

要成为Servlet,类应该扩展HttpServlet,并根据是以GET或POST方式发送数据来覆盖doGet或doPost。如果希望同一个Servlet既能处理GET,又能处理POST,并且对两种方法都使用同一种操作,只需让doGet调用doPost即可,反之亦然。

程序清单4.1显示了处理GET请求的基本Servlet。

package com.example.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet(name="helloWorldServlet",urlPatterns= {"/helloworld"})
public class HelloWorldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        PrintStream out = new PrintStream(response.getOutputStream());
        //输出html标签
        out.println("<html>");
        out.println("<head>");
        out.println("<title>first Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>HelloWorld</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

HelloWorldServlet重写了doGet()方法,doGet()和doPost()方法都需要接受两个参数:HttpServletRequest和HttpServletResponse。

HttpServletRequest提供了一些方法,可以确定诸如表单数据、HTTP请求头和客户端传入的信息。HttpServletResponse允许指定诸如HTTP状态码和响应头的服务端返回信息。它还提供了获取输出流的方法getOutputStream(),该方法返回一个输出流,服务端返回给客户端的信息将写入到该输出流。

注解@WebServlet将一个继承于javax.servlet.http.HttpServlet的类标注为可以处理用户请求的Servlet。注解的“name”属性指定Servlet的名称,注解的“urlPatterns”属性用于定义请求的路径。例如“/helloworld”请求路径为web服务根目录下的helloworld。如图4-1所示。

06.PNG

我要评论
全部评论