浅谈Springmvc中的页面跳转问题

SpringMvc跳转问题

SpringMvc的Controller每次处理完数据后都会返回一个逻辑视图(view)和模型(model)

所以我们会看到原生的Controller是返回一个ModelAndView(内部包含了view和model)。

正常情况下(除非被@ModelAttribute注解了的方法),否则最终都会返回ModelAndView。

当然有时候一个功能处理方法不一定要返回一个逻辑视图,也可以重定向到另一个功能方法

服务器内部转发到一个逻辑视图或者另一个功能方法。

---

SpringMvc的强大之处在于它封装了Servlet大量底层代码,但是有没有完全屏蔽用户对ServletAPI

的使用。所以SpringMvc中页面跳转也是分为两大类:

使用ServletAPI实现页面跳转

重定向方式:由于重定向的本质是要求浏览器重新发送一个请求,SpringMvc里面的页面一般是放到WEB-INF下,浏览器不可以直接访问)

所以这里的重定向实质是重定向到另一个功能方法。

服务器内部请求转发:请求转发为服务器内部行为,所以可以直接跳转访问一个jsp页面也可以跳转到另一个功能处理方法。

```text

//使用原生的ServletApi进行页面跳转
@RequestMapping("/c")
public String test(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException {
System.out.println("testC");
//跳转到服务器内部的一个页面
//request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request,response);
  //跳转到服务器内部的一个功能处理方法
  //request.getRequestDispatcher("/dispather/b").forward(request,response);
  //重定向一个功能方法
  response.sendRedirect(request.getContextPath()+"/dispather/b");
  return null;
 }

使用SpringMvc的API实现页面跳转

直接返回逻辑视图名

text @RequestMapping("/b") public String testB(){ System.out.println("testB"); //直接返回一个视图 return "index"; }

返回自定义的ModelAndView:自定义ModelAndView时,可以重定向或请求转发

```text

//Controller中使用ModelAndView进行跳转和重定向
@RequestMapping("/e")
public ModelAndView testE(){
System.out.println("testE");
//跳转到服务器内部的一个页面
//return "index";
 //跳转到服务器内部的一个功能处理方法
 //return new ModelAndView("forward:/dispather/b");
 //重定向一个功能方法
 return new ModelAndView("redirect:/dispather/b");
}

总结

以上就是本文关于浅谈Springmvc中的页面跳转问题的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

参考:

Java编程实现springMVC简单登录实例

SpringMVC拦截器实现单点登录

springmvc Rest风格介绍及实现代码示例

您可能感兴趣的文章:

  • Java编程实现springMVC简单登录实例
  • SpringMVC拦截器实现单点登录
  • springmvc Rest风格介绍及实现代码示例
  • java springmvc实现验证码功能
  • 详解自定义SpringMVC的Http信息转换器的使用
  • SpringMVC 限流的示例代码
  • springmvc限流拦截器的示例代码
  • springMVC前台传数组类型,后台用list类型接收实例代码
(0)

