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");%>
用户名: ${result.userName}
密码: ${result.passwd}
运行结果
访问地址是
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']}
运行结果