完整的项目案例: 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. [Swift]LeetCode827. 最大人工岛 | Making A Large Island

    In a 2D grid of 0s and 1s, we change at most one 0 to a 1. After, what is the size of the largest is ...

  2. iOS崩溃日志ips文件解析

    iOS崩溃日志ips文件解析  一 简介 测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下 ...

  3. BBS论坛(五)

    5.1.cms后台修改密码功能完成 (1)新建app/forms.py # app/forms.py from wtforms import Form class BaseForm(Form): de ...

  4. 启动MongoDB shell客户端会什么会一闪而过

    解决办法: 在MongoDB shell客户端根目录下右击选择 "在此处打开命令窗口"; 在命令窗口敲入mongod --dbpath=d:/mongodb/data ; //我的 ...

  5. How does the vuejs add the query and walk the object?

    让这个老实返回的页面添加特殊路由,这个页面常常都是登录注册.这次我们根据登录举例. 省略 { path:'/login?url=:url', name:'loginfirst', component: ...

  6. C#操作进程(Process)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 带着新人学springboot的应用04(springboot+mybatis+redis 完)

    对于缓存也说了比较多了,大家对下图这一堆配置类现在应该有些很粗略的认识了(因为我也就很粗略的认识了一下,哈哈!),咳,那么我们怎么切换这个缓存呢?(就是不用springboot提供的默认的Simple ...

  8. 带着新人学springboot的应用02(springboot+mybatis+缓存 中)

    继续接着上一节,大家应该知道驼峰命名法吧!就是我们javabean中属性一般命名是lastName,userName这种类型的,而数据库中列名一般都是last_name,user_name这种的,要让 ...

  9. .NetCore&Linux&Docker&Portainer踩坑历险记

    最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下.大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#. 故事背景 公司是做电商业务的,在天猫有几家旗舰店数据量也很大.阿里有一个称为 ...

  10. [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念

      本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程?   java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...