Servlet处理客户端HTTP请求

简介:

本篇博客将在上一篇博客《Servlet第一个示例》的基础上继续介绍,Servlet如何处理客户端的请求,获得客户端的请求消息。

首先我们新建一个静态页面index.html,用于向Servlet提交请求。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Servlet</title>
</head>
<body>
    <form action="Test" method="POST">
        <table>
            <tr>
                <td>用户编号</td>
                <td><input type="text" name="userId"></td>
            </tr>
            <tr>
                <td>用户名称</td>
                <td><input type="text" name="userName"></td>
            </tr>
            <tr>
                <td>用户性别</td>
                <td><select name="userSex"><option value="1"></option>
                        <option value="2"></option></select></td>
            </tr>
            <tr>
                <td>兴趣爱好</td>
                <td><input type="checkbox" name="interest1">兴趣1&nbsp;&nbsp;<input
                    type="checkbox" name="interest2">兴趣2</td>
            </tr>
            <tr>
            <td colspan="2"><input type="submit"></td>
         </tr>
        </table>
    </form>
</body>
</html>

然后,我们需要修改Test中的方法,因为页面采用POST方式提交,所以在Test Servlet中,我们仅对Post的请求做处理。

package com.gujin.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet
{
   private static final long serialVersionUID = 1L;

   protected void doPost(HttpServletRequest request,
         HttpServletResponse response) throws ServletException, IOException
   {
      request.setCharacterEncoding("UTF-8");
      // 获得请求头信息
      System.out.println("======HEAD INFO======");
      Enumeration enumeration = request.getHeaderNames();
      while (enumeration.hasMoreElements())
      {
         String name = (String) enumeration.nextElement();
         Enumeration headers = request.getHeaders(name);
         while (headers.hasMoreElements())
         {
            System.out.println(name + ":" + headers.nextElement());
         }
      }

      // 获得请求参数
      System.out.println("======REQUEST PARAM======");
      // 获得指定参数
      // request.getParameter("userId");
      // 获得所有请求参数名称
      // request.getParameterNames();
      // 获得请求参数集合
      // request.getParameterMap();

      Enumeration names = request.getParameterNames();
      while (names.hasMoreElements())
      {
         String name = (String) names.nextElement();
         System.out.println(name + ":" + request.getParameter(name));
      }
      PrintWriter writer = response.getWriter();
      writer.print("Hello Servlet");
      writer.flush();
      writer.close();
   }
}

启动服务器后访问:http://localhost/Servlet/

这里写图片描述

输入一些内容后提交,我们会看到服务端的后台会输出如下内容(内容可能会不一样):
======HEAD INFO======
accept:image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, a
pplication/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, /
referer:http://localhost/Servlet/
accept-language:zh-CN
user-agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.04506.30; .NET CLR 2.0
.50727; hwvcloud4; hwcloud4)
content-type:application/x-www-form-urlencoded
accept-encoding:gzip, deflate
host:localhost
content-length:77
connection:Keep-Alive
cache-control:no-cache
======REQUEST PARAM======
userId:jianggujin
userSex:1
interest2:on
userName:蒋固金

这样我么就可以根据客户端请求的内容做相应的业务处理。

目录
相关文章
|
14天前
|
Java
java原生发送http请求
java原生发送http请求
|
21天前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
48 1
|
4天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
19 8
|
2天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 服务器 HTTP 响应 3
`Servlet`教程示例展示了如何创建一个HTTP响应,使用`@WebServlet(&quot;/Refresh&quot;)`的`Refresh`类继承`HttpServlet`。在`doGet`方法中,设置了`Refresh`头以每5秒自动刷新,并用`setContentType(&quot;text/html;charset=UTF-8&quot;)`设定内容类型。还使用`Calendar`和`SimpleDateFormat`获取并格式化当前时间显示。相应的`web.xml`配置指定了Servlet路径。当访问此Servlet时,页面将每5秒更新一次显示的系统时间。
14 4
|
2天前
|
Java
Servlet 教程 之 Servlet HTTP 状态码 3
该Servlet教程聚焦于HTTP状态码,示例展示如何向客户端发送407错误,提示&quot;Need authentication!!!&quot;. 类名为`showError`的Servlet扩展自`HttpServlet`,重写`doGet`和`doPost`方法。当遇到GET或POST请求时,它会设置HTTP状态码为407并附带错误信息。
10 2
|
7天前
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
21 1
|
1月前
|
JSON 前端开发 数据格式
糊涂工具类真是场景下请求http接口的案例
糊涂工具类真是场景下请求http接口的案例
21 0
|
1月前
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
20 0
|
Java
http协议客户端向服务器端请求时一般需要发送的内容
out.println("GET /shopping/index.html HTTP/1.1");//请求行 包括请求方式,文件路径, http协议版本(必写)请求头.... out.println("Aceept: */*");//客户端能够处理的文件类型(不是必须) out.
584 0
|
1月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
139 0