温馨提示×

温馨提示×

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

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

java servlet如何处理请求

发布时间:2026-10-10 09:40:52 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,Servlet 是运行在 Web 服务器(如 Tomcat)上的组件,用于接收 HTTP 请求并生成响应。下面从整体流程到常见处理方式给你讲清楚。


一、Servlet 处理请求的基本流程

  1. 客户端发送请求
    • 浏览器 → http://localhost:8080/app/hello
  2. Web 容器(Tomcat)接收请求
  3. 根据 URL 找到对应的 Servlet
  4. 容器创建请求和响应对象
    • HttpServletRequest
    • HttpServletResponse
  5. 调用 Servlet 的对应方法
    • doGet() / doPost() 等
  6. Servlet 处理请求并写回响应
  7. 容器将响应返回给客户端

二、Servlet 核心方法(处理请求)

public class HelloServlet extends HttpServlet {

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

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

常用方法对应 HTTP 请求

HTTP 方法 Servlet 方法
GET doGet
POST doPost
PUT doPut
DELETE doDelete

三、获取请求数据

1️⃣ 获取请求参数

String name = req.getParameter("name");

2️⃣ 获取请求头

String userAgent = req.getHeader("User-Agent");

3️⃣ 获取请求方式

String method = req.getMethod();

4️⃣ 获取路径信息

String uri = req.getRequestURI();
String url = req.getRequestURL().toString();

四、返回响应

1️⃣ 设置响应类型和编码

resp.setContentType("text/html;charset=UTF-8");

2️⃣ 写回数据

PrintWriter out = resp.getWriter();
out.write("Hello Servlet");

3️⃣ 返回 JSON(常见)

resp.setContentType("application/json;charset=UTF-8");
resp.getWriter().write("{\"msg\":\"success\"}");

五、Servlet 配置方式

方式一:注解(推荐)

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
}

方式二:web.xml

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
</servlet>

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

六、请求转发与重定向

请求转发(服务器内部)

req.getRequestDispatcher("/result.jsp").forward(req, resp);

重定向(客户端)

resp.sendRedirect("result.jsp");

七、Servlet 生命周期(简单了解)

  1. init() —— 初始化(只一次)
  2. service() —— 每次请求调用
  3. doGet / doPost
  4. destroy() —— 销毁

八、简单完整示例

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        String user = req.getParameter("username");
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("欢迎:" + user);
    }
}

如果你愿意,我也可以:

  • 用 Spring MVC 对比 Servlet
  • 讲 Servlet + JSP
  • 写 前后端分离接口示例
  • 讲 请求乱码问题

你想看哪一个?

向AI问一下细节

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

AI
助
手