2019独角兽企业重金招聘Python工程师标准>>>

项目结构如下

一、返回值分类

一 返回字符串

Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址,根据字符串最后跳转到对应jsp页面

第一步、导入依赖坐标文件、配置好webxml文件、springmvc核心配置文件

        <resources><!-- mapper.xml文件在java目录下 --><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource></resources></build><!--锁定所有spring的版本--><properties><spring.version>5.0.2.RELEASE</spring.version><!--编译版本修改--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency></dependencies>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><!-- SpringMVC的核心控制器:前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 然后配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- 首先是:servlet启动时加载对象 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--配置过滤器解决中文乱码:提供初始化参数--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><!-- 启动过滤器 --><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置spring创建容器时要扫描的包 --><context:component-scan base-package="com.cc"></context:component-scan><!-- 配置视图解析器:返回请求成功后的页面 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--文件所在的目录:相对路径--><property name="prefix" value="/pages/"></property><!--文件的后缀名--><property name="suffix" value=".jsp"></property></bean><!--告诉前端控制器,那些静态资源不拦截--><!--<mvc:resources location="/css/" mapping="/css/**"/> &lt;!&ndash; 样式 &ndash;&gt;<mvc:resources location="/images/" mapping="/images/**"/> &lt;!&ndash; 图片 &ndash;&gt;--><mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript --><!--配置spring开启注解mvc的支持--><mvc:annotation-driven/>
</beans>

第二步、创建实体类以及controller层控制类

package com.cc.entity;public class Student {private String name;private int age;private String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", password='" + password + '\'' +'}';}
}
package com.cc.controller;
import com.cc.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Controller
@RequestMapping("/user")
public class UserController {/*** 返回参数为字符串类型* @param model使用Model向视图层传递student对象* @return*/@RequestMapping("/testString")public  String testString(Model model){System.out.println("testString.....");//模拟数据库查询功能Student student=new Student();student.setName("美美");student.setAge(20);student.setPassword("123456");//model对象model.addAttribute("student",student);return "success";}}

第三步、创建response.jsp响应页面,相应的执行页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>Title</title><%--响应结果为字符串--%>
</head>
<body>
</body>
</html>

二、返回值是void

controller层代码添加如下代码

返回值是void类型,想跳转相应的页面,可以使用HttpServletResponse api进行转发或者是重定向,也可以直接响应页面在输入http://localhost:8080/user/testVoid,会直接响应输出 hello