相关推荐

  • SpringMVC 限流的示例代码

    在使用SpringBoot做接口访问如何做接口的限流,这里我们可以使用google的Guava包来实现,当然我们也可以自己实现限流,Guava中的限流是久经考验的我们没必需重新再去写一个,如果想了解限流原理的同学可以自己查阅一下相关的资料,本文不作过来说明噢. 使用说明 在项目中引入Guava相关包 http://mvnrepository.com/artifact/com.google.guava/guava/21.0 maven项目 <!-- https://mvnrepository.co

  • Java编程实现springMVC简单登录实例

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等. 1.新建web项目:springmvc 2.导入springmvc需要的jar包 3.配置web.xml文件(核心代码)

  • SpringMVC拦截器实现单点登录

    单点登录的功能在实际的应用场景中还是很重要的,逻辑上我们也不允许一个用户同时在进行着两个操作,下面就来了解一下SpringMVC的单点登录实现 SpringMVC的拦截器不同于Spring的拦截器,SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet,所以只需要在DispatcherServlet上做文章即可,DispatcherServlet也没有代理,同时SpringMVC管理的Controller也不有代理. 1,先探究一个

  • springmvc限流拦截器的示例代码

    限流器算法 目前常用限流器算法为两种:令牌桶算法和漏桶算法,主要区别在于:漏桶算法能够强行限制请求速率,平滑突发请求,而令牌桶算法在限定平均速率的情况下,允许一定量的突发请求 下面是从网上找到的两张算法图示,就很容易区分这两种算法的特性了 漏桶算法 令牌桶算法 针对接口来说,一般会允许处理一定量突发请求,只要求限制平均速率,所以令牌桶算法更加常见. 令牌桶算法工具RateLimiter 目前本人常用的令牌桶算法实现类当属google guava的RateLimiter,guava不仅实现了令牌桶

  • springMVC前台传数组类型,后台用list类型接收实例代码

    springMVC后台处理数组对象. list类型的参数,接收前台的数组值,实验了一下,结果还真可以. 不用绑定到对象里面. 当然我这个是前台传递了个包含的是string的数组到后台,然后,后台用list来接收. 具体如下: 前台代码: //发送请求到后台,带数组形式的数据. function testList() { var data = getTreeViewCheckedData(); $.ajax({ url: APP_NAME + "xxxx/testList", data:

  • springmvc Rest风格介绍及实现代码示例

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用,POST, DELETE, PUT, GET 分别对应 CRUD.Spring3.0 开始支持 REST 风格的请求,是通过 org.springframework.web.filter.HiddenHttpMethodFilter 把 POST 请求转化为 PUT 和 DELETE

  • java springmvc实现验证码功能

    本文实例为大家分享了springmvc实现验证码功能展示的具体代码,供大家参考,具体内容如下 先看效果图: 思路: 首先验证码是一张图片,是一张有着随机字母.数字.图案等组成的图片,所以这图片肯定不是固定不变的,肯定是由后端随机制造出来的,前端用img的src去不断访问这个制造的方法. 第一步:前端页面编写 登录使用的是ajax方法,所以使用的是调用点击事件进行,验证码的图片放在a标签中是为了方便点击变换验证码.显示图片用的是img的src属性,因为使用的是spingmvc所以调用后台方法使用a

  • 详解自定义SpringMVC的Http信息转换器的使用

    在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制.使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上. HttpInputMessage 这个类是SpringMVC内部对一次Http请求报文的抽象,在HttpMessageConverter的read()方法中,有一个HttpInputMessage的形参,它正是SpringM

  • 浅谈Springmvc中的页面跳转问题

    SpringMvc跳转问题 SpringMvc的Controller每次处理完数据后都会返回一个逻辑视图(view)和模型(model) 所以我们会看到原生的Controller是返回一个ModelAndView(内部包含了view和model). 正常情况下(除非被@ModelAttribute注解了的方法),否则最终都会返回ModelAndView. 当然有时候一个功能处理方法不一定要返回一个逻辑视图,也可以重定向到另一个功能方法 服务器内部转发到一个逻辑视图或者另一个功能方法. --- S

  • 浅谈SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2.SpringMVC特有的@SessionAttributes 我个人比较关注@SessionAttributes的用法,毕竟现在是在用SpringMVC嘛.但是我看网上那些文章,基本都是只说明了基础用法,详细的使用和细节却基本没有,我想这是不够的,所以我自己做了一些测试,然后整理了下代码做了个de

  • 浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)

    我这里往后端传递checkbox 多选框value的值是通过字符串方式传递,先调用js对选定checkbox遍历获取选的的boxvalue,然后写进隐藏域,最后作文对象的属性提交.见代码:` 前端: <form:form commandName="user" method="post"> <c:forEach items="${deploys}" var="deploy" varStatus="de

  • 浅谈angularJS2中的界面跳转方法

    链接参数数组保存路由导航时所需的成分: 指向目标组件的那个路由的路径(path) 必备路由参数和可选路由参数,它们将进入该路由的URL 我们可以把RouterLink指令绑定到一个数组,就像这样: <a [routerLink]="['/heroes']">Heroes</a> 在指定路由参数时,我们写过一个双元素的数组,就像这样: this.router.navigate(['/hero', hero.id]); 我们可以在对象中提供可选的路由参数,就像这样:

  • 浅谈springMVC中controller的几种返回类型

    Controller方法的返回值可以有以下几种: 1.返回ModelAndView 返回ModelAndView时最常见的一种返回结果.需要在方法结束的时候定义一个ModelAndView对象,并对Model和View分别进行设置. 2.返回String 1):字符串代表逻辑视图名 真实的访问路径="前缀"+逻辑视图名+"后缀" 注意:如果返回的String代表逻辑视图名的话,那么Model的返回方式如下: public String testController(

  • 浅谈SpringMVC中Interceptor和Filter区别

    Interceptor 主要作用:拦截用户请求,进行处理,比如判断用户登录情况.权限验证,只要针对Controller请求进行处理,是通过HandlerInterceptor. Interceptor分两种情况,一种是对会话的拦截,实现spring的HandlerInterceptor接口并注册到mvc的拦截队列中,其中preHandle()方法在调用Handler之前进行拦截(上图步骤3),postHandle()方法在视图渲染之前调用(上图步骤5),afterCompletion()方法在返

  • 浅谈django中的认证与登录

    认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否正确 一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的.当我们试图登陆一个从数据库中直接取出来不经过authent

  • 浅谈jquery中ajax跨域提交的时候会有2次请求的问题

    我们平时在同域中请求页面什么的时候不会有这种情况,这种情况大多发生在移动端的跨域请求中发生的. 解决方法就是在服务端中加一层过滤HTTP请求的类型,把OPTION等不用的类型过滤掉.就是当请求为非 HTTP中的 GET 和 POST的时候就不执行下面的代码,这样就可以只执行一次请求了. 在ASP.NET中我们用 Request.ServerVariables["REQUEST_METHOD"] == "POST" 或者 Request.ServerVariables

  • 浅谈springMVC接收前端json数据的总结

    对于json对象类型(即JsonObject)的数据,springMVC主要有以下几种方式接收: 1.通过Map接收 @RequestMapping(value = "/getAllStudio" ) public void getAllStudio(@RequestBody Map<String, Integer> map ) { JSONObject json = new JSONObject(); Integer page = map.get("page&q

  • 浅谈ajax请求不同页面的微信JSSDK问题

    问题场景: 我在A页面有一个表单内容需要使用蓝牙打印机打印,填完表单信息,并通过ajax请求发送到 B文件(PHP)中处理信息,正常通过form表单跳转到B页面后,是可以打印出来的,因为B页面中除了处理 数据的PHP之外还混合了 JS代码,也就是JSSDK部分.然而通过ajax请求发送过去,则无响应,所有jssdk除了wx.ready和wx.config之外都无法执行.(A.B两个文件都有wx.config,wx.ready配置) 比如发送数据的参数: wx.invoke('sendDataTo

随机推荐