您的位置:首页 > 游戏 > 游戏 > 使用 HttpServlet 接收网页的 post/get 请求

使用 HttpServlet 接收网页的 post/get 请求

2024/12/27 4:03:34 来源:https://blog.csdn.net/m0_75138009/article/details/140419390  浏览:    关键词:使用 HttpServlet 接收网页的 post/get 请求

前期工作:部署好 idea 和 一个 web 项目

idea(2021),tomcat(9)

->创建一个空的项目

-> 新建一个空的模块

-> 右键单击模块 选择 Add..Fra.. Sup..

-> 勾选Web App...后点击OK

-> 点击 file - Project Struc...

-> 选择刚刚的模块 -> 点击 + (JAR Or...)引入 tomcat 的 lib 文件夹下的 servlet-api.jar 和 jsp-api.jar (也可以选择+(Library)将整个 tomcat 引入)

->点击右上角 绿色小锤子右边的按钮

-> 找到 tomcat - local tomcat 添加

-> 点击 deployment

-> 拉到最下面设置这个项目的名称,(我起的项目名是 bjm),之后要访问这个项目就在浏览器输入:localhost:8080/bjm

-> 点击 + (Art...) 

-> 在src 下新建一个放类的文件夹 -> 在新建一个类,这个类就是用来实现接收 post 请求的

-> 在 web 下新建一个 html 文件,这个是前端页面,用于发送 post 请求的

-> 确保 WEB-INF 文件夹下有 web.xml 文件,后续需要在 xml 文件中设置文件的访问路径

完成后大概页面是这样的,就只差代码的填入了(这里我已经填了代码,后面我会给出填入的代码,我是直接导入的 Libary)

815b2a6064af4f3780c4e47cc231e5c2.png

部署完毕:完成代码的编写

首先完成 xml 文件的配置,将 html 文件 的访问路径与类联系起来

<?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>httpServlet</servlet-name><!--这里的名字只要和下面的 mapping 名字一样就可以,可以自己起--><!--设置访问路径所对应的实现类,这里是装类的文件名.类名--><servlet-class>Servlet.httpSl</servlet-class></servlet><servlet-mapping><servlet-name>httpServlet</servlet-name><!--设置浏览器的访问路径,这里的路径是自己指定的,需要与 html 文件中指定的路径一致--><url-pattern>/http</url-pattern></servlet-mapping></web-app>

接着完成 html 页面的编写:

<!DOCTYPE html>
<html lang = "en">
<head><meta charset="UTF-8"><title>register</title>
</head>
<body><h1>user register</h1><form action="/bjm/http" method="post"><!--这里的路径是/项目名/xml文件中的指定路径名-->name: <input type = "text" name = "username"><br>pw: <input type = "text" name = "password"><br><input type="submit" value = "提交"></form>
</body>
</html>

最后完成接收请求的类的代码编写,这个类需要继承 HttpServlet 接口

package Servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class httpSl extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("UTF-8");String name = req.getParameter("username");//对应html 的 name 属性 的 = 后面的内容String passwd = req.getParameter("password");System.out.println(name +":"+passwd);//响应resp.setContentType("text/html;charset=UTF-8");//UTF-8的htmlPrintWriter writer = resp.getWriter();writer.println("<p>成功提交数据!</p>");}
}

然后我们点击右上角的绿色小三角启动 Tomcat

浏览器输入 localhost:8080:/bjm/register.html

然后输入用户名和密码

e6b7da8bed9b48da9af5379675167dff.png

点击提交,我们可看到tomcat控制台接收到了浏览器发送的 post 请求

9c0d324b527648ccbbdf0171428b08b9.png

掌握 post 后,get 就简单了,我们只需在刚刚写的类再去实现一个 doGet 方法

package Servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class httpSl extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//设置请求体的字体req.setCharacterEncoding("UTF-8");String name = req.getParameter("username");//对应html 的 name 属性 的 = 后面的内容String passwd = req.getParameter("password");System.out.println(name +":"+passwd);resp.setContentType("text/html;charset=UTF-8");PrintWriter writer = resp.getWriter();writer.println("<p>成功提交数据!</p>");}//get请求@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String nm = req.getParameter("name");System.out.println(nm);}}

然后我们在浏览器输入地址后,在末尾加上:

?name=花下的晚风(这里随便起就行)

便可以得到 get 请求的请求体

可能会遇到的问题

1.在访问时出现500错误

出现这个错误大概率是版本不适配的问题

检查环境变量的jdk版本和模块所使用的版本是否一致,若不一致,需要将jdk版本修正后重新新建一个项目,再从新部署一次

检查是否使用Tomcat10及其以上的版本,但是jdk版本却只有8及其以下,Tomcat较新的版本与Java较老的版本会出现不适配的情况

2.在访问时出现404错误

这是路径设置的问题,检查html文件和xml文件的路径是非正确,点击绿色小锤子旁边的按钮,查看浏览器输入的路径和项目名是否匹配

3.在访问时出现405错误

这是请求和响应不匹配所产生的错误,检查接收参数的名称是否和html设置的name属性的名称一致,检查设置的发送方式是否正确(本次请求使用的是post)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com