`

forward:hello 与 redirect:hello的区别

阅读更多

对于某些Controller的处理方法,当返回值为String类型时,返回的结果中可能含有forward或redirect前缀;

如:

@Controller
@RequestMapping("/user")
public class UserController {
	@RequestMapping("/forward")
	public String replyWithForward(HttpServletRequest request, String userId){
		request.setAttribute("userid", userId);
		
		System.out.println("userId =" +userId);
		
		return "forward:hello";
	}
	
	@RequestMapping("/redirect")
	public String replyWithRedirect(HttpServletRequest request, String userId){
		request.setAttribute("userid", userId);
		
		System.out.println("userId = "+userId);
		
		return "redirect:hello";
	}
}

 测试页面hello.jsp;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
 	String userId = (String)request.getAttribute("userid");   
 	System.out.println("获取到的userId为:"+userId);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试页面</title>
</head>
<body>
	hello, <%= userId %>;
</body>
</html>

 当路径为 http://localhost:8080/crazysnailweb/user/forward?userId=123时,浏览器中的URL不会发生变化,且页面输出:

      

 当路径为http://localhost:8080/crazysnailweb/user/redirect?userId=123 时,浏览器中URL变为http://localhost:8080/crazysnailweb/user/hello,且页面输出:

      

注:redirect会让浏览器发起一个新的请求,因而原来request对象中的参数丢失;而forward所到的目标地址位于当前请求中,request中的参数不会丢失;
 

 

 

 

 

  • 大小: 516 Bytes
  • 大小: 495 Bytes
分享到:
评论

相关推荐

    SpringMVC核心技术精讲.docx

    - 当处理器方法返回`ModelAndView`时,可以在`setViewName()`中添加`redirect:`前缀,如`mv.setViewName("redirect:/hello.jsp");` - 如果处理器方法返回`String`,则直接返回包含`redirect:`前缀的视图字符串,如`...

    SpringMVCDemo

    - **转发(Forward)**:使用`forward:`前缀,如`return "forward:/otherPage"`,在服务器内部完成请求的转发,不涉及浏览器的重新请求。 5. **简化配置的WebApplicationInitializer** 对于现代Spring应用,可以...

    SQlServer面试题

    * session:与请求有关的会话期 * application:servlet正在执行的内容 * out:用来传送回应的输出 * config:servlet的构架部件 * page:JSP网页本身 * exception:针对错误网页,未捕捉的例外 2. JSP共有6种...

    8_SpringMVC笔记.pdf

    在ModelAndView对象中,`setViewName("forward:/path")`表示转发,`setViewName("redirect:/path")`表示重定向。 6. 注解驱动: 为了进一步简化编码,SpringMVC提供了`@EnableWebMvc`或在`&lt;mvc:annotation-driven/&gt;...

    Java Web开发工程师笔试题1.docx

    16. forward和redirect的区别: - forward:内部重定向,浏览器地址栏不变,服务器控制页面跳转,适合同一应用内页面间跳转。 - redirect:外部重定向,浏览器发起新的HTTP请求,地址栏显示新URL,适用于跨域跳转...

    JAVA 基础题

    **题目内容:** `forward` 和 `redirect` 的区别。 **答案解析:** 在JSP和Servlet编程中,`forward` 和 `redirect` 都是用来控制页面跳转的方法,但它们之间存在显著差异: 1. **`forward`**:服务器内部的跳转,...

    简单谈谈SpringMVC转发和重定向的区别

    SpringMVC 转发和重定向的区别 SpringMVC 框架中,转发和重定向是两个常用的请求跳转方式,但它们之间有着本质的区别。本文将详细讲解 SpringMVC 中的转发和重定向的区别,并给出实践示例。 一、转发(Forward) ...

    实验2 Form表单和内置对象(一)1

    - **forward与redirect的区别**:`forward`是服务器内部的转发,用户浏览器的URL不会改变,而`redirect`是客户端的重定向,浏览器会发起新的HTTP请求,URL会显示新的地址。 - **getParameter()与getAttribute()的...

    Java面试宝典2010版.doc

    3. **Servlet API中forward()与redirect()的区别**: - `forward()`:服务器内部重定向,请求不会到达客户端,而是直接由服务器将请求转发到另一个资源。这意味着URL不会改变,且只执行一次请求。 - `redirect()`...

    jstl tags chm英文教程

    `&lt;c:redirect&gt;`用于客户端重定向,而`&lt;c:forward&gt;`用于服务器端请求转发。 ```jsp &lt;c:redirect url="/login.jsp" /&gt; &lt;c:forward url="/processForm.jsp" /&gt; ``` ### 8. `&lt;c:remove&gt;`标签 `&lt;c:remove&gt;`用于从指定...

    Javaweb请求转发及重定向实现详解

    三、请求转发与重定向的区别 请求转发和重定向都是实现页面跳转的机制,但是它们有着不同的实现机制和应用场景。 请求转发: * 请求地址不会发生改变 * 在同一个Controller中实现 * 使用forward关键字 重定向: ...

    servlet/jsp跳转

    6. **Eclipse与MyEclipse的区别**: - Eclipse是开源的IDE,而MyEclipse是基于Eclipse的商业集成开发环境,提供了更多针对Java Web开发的便利功能,如内置Tomcat服务器、代码提示、数据库管理工具等。 - 在Eclipse...

    jstl标签库的介绍

    - `&lt;c:redirect&gt;`和`&lt;c:forward&gt;`:处理页面跳转。 **EL(Expression Language)语言**: EL是一种轻量级的脚本语言,用于在JSP中简洁地访问和操作Java对象。它可以在属性值中使用,主要有以下特性: - ${...

    jsp入门教程

    - **Forward和Redirect的问题**:比较两者的优缺点,选择合适的跳转方式。 #### 第4章 四个作用域 - **作用域概念**:介绍PageScope、RequestScope、SessionScope和ApplicationScope四种作用域的区别。 - **例子:...

    java web-转发、重定向(csdn)————程序.pdf

    在Java Web开发中,转发(Forward)和重定向(Redirect)是两种常见的请求处理方式,它们在处理客户端请求和服务器响应时有着不同的机制和应用场景。 1. **转发(Forward)** - **原理**:转发是在服务器端内部...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_5_常用注解 共22页.pptx

    - **重定向和转发**:使用特定字符串前缀(如`redirect:`或`forward:`)实现重定向或转发操作。 - **JSON数据响应**:通过`@ResponseBody`注解配合Jackson等库直接返回JSON格式的数据。 #### 六、SpringMVC_5_常用...

    JSTL核心标签库使用范例

    7. `&lt;c:redirect&gt;`和`&lt;c:forward&gt;`:页面重定向和请求转发。用于控制请求的流向。 **二、JSTL核心标签库使用方法** 1. **引入JSTL库**:首先需要在项目中引入JSTL库,通常通过在WEB-INF/lib目录下添加jstl.jar和...

    Struts 初级八步 CHM 图文教程.rar

    它接收来自用户请求的参数,处理业务逻辑,并通过ActionForward或Redirect来决定视图的展示。 2. **配置文件**:Struts框架有两个重要的配置文件,`struts-config.xml`和`web.xml`。`struts-config.xml`定义了...

    jstl(jsp标准标签)

    - `&lt;c:redirect&gt;` 和 `&lt;c:forward&gt;`: 页面重定向和转发。 ### JSTL的fmt标签库 - `&lt;fmt:formatDate&gt;`: 格式化日期和时间。 - `&lt;fmt:formatNumber&gt;`: 格式化数字。 - `&lt;fmt:message&gt;`: 获取资源包中的消息,支持...

    JSP经典例子教程-100例

    JSP页面跳转有两种方式:使用`&lt;jsp:forward&gt;`标签和`&lt;c:redirect&gt;`标签。这两种方式都可以实现页面间的跳转,但具体实现机制有所不同。 - **使用&lt;jsp:forward&gt;标签**: ```jsp &lt;jsp:forward page="/newPage.jsp" ...

Global site tag (gtag.js) - Google Analytics