完整的项目案例: 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 响应视图(六)的更多相关文章

  1. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  2. Spring MVC 的视图转发

    Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作 1.使用RedirectView public ModelAndView login(){ RedirectView ...

  3. Spring MVC之视图解析器

    Spring MVC提供的视图解析器使用ViewResolver进行视图解析,实现浏览器中渲染模型.ViewResolver能够解析JSP.Velocity模板.FreeMarker模板和XSLT等多 ...

  4. Spring MVC Xml视图解析器

    XmlViewResolver用于在xml文件中定义的视图bean来解析视图名称.以下示例演示如何在Spring Web MVC框架使用XmlViewResolver. XmlViewResolver ...

  5. Spring MVC的视图解析器

    一.视图解析器简介 在Spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进 ...

  6. Spring MVC之视图解析器和URL-Pattern的配置方案

    上期讲解了第一入门案例之后接下来了解一下视图解析器与URL-Pattern的配置方案 先来说视图解析器,在上次博客文章中我们完成了入门案例,接下来我们就在上一个例子中完善一下体出视图解析器 <? ...

  7. spring mvc 多视图配置

    <!-- jsp视图解析器--> <bean id="viewResolver" class="org.springframework.web.serv ...

  8. Spring MVC 自定义视图

    实现View import org.springframework.stereotype.Component; import org.springframework.web.servlet.View; ...

  9. Spring MVC 返回视图时添加的模型数据------POJO

    POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和 EJB混淆起来, 而且简 ...

随机推荐

  1. shell 删除重复文件脚本

    摘自 <Linux Shell脚本攻略>一书,例子在109页,原理在110页,原理讲解的很好哦! 需要了解awk命令.xargs,脚本中所用的命令在Linux Shell脚本攻略一书中都有 ...

  2. IP地址个数的计算原理

    IP注释: IP地址(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址. 它为互联网 ...

  3. 页面的div中有滚动条,js实现刷新页面后回到记录时滚动条的位置

    当div中绑定数据,给它一个属性overflow-y: scroll,添加长度大小,使其能够出现滚动条:每次刷新的时候滚动条总是会出现在最上方,这使我很头疼,经过查阅网上资料,返现两种方法可行.如下: ...

  4. 阿里云服务器公网Ip外网无法访问

    拥有了自己的服务器后,发现需要各种配置,之前应用公司的服务器的时候,一般通过内网访问,或者外网访问时,很多配置其他人员都已经配置好了,但是现在在自己的服务器上发布自己的网站的时候,才发现事情并没有自己 ...

  5. Spring中你可能不知道的事(二)

    在上一节中,我介绍了Spring中极为重要的BeanPostProcessor BeanFactoryPostProcessor Import ImportSelector,还介绍了一些其他的零碎知识 ...

  6. 文本编辑器激活系列(一):Sublime 安装、激活、汉化教程

    如您激活出现问题,请点击这里加入:软件激活问题解决群 前言 推荐几款文本编辑器: Sublime:内嵌python解释器.大量插件 EditPlus:语法着色.内嵌浏览器 Notepad++:所见即所 ...

  7. 【Git】(2)---checkout、branch、log、diff、.gitignore

    常用命令 一.命令 1.checkout 切换分支 git checkout 分支名 #切换分支 #如果在当前分支上对文件进行修改之后,没有commit就切换到另外一个分支b, 这个时候会报错,因为没 ...

  8. C++可变参数模板实现输出

    C++11 tuple&可变参数模板 template void Print(T value) { std::cout << value << std::endl; } ...

  9. C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  10. 从锅炉工到AI专家(4)

    手写数字识别问题 图像识别是深度学习众多主流应用之一,手写数字识别则是图像识别范畴简化版的入门学习经典案例.在TensorFlow的官方文档中,把手写数字识别"MNIST"案例称为 ...