JSP跳转

本文深入探讨了JSP页面跳转的概念及其应用,详细介绍了使用<jsp:forward>指令进行页面间请求传递的方法,包括跳转的基本语法、跳转与response.sendRedirect的区别,以及如何在跳转过程中传递参数。

JSP跳转


跳转的作用

在WEB中可以使用<jsp:forward>指令,将一个用户的请求(request),从一个页面传递到另外一个页面

页面跳转语法:
不传递参数:
<jsp:forward page="{要包含的文件路径 | <%=表达式%>}"/>

传递参数:
<jsp:forward page="{要包含的文件路径 | <%=表达式%>}">

  <jsp:param name="参数名称" value="参数内容"/>

  ... 可以向被包含页面中传递多个参数

  </jsp:forward>


<span style="font-size:18px;">/*jumpSrc.jsp*/
<%@ page language="java" contentType="text/html; charset=utf8"  pageEncoding="utf8" %>
<jsp:forward page="jumpDes.jsp" >
<jsp:param name="name" value="zhang"/>
<jsp:param name="password" value="wang"/>
</jsp:forward>
<h2>jumpSrc.jsp</h2>

/*jumpDes.jsp*/
<%@ page language="java" contentType="text/html; charset=utf8"  pageEncoding="utf8"%>
name=<%=request.getParameter("name") %>
password=<%=request.getParameter("password") %>
<h2>jumpDes.jsp</h2></span>


<jsp:forward>与response.sendRedirect的区别

<jsp:forward>:
  1. 使用同一个request
  2. forward后的语句不会继续发送给客户端
  3. 速度快
  4. 服务器内部转换,
  5. 可以传参数
response.sendRedirect:
  1. 不同的request
  2. send后的语句会继续执行,除非return
  3. 速度慢
  4. 需要到客户端的往返,可以转到任何页面
  5. 可以传参数,直接写在url后面
使用跳转可以完成页面请求的传递。
跳转操作属于服务器端跳转,跳转之后的页面路径不改变



### SpringMVC 中 JSP 页面跳转的实现方式 在 SpringMVC 框架中,可以通过多种方式实现 JSP 页面之间的跳转。以下是几种常见的实现方式及其对应的代码示例。 #### 方法一:使用 `ModelAndView` 对象 通过返回一个 `ModelAndView` 对象来指定要跳转的目标视图名称以及传递的数据[^1]。 ```java @Controller public class ExampleController { @RequestMapping("/example1") public ModelAndView exampleMethod() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "This is a message from the controller."); modelAndView.setViewName("targetPage"); // targetPage 是目标 JSP 文件的名字(不带 .jsp 后缀) return modelAndView; } } ``` --- #### 方法二:返回字符串形式的视图名称 可以直接返回一个表示视图名称的字符串,SpringMVC 会自动将其交给视图解析器处理[^5]。 ```java @Controller public class ExampleController { @RequestMapping("/example2") public String exampleMethod(Model model) { model.addAttribute("message", "This is another message from the controller."); return "targetPage"; // 返回值为目标 JSP 的名字(不带 .jsp 后缀),由视图解析器完成最终定位 } } ``` --- #### 方法三:请求转发 如果希望在同一服务器内部进行页面跳转而不改变 URL 地址,则可以使用请求转发的方式[^3]。 ```java @Controller public class ForwardController { @RequestMapping("/forwardExample") public void forwardExample(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("message", "Forwarded message"); request.getRequestDispatcher("/WEB-INF/views/targetPage.jsp").forward(request, response); } } ``` > **注意**:这里 `/WEB-INF/views/targetPage.jsp` 表示具体的物理路径,通常位于项目的 Web 应用目录下。 --- #### 方法四:重定向到另一个 URL 或页面 当需要客户端重新发起一次新的 HTTP 请求时,可以选择重定向的方式[^4]。 ```java @Controller public class RedirectController { @RequestMapping("/redirectExample") public String redirectExample() { return "redirect:/anotherPage.jsp"; // 将用户重定向至 /anotherPage.jsp 页面 } @RequestMapping("/redirectExternal") public String redirectToExternalSite() { return "redirect:http://www.example.com"; // 可以重定向到外部站点 } } ``` --- #### 方法五:返回 JSON 数据而非页面跳转 某些情况下可能不需要直接跳转到某个页面,而是向前端发送 JSON 格式的响应数据。 ```java @RestController public class JsonController { @RequestMapping(value = "/jsonExample", produces = "application/json;charset=UTF-8") public Map<String, Object> jsonExample() { Map<String, Object> resultMap = new HashMap<>(); resultMap.put("status", "success"); resultMap.put("data", "Some data to be returned as JSON."); return resultMap; // 自动转换为 JSON 并返回给前端 } } ``` --- ### 总结 以上介绍了五种不同的页面跳转或数据返回机制,在实际开发过程中可以根据具体需求选择合适的方式来实现功能逻辑。无论是基于 `ModelAndView`、字符串返回值还是其他高级特性,都需要确保配置好视图解析器并合理设计控制器层接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值