之前无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转。

这一篇练习如何进行客户端跳转

@

修改IndexController

首先映射/jump到jump()方法

在jump()中编写如下代码

ModelAndView mav = new ModelAndView("redirect:/index");

redirect:/index

即表示客户端跳转的意思

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class IndexController {
@RequestMapping("/index")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("index");
mav.addObject("message", "Hello Spring MVC");
return mav;
} @RequestMapping("/jump")
public ModelAndView jump() {
ModelAndView mav = new ModelAndView("redirect:/index");
return mav;
} }

效果

访问页面

http://localhost:8888/springmvc/jump

结果跳转到了

客户端转发和服务端转发

redirect:xxx forward:xxx
客户端跳转 服务端转发
url会跟随着变,变为xxx ,这时已是全新的独立的请求,不能够再使用前面获得的数据 url保持不变,且原获取到的值,在xxx 控制器下依旧能够用

xxx 是Controller 的映射值

    @RequestMapping("/Annotation")
public ModelAndView annotation() {
ModelAndView modelAndView = new ModelAndView("annotation");
modelAndView.addObject("message", "注解形式的Controller");
return modelAndView;
} @RequestMapping("/addPojo")
public ModelAndView addPojo(Pojo pojo) {
ModelAndView modelAndView = new ModelAndView("redirect:/Annotation"); // 前者客户端跳转 , 这个 forward:/Annotation 服务端转发
return modelAndView;
} // annotation.jsp
<body>
<h1>${message }</h1>
<h2>${pojo.id }</h2> // redirect 即客户端跳转 ,这里将获取不到值(不会报错) ; forward 即服务端转发,能够将addPojo方法获得的pojo 信息在这里信息
<h2>${pojo.name }</h2> // redirect 即客户端跳转 ,这里将获取不到值(不会报错) ; forward 即服务端转发,能够将addPojo方法获得的pojo 信息在这里信息
</body>

ModelAndView

modelandview 对象 添加的键值传给jsp前端

   ModelAndView m=new ModelAndVies();//对象
m.addObject("keyname",values); //jsp通过键名获取值,值可以使基本类型 pojo类 object
m.setViewName("jsp路径");//前端页面
return m;

为什么redirect 跳转到的是index而不是index.jsp?

前面的springmvc-servlet中已经定义了
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 作用是把视图约定在/WEB-INF/page/*.jsp这个位置-->
<property name="prefix" value="/WEB-INF/page/" />
<!--拦截jsp文件 -->
<property name="suffix" value=".jsp" />

SpringMVC实现客户端跳转的更多相关文章

  1. SpringMvc的服务器端跳转和客户端跳转

    首先,找到 package org.springframework.web.servlet.view; public class InternalResourceViewResolver extend ...

  2. Web开发中的服务器跳转与客户端跳转

    两者比较如下: 跳转类型  客户端请求次数 服务端响应次数 URL变化 站外跳转 作用域 服务器跳转 1 1 无 否 pageContext.request.session.application 客 ...

  3. SpringMVC处理客户端请求的过程

    SpringMVC处理客户端请求的过程 以程序部署在Tomcat上为例,网站程序使用SpringMVC框架开发. 1.客户端发起一个访问网站的请求(如: localhost:8080/index). ...

  4. 在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别

    jsp中常用的几个内置对象: 一.request对象 主要作用:  (1)获取请求页面的信息   比如:request.getParameter("参数名");  (2)获取客户端 ...

  5. SpringMVC从Controller跳转到另一个Controller(转)

    http://blog.csdn.net/jackpk/article/details/44117603 [PK亲测] 能正常跳转的写法如下: return "forward:aaaa/bb ...

  6. JSP中客户端跳转与服务器端跳转的区别

    转载自:https://www.cnblogs.com/memewry/archive/2012/08/21/2649988.html 客户端跳转时用HttPservletResopse对象的send ...

  7. Servlet(11)—客户端跳转和服务端跳转

    客户端跳转: 1.链接跳转:< a href="">< /a > 2.表单提交< form>< /form> 3.Response. ...

  8. [Java]Get与Post,客户端跳转与服务器端跳转

    http://www.thinksaas.cn/group/topic/133101/ 虽然说get 与post 问题很老套了,但是作为web 开发人员来说对于这个的理解确实很有必要,其实说到get  ...

  9. Http客户端跳转和服务器端跳转的区别

    服务器端跳转:      服务器转发全程是没有客户端参与的,都在web container容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转. 这次forward, 服务器没有构建H ...

随机推荐

  1. ken桑带你读源码 之scrapy pipelines\images.py

    大家先看看 http://www.cnblogs.com/attitudeY/p/7078559.html 下面我做一些补充   最新版本1.1 已经支持 下载路径保存到  item   48行    ...

  2. 看完这一篇,再也不怕面试官问到IntentService的原理

    IntentService是什么 在内部封装了 Handler.消息队列的一个Service子类,适合在后台执行一系列串行依次执行的耗时异步任务,方便了我们的日常coding(普通的Service则是 ...

  3. Python globals和locals函数_reload函数

    Python globals和locals函数_reload函数: globals( ): 返回所有能够访问到的全局名字 num = 5 sum = 0 def add(num): func_sum ...

  4. Python 字典(Dictionary) items()方法

    描述 Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组.高佣联盟 www.cgewang.com 语法 items()方法语法: dict.it ...

  5. PDO::inTransaction

    PDO::inTransaction — 检查是否在一个事务内(PHP 5 >= 5.3.3, Bundled pdo_pgsql) 说明 语法 bool PDO::inTransaction ...

  6. luogu P4166 [SCOI2007]最大土地面积 凸包 旋转卡壳

    LINK:最大土地面积 容易想到四边形的边在凸包上面 考虑暴力枚举凸包上的四个点计算面积. 不过可以想到可以直接枚举对角线的两个点找到再在两边各找一个点 这样复杂度为\(n^3\) 可以得到50分. ...

  7. SpringBoot2 整合 Swagger2文档 使用BootstrapUI页面

    SpringBoot2 整合 Swagger2 SpringBoot整合三板斧 第一步.引入pom <dependency> <groupId>com.spring4all&l ...

  8. python金融大数据分析PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:7k4b 内容简介 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领域从业人员必读. Python凭借其简单.易读.可扩展性以及拥有巨大而活跃的科学计算社区 ...

  9. 7月13日考试 题解(DFS序+期望+线段树优化建图)

    T1 sign 题目大意:给出一棵 N 个节点的树,求所有起点为叶节点的有向路径,其 上每一条边权值和的和.N<=10000 水题.考试的时候毒瘤出题人(学长orz)把读入顺序改了一下,于是很多 ...

  10. 移动物体监控系统-sprint4嵌入式web服务器开发

    一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 c ...