request请求转发和request域运用
1.请求转发
1.概述:让服务器跳转到另一个资源上
2.方法
1.request.getRequestDispatcher("跳转资源路径").forward(request, response);
2.域对象
1.作用:实现servlet与servlet之间的数据传输功能
2.例如:Request本质上就是一个域对象, 域对象就是一个容器。
3.域对象的方法
1.request.setAttribute(key,value);往request对象中存数据
2.requet.getAttribute(key) 从request对象中取数据
3.request.removeAttribute(key) 删除request中的数据。
4.域对象存储数据的方式是键值对
4.代码
1.Html代码:
<html>
<head>
<title>reg.html</title>
</head>
<body>
<form action="/day36_login/userServlet" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
2.UserServlet代码:
public class UserServlet extends HttpServlet {
private UserDao userDao = new UserDao();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//解决乱码
request.setCharacterEncoding("utf-8");
//获取请求参数
String userName = request.getParameter("username");
String password = request.getParameter("password");
User user = new User(userName,password);
//把数据存储到数据库中
userDao.save(user);
// 往request域对象存储数据
request.setAttribute("USER",user);
//跳转到另外一个Servlet上显示注册是否成功的信息。
request.getRequestDispatcher("/infoServlet").forward(request, response); //请求转发,跳转到infoServlet
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
3.InfoServlet代码:
public class InfoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//从域对象对象中取出数据
User user = (User) request.getAttribute("USER");(强转)
OutputStream out = response.getOutputStream();
out.write(("<h1>恭喜"+user.getUsername()+"注册成功</h1>").getBytes());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~