Java Web实验三:Servlet入门

本文介绍了如何在Java中创建和配置Servlet,包括TestServlet的初始化、服务请求处理以及销毁过程。通过实例演示了如何重写init(),service()(或doGet(),doPost()),和destroy()方法,并展示了如何通过GET和POST方法访问HelloServlet。
摘要由CSDN通过智能技术生成

实验三   Servlet入门

一、实验目的

1.学会 Servlet的创建、配置及运行方法;

2.掌握Servlet的生命周期。

二、实验内容

1.在IDE中编写一个Servlet类TestServlet,重写init()方法,service()(或者doGet(),doPost())方法,destroy()方法;

2.正确配置该Servlet类TestServlet;

3.启动Tomcat服务器,通过浏览器访问该Servlet类TestServlet,观察init()方法,service()(或者doGet(),doPost())方法,destroy()方法的执行顺序,执行的次数以及执行的时机,示例如下图所示:

4.编写一个类HelloServlet继承于HttpServlet,分别重写doGet(),doPost()方法,编写一个html页面form.html,在该页面提供两个个按钮分别按照get和post方式访问该HelloServlet,观察两种方法调用的不同,如下图所示:

三、实验源代码、运行截图

TestServlet.java

package com.xxx.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/ser01")
public class TestServlet extends HttpServlet {

    // 重写 init() 方法
    @Override
    public void init() throws ServletException {
        // 初始化代码
        System.out.println("TestServlet 初始化");
        // 可以在这里加载资源或执行其他初始化操作
    }

    // 重写 service() 方法(或者单独重写 doGet() 和 doPost())
    // 注意:通常我们不会直接重写 service() 方法,除非需要处理所有类型的请求
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 服务端代码
        System.out.println("TestServlet service() 方法被调用");
        // 根据请求类型调用 doGet 或 doPost
        super.service(req, resp); // 调用父类的 service 方法,它会根据请求方法调用 doGet 或 doPost
    }



    // 重写 destroy() 方法
    @Override
    public void destroy() {
        // 销毁代码
        System.out.println("TestServlet 销毁");
        // 可以在这里释放资源或执行其他清理操作
    }
}

Server.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.xxx.servlet.HelloServlet</servlet-class> 

    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>

HelloServlet.java

package com.xxx.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

//@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp, "GET");
        // 处理 GET 请求
        System.out.println("HelloServlet doGet() 方法被调用");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<html><body>");
        out.println("<h1>HelloServlet GET 请求处理</h1>");
        out.println("</body></html>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp, "POST");
        System.out.println("HelloServlet doPost() 方法被调用");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<html><body>");
        out.println("<h1>HelloServlet POST 请求处理</h1>");
        out.println("</body></html>");
    }

    private void processRequest(HttpServletRequest req, HttpServletResponse resp, String method) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");

    }
}

Test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Form for GET and POST Requests</title>
</head>
<body>
<h2></h2>
<form action="HelloServlet" method="post">
    <label for="studentIdPost">学号:</label>
    <input type="text" id="studentIdPost" name="studentIPost" required><br>

    <label for="namePost">姓名:</label>
    <input type="text" id="namePost" name="namePost" required><br>
    <input type="submit" value="post">
</form>

<form action="HelloServlet" method="get">
    <label for="studentIdGet">学号:</label>
    <input type="text" id="studentIdGet" name="studentIdGet" required><br>

    <label for="nameGet">姓名:</label>
    <input type="text" id="nameGet" name="nameGet" required><br>
    
    <input type="submit" value="get">
</form>
</body>
</html>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值