SpringMVC数据页响应ModelAndView实现页面跳转
作者:执久呀 时间:2022-04-29 15:21:10
SpringMVC的数据响应
SpringMVC的数据响应方式
①页面跳转
直接返回字符串(如在一个方法中,return了一个"xxx.jsp",就会转发到那个jsp页面中,这就是直接返回字符串的形式)
通过ModelAndView对象返回
②回写数据
直接返回字符串(相当于在javaweb里的resp.getwrite(),print)
返回对象或集合
页面跳转
1、返回字符串形式
直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转。
返回带有前缀的字符串:
转发:forward:/WEB_INF/views/index.jsp(forward可以省略不写)
重定向:redirect:/index.jsp
2、返回ModelAndView对象
方式1:直接new对象
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="KongChao")
public class userController {
@RequestMapping(value = "/ZengHui2")
public ModelAndView save2(){
/*
Model 模型 作用是封装数据
View 视图 作用是展示数据
*/
ModelAndView modelAndView=new ModelAndView();
//设置模型数据(键值对,键为String,值为Oject)
modelAndView.addObject("username", 1);
//设置视图名字
modelAndView.setViewName("KCandZH");//经过前后缀拼接就位/jsp/KCandZH.jsp
return modelAndView;
}
}
在jsp包下的KCandZH.jsp中
<html>
<head>
<base href="<%=basepath %>" rel="external nofollow" />
<meta charset="utf-8"/>
<title>Insert title here</title>
</head>
<body>
kCandZH forever ${username}
</body>
</html>
加上一个El表达式,这样浏览器访问localhost:8080/KongChao/ZengHui2,就会显示出kCandZH forever 1
方式2:写在方法里让SpringMVC创建
也可以不new对象的方式,在方法中直接写model对象,SpringMVC会自动帮你创建
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="KongChao")
public class userController {
@RequestMapping(value = "/ZengHui3")
public ModelAndView save3( ModelAndView modelAndView){
//设置模型数据(键值对,键为String,值为Oject)
modelAndView.addObject("username", "babala");
//设置视图名字
modelAndView.setViewName("KCandZH");//经过前后缀拼接就位/jsp/KCandZH.jsp
return modelAndView;
}
}
方式3:model和view分开做
model是SpringMVC框架封装好的
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="KongChao")
public class userController {
@RequestMapping(value = "/ZengHui4")
public String save4(Model model){//是model
//设置模型数据(键值对,键为String,值为Oject)
model.addAttribute("username","曾慧");
return "KCandZH";//是view
}
}
方式4:通过HttpServletRequest
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="KongChao")
public class userController {
@RequestMapping(value = "/ZengHui5")
public String save5(HttpServletRequest request){//是model
//设置模型数据(键值对,键为String,值为Oject)
request.setAttribute("username","kckckc");
return "KCandZH";
}
}
方式3和方式4的区别,model是SpringMVC封装好的,而HttpServletRequest是原生的javaweb,是由tomcat服务器产生的,这个产生的对象中有数据,有http请求的数据(请求行,请求体....),model对象则是空的。方式4不常用
来源:https://blog.csdn.net/weixin_60719453/article/details/125691433
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Kotlin中常见内联扩展函数的使用方法教程
C# 中用 Sqlparameter 的两种用法
maven将项目打包上传到nexus私服的详细教程
![](https://img.aspxhome.com/file/2023/9/78299_0s.png)
Java 改造ayui表格组件实现多重排序
![](https://img.aspxhome.com/file/2023/1/64891_0s.jpg)
十种JAVA排序算法实例
Apache和Tomcat有什么区别_动力节点Java学院整理
![](https://img.aspxhome.com/file/2023/3/68783_0s.jpg)
SpringBoot FreeWorker模板技术解析
![](https://img.aspxhome.com/file/2023/6/57826_0s.png)
java生成json数据示例
![](https://img.aspxhome.com/file/2023/9/64059_0s.jpg)
Java/Web调用Hadoop进行MapReduce示例代码
![](https://img.aspxhome.com/file/2023/3/77093_0s.png)
C++实现LeetCode(205.同构字符串)
Java8 Stream教程之collect()的技巧
![](https://img.aspxhome.com/file/2023/7/61507_0s.png)
C#基于UDP实现的P2P语音聊天工具
![](https://img.aspxhome.com/file/2023/1/91311_0s.jpg)
深入探究Java线程与进程有哪些区别
![](https://img.aspxhome.com/file/2023/3/92543_0s.png)
java锁synchronized面试常问总结
![](https://img.aspxhome.com/file/2023/7/57917_0s.png)
spring boot2结合mybatis增删改查的实现
![](https://img.aspxhome.com/file/2023/4/61644_0s.png)
IDEA调试技巧条件断点实现步骤详解
![](https://img.aspxhome.com/file/2023/1/70501_0s.png)
Java实现扑克牌程序
![](https://img.aspxhome.com/file/2023/0/59340_0s.jpg)
java实现递归文件列表的方法
SpringBoot打Jar包在命令行运行流程详解
![](https://img.aspxhome.com/file/2023/8/59548_0s.png)