验证service dopost doget方法的区别

本文介绍如何创建并使用Servlet,包括实现GET和POST方法,并通过XML配置映射路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先必须要创建一个MyServlet的一个类并且继承HttpServlet

package com.mashibing;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }

    @Override
    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("my first web");
        System.out.println("my first web");
    }
}

导包的时候发现没有办法导包,这个时候需要我们手动添加一个servlet包

就可以成功导包啦

接下来我们先做一个简单的测试 创建一个MyServlet01的类作为一个测试

package com.mashibing;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import java.io.IOException;

public class MyServlet01 extends HttpServlet {
    @Override
    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("my second web");
    }
}

接下来我们查看servletd 执行周期性,要先new一个servlet ,并且在xml里面推荐serclet-mapping,代码在下面展示

测试完成后开始写一个doget 和dopost方法

同样需要new一个methodservlet

package com.mashibing;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MethodServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是post");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是get");
    }

   @Override
    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
        System.out.println("我是service");
    }
}

下面展示一下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>MyServlet</servlet-name>
        <servlet-class>com.mashibing.MyServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/firstweb</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>MyServlet01</servlet-name>
        <servlet-class>com.mashibing.MyServlet01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet01</servlet-name>
        <url-pattern>/secondweb</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>life</servlet-name>
        <servlet-class>com.mashibing.ServletLife</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>life</servlet-name>
        <url-pattern>/life</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>MethodServlet</servlet-name>
        <servlet-class>com.mashibing.MethodServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MethodServlet</servlet-name>
        <url-pattern>/method</url-pattern>
    </servlet-mapping>

</web-app>

web页面端写一个简单的登录页面用来测试

<%--
  Created by IntelliJ IDEA.
  User: 19218297
  Date: 2022/12/1
  Time: 16:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="method" method="get">
    用户名:<input type="text" name="name" value=""/><br/>
    密码:<input type="text" name="pwd" value=""/><br/>
    <input type="submit" value="loading">
</form>
</body>
</html>

最后看一下效果

运行成功,可以去测试这三个方法的区别

总结:当有service方法时优先调取service方法,其余两种情况根据自己选择调取

在测试过程中真的又被气到

在method.jsp中手动写入的值和自动键入值居然不一样,一直苦苦查找原因,最后居然是因为这个程序运行不成功

404:访问源不存在
请求路径跟web.xml中填写的请求不一致请求路径的项目虚拟名称填写错误
405
请求的方式跟servlet中支持的方式不一致
500:服务器内部错误- web.xml中servlet类的名称错误servlet对应的处理方法中存在代码逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值