温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Servlet如何接收请求

发布时间:2026-09-01 05:56:07 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java Servlet 中,接收并处理请求主要通过 HttpServletRequest 对象完成。Servlet 本身是一个运行在服务器中的 Java 类,由容器(如 Tomcat)调用。

下面从 基本流程 → 接收参数 → 常见请求方式 → 示例 来说明。


一、Servlet 接收请求的基本流程

  1. 客户端发送 HTTP 请求(浏览器 / APP / 前端)
  2. 服务器根据 url-pattern 找到对应的 Servlet
  3. 容器创建 HttpServletRequest 和 HttpServletResponse
  4. 调用 Servlet 的 doGet() / doPost() 等方法
  5. 在方法中通过 request 对象获取数据

二、Servlet 核心方法(接收请求)

public class DemoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 处理 GET 请求
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 处理 POST 请求
    }
}

三、接收请求参数(重点)

1️⃣ 接收普通参数

前端请求

http://localhost:8080/demo?name=Tom&age=18

Servlet 接收

String name = request.getParameter("name");
String age = request.getParameter("age");

⚠️ 注意:

  • getParameter() 返回的是 String
  • 参数不存在返回 null

2️⃣ 接收多个同名参数(如复选框)

<input type="checkbox" name="hobby" value="篮球">
<input type="checkbox" name="hobby" value="足球">
String[] hobbies = request.getParameterValues("hobby");

3️⃣ 接收 POST 表单数据

<form method="post" action="/demo">
    用户名:<input name="username">
    密码:<input name="password">
</form>
String username = request.getParameter("username");
String password = request.getParameter("password");

四、获取请求信息(常用 API)

request.getMethod();        // GET / POST
request.getRequestURI();    // /demo
request.getQueryString();   // name=Tom&age=18
request.getHeader("User-Agent");

五、处理中文乱码(非常重要)

GET 请求(Tomcat 8+ 已默认 UTF-8)

POST 请求必须设置

request.setCharacterEncoding("UTF-8");

✅ 一般在 doPost() 第一行写


六、完整示例

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {

        req.setCharacterEncoding("UTF-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");

        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("用户名:" + username);
    }
}

七、常见误区

❌ 在 doGet 里处理 POST 表单
❌ 忘记设置编码导致乱码
❌ 把 request 当成全局变量保存数据


如果你愿意,我也可以:

  • 用 Spring MVC 对比 Servlet
  • 讲 请求转发 / 重定向
  • 写一个 登录 + 接收 JSON 请求 的例子
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手