    /*** 返回结果为void* 请求转发是一次请求* @param*/@RequestMapping("/testVoid")public  void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception{System.out.println("testVoid.....");//使用原生api,编写请求转发request.getRequestDispatcher("/pages/success.jsp").forward(request, response);//使用重定向//response.sendRedirect(request.getContextPath()+"/pages/success.jsp");//访问servet会直接进行响应//response.getWriter().println("hello");return;}

response.jsp页面添加如下代码

    <%--响应结果为void--%><a href="user/testVoid">testVoid</a><br>

三、返回值是ModelAndView对象

controller层修改代码如下:ModelAndView 作为返回值,其实本质上是实现ModelMap接口

/*** 本质上和model是一样的,model底层实现都是modelMap* @return*/@RequestMapping("/testModelAndView")public ModelAndView testModelAndView() {System.out.println("testModelAndView.....");//创建ModelAndView对象ModelAndView mv=new ModelAndView();Student student=new Student();student.setName("美美");student.setAge(20);student.setPassword("123456");//把user对象存储到对象中,也会把user对象存入request对象中mv.addObject("student",student);//跳转到那个页面mv.setViewName("success");return mv;}

response.jsp页面修改代码如下

    <%--响应结果为ModeladnView--%><a href="user/testModelAndView">testModelAndView</a><br>

测试如下,携带参数进行请求跳转

二、SpringMVC框架提供的转发和重定向

直接修改controller层代码,需要注意的地方,使用关键字实现重定向和转发只有,视图配置器这个时候就不起作用了

    /*** 使用关键字 forward和redirect请求页面* @return*/@RequestMapping("/test")public String testForwardandRedirect() {System.out.println("testForwardandRedirect.....");//转发请求页面,使用了关键字后,就不能使用视图解析器//return "forward://pages/success.jsp";//使用重定向请求页面//return "redirect:/index.jsp";return "redirect:/pages/success.jsp";}

response.jsp页面代码修改如下

    <%--使用forword和Redirect实现响应--%><a href="user/test">test</a><br>

三. ResponseBody响应json数据

该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如:json,xml 等,通过 Response 响应给客户端,帮我们解决了很多麻烦的事情

第一步、DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置

mvc:resources标签配置不过滤
location元素表示webapp目录下的包下的所有文件
mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b

<!--告诉前端控制器,那些静态资源不拦截--><!--<mvc:resources location="/css/" mapping="/css/**"/> &lt;!&ndash; 样式 &ndash;&gt;<mvc:resources location="/images/" mapping="/images/**"/> &lt;!&ndash; 图片 &ndash;&gt;--><mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->

第二步、 使用@RequestBody获取请求体数据

<button id="btn">发送ajax的请求</button>
<script  type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.min.js"></script><script>$(function(){$("#btn").click(function(){//使用ajax发送请求$.ajax({type:"post",url:"${pageContext.request.contextPath}/user/testAjax",contentType:"application/json;charset=utf-8",data:'{"name":"tom","age":24,"password":"123456"}',dataType:"json",success:function(data){alert(data);}});});})</script>

controller层代码修改如下

/*** 测试响应 json 数据*/@RequestMapping("/testAjax")public void  testAjax(@RequestBody String body) {System.out.println("testAjax is doing");System.out.println(body);}

后台拿到前端发送过来的数据

第三、 使用@RequestBody注解把json的字符串转换成JavaBean的对象

1、json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

<dependency>
<groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version>
</dependency

2、controller层修改代码如下

@RequestMapping("/testAjax")public @ResponseBody Student  testAjax(@RequestBody Student student) {//@ResponseBody设置返回封装对象System.out.println("testAjax is doing");student.setName("tom");student.setPassword("123456");System.out.println(student);return student;}

3.response.jsp页面代码如上一步,点击测试代码,控制台额和view层都接收到了数据

转载于:https://my.oschina.net/u/4115727/blog/3055752

系列四、SpringMVC响应数据和结果视图相关推荐

  1. java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】...

    第1章 响应数据和结果视图 1.1返回值分类 1.1.1 字符串 1.1.2 void 1.1.3 ModelAndView 1.2转发和重定向 1.2.1 forward 转发 1.2.2 Redi ...

  2. SpringMVC的响应数据和结果视图

    响应数据之返回值是String类型 方法执行完,需要跳转到指定的页面,最终给用户一个响应.springmvc提供了很多种响应的方式. controller 方法返回字符串可以指定逻辑视图名,通过视图解 ...

  3. springmvc(四) springmvc的数据校验的实现

    so easy~ --WH 一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端 ...

  4. 【SSM框架系列】SpringMVC的请求和响应

    request和response request对象的作用 获取请求参数 作为域对象存取数据 获取请求头 请求转发 response功能 回写数据,JSON格式字符串 页面跳转(请求重定向) Spri ...

  5. spring (四) SpringMVC的请求和响应

    目录 前言 一.SpringMVC的数据响应 1.1 SpringMVC的数据响应方式 1.1.1页面跳转        直接返回字符串 ​  1.1.2通过ModelAndView对象返回 1.2  ...

  6. SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回

    SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回 页面跳转设定 //转发会把后端携带的request和Response发送到前端jsp,在jsp中可以直接使用其中的数据/ ...

  7. SpringMVC处理请求或响应数据

    SpringMVC处理请求数据或响应数据: 请求处理方法签名 Spring MVC 通过分析处理方法的签名,HTTP请求信息绑定到处理方法的相应人参中. Spring MVC 对控制器处理方法签名的限 ...

  8. SpringMVC框架个人笔记之响应数据、文件上传

    对应工程为springmvc-response,springmvc-file-upload,springmvc-file-upload-crossweb 1.返回值分类 1.1 字符串 //respo ...

  9. 机器学习、数据科学与金融行业 系列四:智能投顾、量化投资与机器学习

    机器学习.数据科学与金融行业 系列四:智能投顾.量化投资与机器学习 难点不在于没有新思维,而在于无法摆脱陈旧思想的束缚.-- 巴菲特 历史不会重演,但却有韵律.-- 马克吐温 我可以计算出天体的运动和 ...

最新文章

  1. 步步为营 .NET 设计模式学习笔记系列总结
  2. Swift 中如何测试驱动开发
  3. 一个udp用户数据报的数据字段为8192_基于FPGA的千兆网UDP通信分析
  4. .NET中国峰会 参与意愿调查
  5. 抽象编程语言(APL)是什么?
  6. c语言block内部的实现原理,iOS中block变量捕获原理详析
  7. 华为澳大利亚大动作,终止4.9亿投资;iPhone 12 或10月13日发布;Swift正式登陆Win 10 | 极客头条...
  8. 文本生成系列之预训练模型
  9. VectorDraw机械制图,VectorDraw图形引擎crack版
  10. fedora oracle使用,【解决方案】连接到Fedora 14上的Oracle数据库服务器
  11. xposed框架在分机安装失败_pokemon go 和 虚拟gps
  12. SP324099: 无法完成操作--VS2015社区版无法登陆
  13. (1)桌面客制化之单屏幕修改以及wight修改
  14. 燕郊手机5G网络已全面覆盖,宽带提高至1000M!
  15. 页面向左移动动画html,jQuery仿左右窗帘拉开页面动画特效
  16. lv蒙田包二手价格_盘点 | LV家保值性最高,最值得入手的五款包包
  17. usb gaghet hid 模拟鼠标键盘的绝对值描述
  18. 金立e3t刷android4.4,金立E3T刷机包 基于百度云官方ROM 深度精简 超强权限 省电耐用 安全稳定...
  19. html怎样去除顶部的空白,如何消除网页顶部的一行空白?
  20. matlab怎么生成星座图,关于16QAM生成星座图的程序问题

热门文章

  1. Linux常用压缩解压命令
  2. Android实现程序前后台切换效果
  3. 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)
  4. iOS-UIButton防止重复点击(三种办法)
  5. ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API
  6. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系
  7. 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式
  8. Cookie实现记住密码、自动登录
  9. 谈谈对数据库中ACID、CAP、BASE的认识
  10. 搭建lamp环境QA