`
baalwolf
  • 浏览: 351368 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在spring里的controller之间的跳转问题

 
阅读更多
昨天晚上学习spring的controller,发现controller之间的跳转有些地方搞的不是很清楚,如果通过controller的return语句实现跳转的话,会造成request的丢失,在网上google了一下,也发现同样的问题,但是没人给出答案。
小弟现在就给些解决方案:
首先一般的语句是:
return new ModelAndView("login");
其实这条语句是将一个login.jsp页面发送给客户端,而不是实现controller之间的跳转(昨晚就在这里郁闷了很久)
要实现controller的跳转,有两种方法:
1.return new ModelAndView(new RedirectView("rentHouse.htm?method=display"))
这个条语句是通过redirect的方式到另一个controller里面,这样做会丢失request,假如你想在两个controller之间共享数据的话,就只能通过往session里面塞值了,容易造成session过大,而占用太多内存.
2.使用传统的方式
this.getServletContext().getRequestDispatcher("/rentHouse.htm?method=display").forward(request,response);
return null;
这样的话,你也同样可以跳转到另一个controller,但是request里面的信息就不会丢失。
记得要 return null; 哦!
3.使用
return new ModelAndView("redirect:/rentHouse.htm?method=display"))


0
3
分享到:
评论
2 楼 baalwolf 2011-11-28  
西门大官人 写道
一個實作View的實例例是org.springframework.web.servlet.view.RedirectView, ModelAndView預設是使用 轉發(Forward)方式來完成請求的結果畫面,使用RedirectView的話,則會使用重新導向(Redirect)將請求重導至指定的結果畫面 位置,以呈現請求的結果,例如:
...
public ModelAndView handleRequest(....) ... {
    ...
    return new ModelAndView(
                      new RedirectView(this.getViewPage()));
}
...

在這邊,viewPage所設定的位址要是從伺服器網頁根目錄開始指定,而不是Web應用程式的根目錄,所以您的getViewPage()傳回的位址必 須像是/FirstSpringMVC/pages/index.htm這樣的位址,其中FirstSpringMVC是您的Web應用程式目錄。

使用轉發(Forward)方式的話,網址列上並不會出現被轉發的目標位址,而且轉發方式是在Web應用程式之內進行,可以訪問Web應用程式所設定的內 部目錄,像是WEB-INF目錄,因而您可以將一些要控管存取的資源放到WEB-INF下,如此使用者就無法直接請求這些資源,而必須透過 DispatcherServlet與Controller的處理與控管,才可以取得這些資源,轉發方式只能在Web應用程式中進行,不能指定至其它的 Web應用程式位址。

使用重新導向(Redirect)的話,Web應用程式會要求客戶端瀏覽器重新發出一個所指定的請求位址,也就是實際上相當於客戶端重新連接至一個所指定 的位址,因此瀏覽器的位址列上會出現被重新導向的資訊,重新導向的請求是由瀏覽器發出,所以不能訪問Web應用程式中的隱藏目錄,像是WEB-INF,重 新導向是重新要求一個網頁,所以可以指定至其它的Web應用程式位址。

嗯 刚刚研究springmvc 没有深究 这些 仁兄提得建议让我又学会不少东西
1 楼 西门大官人 2011-11-24  
一個實作View的實例例是org.springframework.web.servlet.view.RedirectView, ModelAndView預設是使用 轉發(Forward)方式來完成請求的結果畫面,使用RedirectView的話,則會使用重新導向(Redirect)將請求重導至指定的結果畫面 位置,以呈現請求的結果,例如:
...
public ModelAndView handleRequest(....) ... {
    ...
    return new ModelAndView(
                      new RedirectView(this.getViewPage()));
}
...

在這邊,viewPage所設定的位址要是從伺服器網頁根目錄開始指定,而不是Web應用程式的根目錄,所以您的getViewPage()傳回的位址必 須像是/FirstSpringMVC/pages/index.htm這樣的位址,其中FirstSpringMVC是您的Web應用程式目錄。

使用轉發(Forward)方式的話,網址列上並不會出現被轉發的目標位址,而且轉發方式是在Web應用程式之內進行,可以訪問Web應用程式所設定的內 部目錄,像是WEB-INF目錄,因而您可以將一些要控管存取的資源放到WEB-INF下,如此使用者就無法直接請求這些資源,而必須透過 DispatcherServlet與Controller的處理與控管,才可以取得這些資源,轉發方式只能在Web應用程式中進行,不能指定至其它的 Web應用程式位址。

使用重新導向(Redirect)的話,Web應用程式會要求客戶端瀏覽器重新發出一個所指定的請求位址,也就是實際上相當於客戶端重新連接至一個所指定 的位址,因此瀏覽器的位址列上會出現被重新導向的資訊,重新導向的請求是由瀏覽器發出,所以不能訪問Web應用程式中的隱藏目錄,像是WEB-INF,重 新導向是重新要求一個網頁,所以可以指定至其它的Web應用程式位址。

相关推荐

    spring mvc controller间跳转 重定向 传参

    在 Spring MVC 框架中,controller 间跳转重定向传参是一个非常常见的需求。这里,我们将讨论三种常见的情况:不带参数跳转、带参数拼接 URL 形式跳转、带参数不拼接参数跳转。 一、不带参数跳转 在某些情况下,...

    SPring注解及页面跳转实例

    ### Spring MVC 注解及页面跳转实例解析 #### 一、Spring MVC 页面跳转实例概述 在本实例中,我们将构建一个简单的Spring MVC应用程序,演示如何处理HTTP请求并实现页面跳转。通过这个实例,我们可以了解Spring ...

    Spring 3.0 mvc 简单跳转 实例 源码

    在这个实例中,我们将深入探讨如何在Spring 3.0 MVC中实现简单的页面跳转,以及源码背后的逻辑。 1. **Spring MVC 框架简介** Spring MVC是Spring框架的一部分,它提供了一种模型-视图-控制器(MVC)架构,使得...

    Spring Controller拦截器配置

    在Spring框架中,拦截器(Interceptor)是一种重要的机制,用于对Controller的请求进行预处理和后处理。它可以用来实现一系列的功能,如权限验证、日志记录、统一的数据封装等。本文将详细介绍如何在Spring MVC中...

    Spring MVC点击链接,跳转到指定页面

    在Spring MVC框架中,网页间的跳转是通过控制器(Controller)处理请求并返回视图(View)来实现的。在给定的场景中,我们有一个简单的应用,用户在`index.jsp`页面上点击一个链接,目标是跳转到`success.jsp`页面。...

    Struts2+spring注解配置简介

    在上面的例子中,`saveUser`方法会被映射到"/saveUser"的URL,并且在成功执行后,会跳转到"success.jsp"页面。 Struts2与Spring的整合使得我们可以通过Spring的注解来管理Action类。首先,我们需要在Struts2的配置...

    SpringMVC中一个Controller多个方法

    在Spring MVC中,Controller类通常使用@Controller注解标识,并且可以包含多个处理请求的方法,这些方法通过@RequestMapping或其变体进行映射。 例如,假设我们有一个名为`UserController`的Controller类,我们可以...

    Spring boot 跳转到jsp页面的实现方法

    在Spring MVC中,为了定义控制器,使用了`@Controller`注解。如果需要返回视图名称,通常返回一个字符串,Spring MVC会根据配置的视图解析器去查找对应的视图进行渲染。此外,还可以使用`@RestController`注解,它...

    Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转

    在本主题中,我们将深入探讨Spring框架的Web应用程序开发,特别是如何通过简单的控制器来实现页面间的跳转。《Spring4 In Action》是Spring框架的经典学习资料,第五版的2.2章节聚焦于Spring MVC,它是Spring框架...

    spring跳转到jsp和接口共同存在

    在同一Spring Boot应用中,Controller方法可能既需要返回JSP视图,也可能需要提供API接口。例如,一个登录功能,用户通过表单提交时可以跳转到JSP页面显示结果,而API则提供无状态的JSON响应。 - 对于返回JSP的...

    Spring MVC学习笔记之Controller查找(基于Spring4.0.3)

    在Spring 4.0.3版本中,Controller的查找机制是整个请求处理流程的关键环节。本文将深入探讨这一过程,从源码层面解析Spring MVC如何定位到相应的Controller。 首先,我们了解Spring MVC的请求处理流程。当一个HTTP...

    SpringBoot实现jsp页面跳转简单实例

    在Spring Boot框架中,开发Web应用时,...尽管Spring Boot推崇更加现代的开发方式,但了解如何在传统技术与新框架之间融合是非常有益的。这有助于我们更好地理解Web应用的全貌,以及如何在不同的项目需求下做出选择。

    spring boot使用thymeleaf跳转页面实例代码

    这篇教程将深入讲解如何在Spring Boot应用中使用Thymeleaf进行页面跳转。 首先,让我们了解Thymeleaf的基本概念。Thymeleaf是一个基于XML、HTML的模板引擎,它能够处理服务器端的动态数据,并将其插入到HTML页面中...

    springmvc_controller_01

    在 Spring MVC 中,Controller 通常是一个实现了 `org.springframework.web.bind.annotation.Controller` 或 `org.springframework.stereotype.Controller` 注解的 Java 类。 2. **注解驱动的 Controller**:Spring...

    JAVA元数据编程零接触 -- 实现简单的MVC跳转控制雏形

    本篇文章将探讨如何在Java环境中,利用元数据编程实现一个简单的MVC(Model-View-Controller)跳转控制雏形。我们将主要关注Spring框架中的元数据编程概念,特别是基于注解的IoC(Inversion of Control,控制反转)...

    Spring boot +jsp+mysql空白模板 解决刚开始试用springboot +jsp页面跳转404的问题

    在Spring Boot框架中,开发Web应用时经常遇到的一个问题是页面跳转失败,特别是当尝试将JSP页面与Spring Boot结合时,可能会遇到404错误。这个问题通常涉及到多个配置方面,包括视图解析器的设置、静态资源处理、...

    spring-petsore spring官方最新demo

    在PetClinic中,Spring MVC扮演着控制器的角色,通过定义`@Controller`注解的类和`@RequestMapping`注解的方法来处理HTTP请求。这些控制器方法会根据URL路径来处理特定的业务逻辑,并将结果返回给客户端。例如,`...

    spring flow Demo例子

    - Spring Web Flow提供了一种在流程间持久化模型对象的方式,即使在页面跳转后,也能保持模型数据。 - 模型对象可以在Flow级别或状态级别进行绑定,通过`model`元素定义。 4. **视图分辨率**: - Spring Web ...

    intellij-spring-assistant-1.0.4.zip

    1. 自动代码补全:Spring Assistant能识别Spring相关的注解,如@Service、@Repository、@Controller等,并提供智能的代码补全,帮助开发者快速完成类、方法的声明。 2. 快速导航:通过快捷键或菜单,可以快速跳转到...

Global site tag (gtag.js) - Google Analytics