springMVC中跳转问题
在使用SpringMVC时遇到了这个跳转的问题很头疼。现在总结出来,对以后的开发有所帮助。
、
1、可以采用ModelAndView:
@RequestMapping("test1")
public ModelAndView test(){
ModelAndView view = new ModelAndView();
view.addAllObjects(map);
view.setViewName("redirect:http://localhost:8080/springMVC1/test2");
return view;
}
如果需要在Controller之间传递参数的时候,这种方式只能通过在访问路径后面加上参数以及将参数放到session域中的方式传递参数。
这种方式也可用于实现Controller到页面之间的跳转。并且可以传参数
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("hello springMVC");
Map<String,String> map = new HashMap<String,String>();
map.put("msg", "你好Springmvc");
return new ModelAndView("/welcome","map",map);
}
ModelAndView构造方法中第一个参数是页面的访问路径(前面加上一个“/”表示从根路径开始。)后面两个参数就相当于键值对。在页面中通过el表达式取出键为map的值(map)${map}
ModelAndView跳转页面和跳转Controller的差距在于地址上跳转Controller有一个redirect:表示。跳转页面则没有
2、通过request.getRequestDispatch的方式跳转
public ModelAndView test(HttpServletRequest request,HttpServletResponse response){
try {
request.getRequestDispatcher("/test2").forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这种方式跳转到另一个页面时可以通过request.setAttribute(key,value)的方式将参数传到另一个Controller中。并且如果执行这个跳转以后,程序后面的代码就不会再执行了。
如果是想从Controller跳转到页面则只需要将地址改为页面的地址就可以了。
注意:
因为在项目里我需要从一个页面的Ajax请求到一个Controller进行处理该Ajax的请求,然后根据处理的结果跳转到不同的页面。我之前的做法是在处理Ajax请求的Controller里进行下一个页面的跳转。试了从处理该Ajax请求的Controller里直接跳转到下个页面,或是跳到下一个Controller在跳转到需要的页面中。使用了ModelAndView的方法和Request.getRequestDispatch 的方法都没有用,最终的目的都不会跳转到目的页面,出现两种问题:
1、使用Request的方法时,跳转一直跳到本页面
2、使用ModelAndView时,响应到了目的页面的内容,但是界面没有跳转
最后得出结论。使用这两中方方式都不会跳转,具体原因不知道。我想可能是使用Ajax请求一定会有一个放回的数据,所以SpringMVC不知道怎么处理放回数据和跳转页面的关系?
得出的一个解决办法是:
function test(){
$.ajax({
url:'testSkip/test3.do',
type:'post',
dataType:'json',
success:function(data){
console.info(data);
var url = data.url ;
alert(url);
window.location.href=url ;
},
error:function(){
alert("error");
}
});
}
@RequestMapping("test3")
@ResponseBody
public Object test3(){
Result result = new Result();
result.setUrl("testSkip2/test3.do");
return result ;
}
}
@Controller
@RequestMapping("testSkip2")
public class TestController2 {
@RequestMapping("test3")
public ModelAndView test2(){
System.out.println("跳转页面2.2");
return new ModelAndView("/company/company_on_line","result","数据"); }
}
在Ajax请求在两个Controller或是Controller与页面之间跳转之前插入一步回到原来的Ajax请求页面通过 window.location.href=url ; 再次发送请求。这是该请求的地址可以使一个Controller地址和页面地址。这是跳转就没问题。
springMVC中跳转问题的更多相关文章
- SpringMVC中跳转路径的问题
1. @RequestMapping 1)@RequestMapping既可以作用于类,也可以作用于方法 2)@RequestMapping中value值(即跳转的路径),可以加 "/&qu ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- Ajax发送POST请求SpringMVC页面跳转失败
问题描述:因为使用的是SpringMVC框架,所以想使用ModelAndView进行页面跳转.思路是发送POST请求,然后controller层中直接返回相应ModelAndView,但是这种方法不可 ...
- 9.springMVC中的拦截器
springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...
- 第五节 关于SpringMVC中Ajax的配置和应用[下午]
成熟,不是学会表达,而是学会咽下,当你一点一点学会克制住很多东西,才能驾驭好人生. 还有一周,祥云19就算结算了,一个半月的相处希望,胖先生算一个合格的老师 小白,小蔡,2婷婷,小猴,小恒,小崔,小龙 ...
- SpringMVC中注解和非注解方式下的映射器和适配器总结
1. 非注解方式 1.1 处理器适配器 上一节中使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapte ...
- 关于springMVC中component-scan的问题以及springmvc.xml整理
关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法 最近在学习使用springMVC+myba ...
- SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法
1.SpringMVC中通过@ResponseBody.@RequestParam默认值,@PathVariable的用法 package com.kuman.cartoon.controller.f ...
- SpringMVC中参数绑定
SpringMVC中请求参数的接收主要有两种方式, 一种是基于HttpServletRequest对象获取, 另外一种是通过Controller中的形参获取 一 通过HttpServletReque ...
随机推荐
- duang!!!为什么函数能够返回unique_ptr
C++虐我千百遍,我待C++如初恋 从智能指针说起 对高手而言.指针是上天入地的神器.对新手而言,那简直是灾难的源泉.高级语言如Java,C#都自己主动管理内存.你仅仅管new.不必担心内存释放问题. ...
- Android This Activity already has an action bar supplied by the window decor
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ ...
- java基础——static keyword小节
static 用于修饰成员 修饰成员变量和成员函数 被修饰过的成员的特点: 1.随着类的载入而载入 2.优先于对象而存在 3.被全部对象所共享 4.能够直接被类名调用
- [AH2017/HNOI2017] 礼物 解题报告 (FFT)
题目链接: https://www.luogu.org/problemnew/show/P3723 题目: 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自 ...
- sql server 查询某个表一直显示"正在执行中..."的问题
问题描述:只是单纯的执行了"select count(*) from 某表":数据表中只有一两条数据,能查询其他表,唯独这个表不能进行任何操作: 经百度搜索实验,发现应该是某个进程 ...
- python 3.x 学习笔记10 (析构函数and继承)
1.类变量的用途:大家公用的属性,节省开销(内存) 2.析构函数 在实例释放和销毁的时候执行的,通常用于做一些收尾工作,如关闭一些数据库链接和打开的临时文件 3.私有方法两个下划线开头,声明该方法为私 ...
- 转js调优
随着网络的发展,网速和机器速度的提高,越来越多的网站用到了丰富客户端技术.而现在Ajax则是最为流行的一种方式.javascript是一种解释型 语言,所以能无法达到和C/Java之类的水平,限制了它 ...
- 【原创】MemCached中的参数解释
优化MemCached的主要目的为增加命中率和提高内存使用率,在优化的时候可以根据以下参数综合考虑分析: 首先是进程项: pid Memcached进程ID uptime Memcached运行时间, ...
- MariaDB GALERA 集群双节点部署
节点1:10.2.2.41 节点2:10.2.2.42 软件: mariadb-galera-10.0.22-linux-x86_64.tar.gz #galera相关参数:(两个节点配置文件类似) ...
- 3ds Max制作一面飘扬的旗帜效果图
在大家平时建模过程中肯定会遇到很多力学作用的模型,它们有很多的不确定性,通过人工拖拽的手段很难达到理想的自然效果,这时我们就需要一些特殊的命令来完成我们模拟自然状态的效果.下面我们就一面飘扬的国旗来探 ...