Spring MVC 响应视图(六)
完整的项目案例: springmvc.zip
目录

实例
除了依赖spring-webmvc还需要依赖jackson-databind(用于转换json数据格式)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
项目结构:

配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <!-- 请求总控器 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="edu.nf.ch06.controller"/> <mvc:annotation-driven/> <mvc:default-servlet-handler/> <!-- springmvc提供了很多种视图解析器来完成不同的视图解析工作,
例如内部资源视图解析器、模板引擎的视图解析器、XML视图解析器等等
,而在配置文件中是可以同时配置多个视图解析器的,那么Springmvc
在做视图响应的时候,会根据配置文件中的配置的所有视图解析器按照顺序
进行匹配,直到找到一个合适的视图解析器来完成解析。当有多个视图解析器存在时,
可以通过order属性来指定解析器的优先级(<property name="order" value="0"/>)-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean> </beans>
请求控制器Controller
(RedirectAttributesController)
package edu.nf.ch06.controller; import edu.nf.ch06.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; /**
* @author wangl
* @date 2018/10/31
* 使用RedirectAttributes解决重定向传参的问题
* 这个对象是在Springmvc 3.1的版本加入的
*/
@Controller
public class RedirectAttributesController { /**
* 重定向一个JSP页面,使用addAttribute的方式
* 将参数绑定在重定向的url后面带回到页面
* @param user
* @param redirectAttributes
* @return
*/
@PostMapping("/redirect3")
public String redirectPage(Users user, RedirectAttributes redirectAttributes){
redirectAttributes.addAttribute("user", user.getUserName());
return "redirect:redirectattr.jsp";
} /**
* 重定向一个新的请求,使用FlushAttribute的方式,
* 将数据存入一个FlushMap中,它利用了Session的机制保存,
* 在重定向完成之后会自动清除这个对象
*
* @param user
* @param redirectAttributes
* @return
*/
@PostMapping("/redirect4")
public String redirectReq(@ModelAttribute("user") Users user, RedirectAttributes redirectAttributes){
redirectAttributes.addFlashAttribute("user", user);
return "redirect:redirectAction";
} /**
* 从redirect4的请求重定向到这个方法
* @param user
* @return
*/
@GetMapping("/redirectAction")
public String getRedirectAttr(@ModelAttribute("user") Users user){
System.out.println(user.getUserName());
return "index";
}
}
(ResponseBodyController)
package edu.nf.ch06.controller; import edu.nf.ch06.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; /**
* @author wangl
* @date 2018/10/31
*/
//@Controller /**
* @RestController是在spring4.0后新加入的一个注解,
* 同样用于标注一个类为控制器组件,如果当前控制器中所有的
* 请求处理方法都需要以ResponseBody的方式响应,那么
* 就是用这个注解,而不需要再每一个方法上都标注@ResponseBody注解
*/
@RestController
public class ResponseBodyController { /**
* 使用@ResponseBody标注,
* 表示将方法的返回值以Response输出流写回客户端,
* 这时,springmvc就会将序列化的数据放入响应体中并写回
* @return
*/
@GetMapping("/getUser")
public Users getUser(){
Users user = new Users();
user.setUserName("user1");
user.setAge(21);
return user;
}
}
(RequestBodyController)
package edu.nf.ch06.controller; import edu.nf.ch06.entity.Users;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; /**
* @author wangl
* @date 2018/10/31springmvc
*/
@RestController
public class RequestBodyController { /**
* 接收ajax提交的数据并做类型转换映射
* @param user
* @return
*/
@PostMapping("/addUser")
public String addUser(Users user){
System.out.println(user.getUserName());
System.out.println(user.getAge());
return "success";
} /**
* 是用@RequestBody标注参数,
* 表示将接收的json文本数据进行格式转换后映射到实体中
* @param user
* @return
*/
@PostMapping("/addUser2")
public String addUser2(@RequestBody Users user){
System.out.println(user.getUserName());
System.out.println(user.getAge());
return "success";
}
}
(UserController)
package edu.nf.ch06.controller; import edu.nf.ch06.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView; import java.util.Map; /**
* @author wangl
* @date 2018/10/31
*/
@Controller
public class UserController { /**
* 转发视图
*/
@GetMapping("/forwrd1")
public ModelAndView forward1(){
//通过ModelAndView转发
return new ModelAndView("index");
} @GetMapping("/forwrd2")
public String forward2(){
//通过ModelAndView转发
return "index";
} /**
* 重定向视图
* @return
*/
@GetMapping("/redirect1")
public ModelAndView redirect1(){
//在ModelAndView的构造方法传入一个RedirectView的视图对象来完成重定向
//return new ModelAndView(new RedirectView("redirect.jsp"));
//简化
return new ModelAndView("redirect:redirect.jsp");
} @GetMapping("/redirect2")
public String redirect2(Users user){
return "redirect:redirect.jsp";
}
}
Spring MVC 响应视图(六)的更多相关文章
- 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- Spring MVC 的视图转发
Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作 1.使用RedirectView public ModelAndView login(){ RedirectView ...
- Spring MVC之视图解析器
Spring MVC提供的视图解析器使用ViewResolver进行视图解析,实现浏览器中渲染模型.ViewResolver能够解析JSP.Velocity模板.FreeMarker模板和XSLT等多 ...
- Spring MVC Xml视图解析器
XmlViewResolver用于在xml文件中定义的视图bean来解析视图名称.以下示例演示如何在Spring Web MVC框架使用XmlViewResolver. XmlViewResolver ...
- Spring MVC的视图解析器
一.视图解析器简介 在Spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进 ...
- Spring MVC之视图解析器和URL-Pattern的配置方案
上期讲解了第一入门案例之后接下来了解一下视图解析器与URL-Pattern的配置方案 先来说视图解析器,在上次博客文章中我们完成了入门案例,接下来我们就在上一个例子中完善一下体出视图解析器 <? ...
- spring mvc 多视图配置
<!-- jsp视图解析器--> <bean id="viewResolver" class="org.springframework.web.serv ...
- Spring MVC 自定义视图
实现View import org.springframework.stereotype.Component; import org.springframework.web.servlet.View; ...
- Spring MVC 返回视图时添加的模型数据------POJO
POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和 EJB混淆起来, 而且简 ...
随机推荐
- Heacher互助平台需求分析
课程属性 作业课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 作业链接 https://edu.cnblogs.co ...
- vue实例属性的方法
1.$mount() 手动设置挂载点 eg:vm.$mount("#app") 2.$destroy() 销毁 eg:vm.$destroy(); 3.$forceUp ...
- 【Storm篇】--Storm 容错机制
一.前述 Storm容错机制相比其他的大数据组件做的非常不错. 二.具体原因 结合Storm集群架构图: 我们的程序提交流程如下: 其中各个组件的作用如下: Nimbus资源调度任务分配接收jar ...
- D3、openlayers的一次尝试
近期尝试了一个webgl相关的内容,有些小激动,及时分享一下我的测试示例,效果如下: 此示例分从业务角度分为两部分,一个部分为d3展示的柱图,另一部分则为用openlayers展示的地图.而其难点却在 ...
- jni c++
java与c/c++之间的数据交互 JNI 上述两篇文章对jni的讲解比较详细,各有利弊,就文章1来说,开门见山,直接阐述了java和C/C++的交互方式:文章2是一篇百度文库 ...
- Kafka~HelloWorld得来不易
今天连搭了zookeeper和kafka的环境,并部署成功,但在.net驱动的操作下,没有消费成功,原因何在? 防火墙 zookeeper没运行? kafka没有公开IP? 第一感觉也就是这向个原因了 ...
- Kafka数据迁移
1.概述 Kafka的使用场景非常广泛,一些实时流数据业务场景,均依赖Kafka来做数据分流.而在分布式应用场景中,数据迁移是一个比较常见的问题.关于Kafka集群数据如何迁移,今天笔者将为大家详细介 ...
- Hadoop大数据挖掘从入门到进阶实战
1.概述 大数据时代,数据的存储与挖掘至关重要.企业在追求高可用性.高扩展性及高容错性的大数据处理平台的同时还希望能够降低成本,而Hadoop为实现这些需求提供了解决方案.面对Hadoop的普及和学习 ...
- Linux 的进程间通信:管道
本文由云+社区发表 作者:邹立巍 版权声明: 本文章内容在非商业使用前提下可无需授权任意转载.发布. 转载.发布请务必注明作者和其微博.微信公众号地址,以便读者询问问题和甄误反馈,共同进步. 微博ID ...
- .NetCore部署至IIS
部署教程 操作系统要求 Windows 7 或更高版本 Windows Server 2008 R2 或更高版本 依赖的组件 Runtime & Hosting Bundle 可以选择.NET ...