Java Web Servlet 传值给 jsp 的方法

2026-01-31 00:29:43 世界杯冠军最多

使用 request 传值

使用步骤

在 Servlet 里的 doGet 或 doPost 使用 req.setAttribute(String name, Object o) 方法设置要传值的键值对

继续使用 req.getRequestDispatcher(String path) 得到 RequestDispatcher 对象

使用 requestDispatcher.forward(ServletRequest request, ServletResponse response) 调用指定 jsp 文件

在 jsp 里 使用 el 表达式 或 常量表达式 来获取传递的值

注意:访问时需要访问 Servlet 的路由才行,不能访问 jsp 文件,不然是没法传值的

具体代码

Servlet 部分

package com.mrx.myservlet

import com.mrx.myservlet.been.UserBeen

import javax.servlet.annotation.WebServlet

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

@WebServlet(name = "登录接口", value = ["/login"])

class Login : HttpServlet() {

override fun doGet(req: HttpServletRequest?, resp: HttpServletResponse?) {

resp?.let {

it.contentType = "text/html"

it.status = 403

it.writer.println("FuckYOU!")

}

}

override fun doPost(req: HttpServletRequest?, resp: HttpServletResponse?) {

req?.characterEncoding = Charsets.UTF_8.toString()

val userName = req?.getParameter("u").toString()

val passwd = req?.getParameter("p").toString()

val user = UserBeen(userName, passwd)

println(userName)

req?.let {

it.setAttribute("result", user)

it.getRequestDispatcher("/index.jsp").forward(it, resp)

}

}

}

jsp 部分

<%@ page

contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"

%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%request.setCharacterEncoding("UTF-8");%>

JSP - Hello World

用户名:

密码:

用户名: ${result.userName}

密码: ${result.passwd}


Hello Servlet

运行结果

访问地址是

http://localhost:8080/Gradle___com_mrx___MyServlet_1_0_SNAPSHOT_war/

点击 登录 按钮后的访问地址是

http://localhost:8080/Gradle___com_mrx___MyServlet_1_0_SNAPSHOT_war/login

使用 cookie 传值

使用步骤

使用 HttpServletResponse 的 addCookie(Cookie cookie) 方法向 response 添加 cookie

一样的,使用 RequestDispatcher 转发请求给 jsp 好让浏览器刷新页面

在 jsp 里使用 cookie.get("key").value 就能得到值

核心代码

大部分都和上头的一样,这里只贴出核心部分

Servlet 部分

val user = UserBeen(userName, passwd)

val cookies = user.toCookie()

resp?.let {

for (cookie in cookies) {

it.addCookie(cookie)

}

}

jsp 部分

欢迎回来 ${cookie['userName'].value}

运行结果

使用 session 传值

使用步骤

在 Servlet 里使用 HttpServletRequest 的 getSession() 方法,获取 session

使用 HttpSession 的 setAttribute(String name, Object value) 方法,设置 session 键值对

一样的,使用 RequestDispatcher 转发请求给 jsp 好让浏览器刷新页面

jsp 里使用 sessionScope 获取 session 的值

核心代码

Servlet

req?.let {

it.session.setAttribute("mySession", user)

it.setAttribute("result", user)

it.getRequestDispatcher("/index.jsp").forward(it, resp)

}

jsp

来自 session 的消息 -> ${sessionScope['mySession']}

运行结果