使用Servlet进行页面跳转的两种方式

使用Servlet进行页面跳转的两种方式

最近在一位朋友在学习JavaWeb相关的技术,刚好学到Java当中的Servlet,一个服务端的小程序。

在学习使用Servlet如何进行页面跳:一种方式是使用请求转发进行页面跳转,一种方式

是使用响应重定向。下面就来分别聊一聊这两种页面跳转方式。

首先有一个知识点需要注意,如果页面中的静态资源是放在web目录下,但不是在WEB-INF目录下,

则可以通过项目根路径 + 静态资源名称就可以直接访问。如下图所示,

如果是是将页面放在WEB-INF下面,则不能直接访问。

如下图所示,

WEB-INF下面的资源文件就需要通过Servlet去访问。

第一种方式,通过请求转发到某个页面,示例代码如下

@WebServlet("/toTest")public class RequestForwardServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // (1)请求的页面是直接放在 web 目录下,则可以直接写 // req.getRequestDispatcher("/test.html").forward(req, resp); // (2)请求的页面是是放在 WEB-INF 目录下,则路径需要加上 WEB-INF 这一级路径 req.getRequestDispatcher("WEB-INF/test2.html").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); }}

forward()方法更改为include方法效果是一样的,访问效果如下。

第二种方式是使用响应重定向,示例代码如下

@WebServlet("/toRedirect")public class ResponseSendRedirectServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // (1)跳转到外部服务器 // resp.sendRedirect("http://www.jd.com"); // (2)在内部服务器跳转,使用全路径 // resp.sendRedirect("http://localhost:8082/chapterNine/toTest"); // (3)在内部服务器跳转,使用简化写法,页面资源在web 目录下 // resp.sendRedirect(req.getContextPath() + "test.html"); // (4)在内部服务器跳转,使用简化写法,页面资源在WEB-INF 目录下,则需要重定向到另外一个Servlet,通过另外一个Servlet 去访问页面 resp.sendRedirect(req.getContextPath() + "/toTest"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); }}

测试结果如下,

两种页面跳转方式的区别:

(1)请求转发是一次请求-响应;响应重定向是两次请求-响应,相当于发起一次新的请求。

(2)请求转发地址栏地址不会发生改变;响应重定向的地址栏会发生改变。

(3)请求转发只能在当前服务器内部进行;响应重定向可以在在服务器内部进行,也可以重定向到外部服务器,比如百度、京东、淘宝等等。

(4)请求转发,request中的数据可以传递到下一个页面;响应重定向,request中数据会丢失。

相关推荐

2026世界杯预选赛:威尔士VS哈萨克斯坦前瞻与预测
365BET娱乐场下载

2026世界杯预选赛:威尔士VS哈萨克斯坦前瞻与预测

📅 12-29 👁️ 375
人民日报评“网骂”现象:是种病,得治
365平台是做什么的

人民日报评“网骂”现象:是种病,得治

📅 02-05 👁️ 8724
企业协同办公软件有哪些?11款热门产品横评
365bet365打不开

企业协同办公软件有哪些?11款热门产品横评

📅 08-01 👁️ 6425
App名字能否更改?探索应用改名的选项与规则
365BET娱乐场下载

App名字能否更改?探索应用改名的选项与规则

📅 09-29 👁️ 7936
Steam 上的 铁拳8 Fahkumram
365bet365打不开

Steam 上的 铁拳8 Fahkumram

📅 10-29 👁️ 3297
【ASUS(华硕)主板】ASUS(华硕)主板报价及图片大全
365BET娱乐场下载

【ASUS(华硕)主板】ASUS(华硕)主板报价及图片大全

📅 09-02 👁️ 9830
金秀贤买了三栋昂贵的“Galleria Foret”房屋......将其转换为金额
揭秘锤子与一加:UI设计谁更胜一筹?深度解析用户体验差异
速码!李沁近三年7部爆款剧大集合,2025古装剧《一笑随歌》待播