请求转发与重定向的区别
请求转发
请求转发是服务端的一种请求方式,相当于在服务端中直接请求某个资源。
RequestDispatcher rd=request.getRequestDispatcher("/demo1.jsp");
rd.forward(request,response);
//简写方式
request.getRequestDispatcher("/demo1.jsp").forward(request,response);
请求转发与重定向的区别
- 请求转发对于客户端浏览器而言是在一次请求与响应中完成,而重定向是在两次请求两次响应中完成。
- 请求转发并不会改变客户端浏览器的地址栏中的内容(不会改变URL)。而重定向会改变客户端浏览器地址栏中的内容(会改变URL)。
- 请求转发可以使用request对象传递数据,而重定向不能使用request对象传递数据。
- 如果是处理的DML(查询)操作,建议使用重定向方式为客户端浏览器产生响应,可以解决表单重复提交现象。
在Servlet中获取客户端浏览器所支持的语言,并通过JSP页面将客户端浏览器所支持的语言响应给客户端浏览器
servlet编写:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 在Servlet中获取客户端浏览器所支持的语言,
* 并通过JSP页面将客户端浏览器所支持的语言响应给客户端浏览器
*/
@WebServlet("/language")
public class LanguageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求头中所支持的语言
String header=req.getHeader("Accept-Language");
//将数据存放到request对象中
req.setAttribute("header",header);
//请求转发,跳转到showMsg.jsp页面
req.getRequestDispatcher("showMsg.jsp").forward(req,resp);
}
}
JSP编写:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String header=(String) request.getAttribute("header");
%>
<font color="#663399">
<%=header%>
</font>
</body>
</html>
/**
* 在Servlet中获取客户端浏览器所支持的语言,
* 并通过JSP页面将客户端浏览器所支持的语言响应给客户端浏览器
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?