任务一: SpringMVC基本应用

课程任务主要内容:

  • SpringMVC简介
  • SpringMVC组件概述
  • SpringMVC请求
  • SpringMVC响应
  • 静态资源开启

一 SpringMVC简介

1.1 MVC模式

MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想。

  • M(model)模型:处理业务逻辑,封装实体
  • V(view) 视图:展示内容
  • C(controller)控制器:负责j进行调度分发(1.接收请求、2.调用模型、3.转发到视图)

1.2 SpringMVC概述

SpringMVC 是一种基于 Java 的实现 MVC 设计模式的轻量级 Web 框架(表现层框架),属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。
SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。


总结
SpringMVC的框架就是封装了原来Servlet中的共有行为;例如:参数封装,视图转发等。

1.3 SpringMVC快速入门

需求
客户端发起请求,服务器接收请求,执行逻辑并进行视图跳转。
步骤分析

  1. 创建web项目,导入SpringMVC相关坐标
  2. 配置SpringMVC前端控制器 DispathcerServlet
  3. 编写Controller类和视图页面
  4. 使用注解配置Controller类中业务方法的映射地址
  5. 配置SpringMVC核心文件 spring-mvc.xml

1)创建web项目,导入SpringMVC相关坐标

 <!-- 设置为web工程 --><packaging>war</packaging><dependencies><!--springMVC坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.5.RELEASE</version></dependency><!--servlet坐标--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--jsp坐标--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency></dependencies>

2)配置SpringMVC前端控制器DispathcerServlet
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_3_1.xsd" version="3.1"><!--配置springmvc的前端控制器:DispatcerServlet--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置加载核心配置类--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!--servlet实例化的生成是在访问时才进行创建--><!--在应用启动时,就完成servlet的实例化及初始化操作--><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><!--/ 和 /*的区别--><!-- /会匹配到所有的访问路径,但是不会匹配到像*.jsp这样的方法 url /login /add /update这些是能进行匹配,/a.jsp带后缀名的是无法匹配的。/*是能将所有的文件都匹配到。--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

3)编写Controller类和视图页面
UserController.java

public class UserController {public String quick() {System.out.println("quick running.....");return "/WEB-INF/pages/success.jsp";}
}

/WEB-INF/pages/ success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body>
<h3>请求成功!</h3>
</body>
</html>

4)使用注解配置Controller类中业务方法的映射地址

@Controller
public class UserController {@RequestMapping("/quick")public String quick() {System.out.println("quick running.....");return "/WEB-INF/pages/success.jsp";}
}

5)配置SpringMVC核心文件spring-mvc.xml

<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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--配置注解扫描--><context:component-scan base-package="com.lagou.controller"/>
</beans>

1.4 web工程执行流程

1.5 知识小结

  • SpringMVC是对MVC设计模式的一种实现,属于轻量级的WEB框架。

  • SpringMVC的开发步骤:
    1.创建web项目,导入SpringMVC相关坐标
    2.配置SpringMVC前端控制器 DispathcerServlet
    3.编写Controller类和视图页面
    4.使用注解配置Controller类中业务方法的映射地址
    5.配置SpringMVC核心文件 spring-mvc.xml

二 SpringMVC组件概述

2.1 SpringMVC的执行流程

  1. 用户发送请求至前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如 果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理器适配器。
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6. Controller执行完成返回ModelAndView。
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体View。
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet将渲染后的视图响应响应用户。

2.2 SpringMVC组件解析

  1. 前端控制器:DispatcherServlet
    用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的 中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
  2. 处理器映射器:HandlerMapping
    HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器 实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
  3. 处理器适配器:HandlerAdapter
    通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型 的处理器进行执行。
  4. 处理器:Handler【开发者编写
    它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由Handler 对具体的用户请求进行处理。
  5. 视图解析器:ViewResolver
    View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物 理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给 用户。
  6. 视图:View 【开发者编写
    SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、 pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展 示给用户,需要由程序员根据业务需求开发具体的页面。

***笔试题:springmvc中的三大组件是什么?

<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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--配置注解扫描--><context:component-scan base-package="com.lagou.controller"/> <!--处理器映射器和处理器适配器功能增强--><mvc:annotation-driven></mvc:annotation-driven> <!--视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"></property><property name="suffix" value=".jsp"></property></bean>
</beans>

2.3 SpringMVC注解解析

@Controller
SpringMVC基于Spring容器,所以在进行SpringMVC操作时,需要将Controller存储到Spring容器中,如果使用@Controller注解标注的话,就需要使用:

<!--配置注解扫描-->
<context:component-scan base-package="com.lagou.controller"/>

@RequestMapping

  • 作用:
    用于建立请求 URL 和处理请求方法之间的对应关系

  • 位置:
    1.类上:请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。
    它出现的目的是为了使我们的URL可以按照模块化管理:
    用户模块
    /user/add
    /user/update
    /user/delete

    账户模块
    /account/add
    /account/update
    /account/delete

    2.方法上:请求URL的第二级访问目录,和一级目录组成一个完整的 URL 路径。

  • 属性:
    1.value:用于指定请求的URL。它和path属性的作用是一样的
    2.method:用来限定请求的方式
    3.params:用来限定请求参数的条件
    例如:params={“accountName”} 表示请求参数中必须有accountName
    pramss={“money!100”} 表示请求参数中money不能是100

2.4 知识小结

  • SpringMVC的三大组件
    处理器映射器:HandlerMapping
    处理器适配器:HandlerAdapter
    视图解析器:View Resolver

  • 开发者编写
    处理器:Handler
    视图:View

三 SpringMVC的请求

3.1 请求参数类型介绍

客户端请求参数的格式是: name=value&name=value……
服务器要获取请求的参数的时候要进行类型转换,有时还需要进行数据的封装
SpringMVC可以接收如下类型的参数:

  • 基本类型参数
  • 对象类型参数
  • 数组类型参数
  • 集合类型参数

3.2 获取基本类型参数

Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。并且能自动做类型转换;自动的类型转换是指从String向其他类型的转换。

<a href="${pageContext.request.contextPath}/user/simpleParam?id=1&username=杰克">
基本类型
</a>
 @RequestMapping("/simpleParam")public String simpleParam(Integer id, String username) {System.out.println(id);System.out.println(username);return "success";}

3.3 获取对象类型参数

Controller中的业务方法参数的POJO属性名与请求参数的name一致,参数值会自动映射匹配。

<form action="${pageContext.request.contextPath}/user/pojoParam" method="post"> 编号:<input type="text" name="id"> <br>用户名:<input type="text" name="username"> <br> <input type="submit" value="对象类型">
</form>
public class User { Integer id; String username; // setter getter... }
  @RequestMapping("/pojoParam")public String pojoParam(User user) {System.out.println(user);return "success";}

3.4 中文乱码过滤器

当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。
web.xml

  <!--配置全局过滤的filter--><!--中文乱码过滤器--><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></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

3.5 获取数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。

<form action="${pageContext.request.contextPath}/user/arrayParam"> 编号:<br> <input type="checkbox" name="ids" value="1">1<br><input type="checkbox" name="ids" value="2">2<br> <input type="checkbox" name="ids" value="3">3<br> <input type="checkbox" name="ids" value="4">4<br> <input type="checkbox" name="ids" value="5">5<br> <input type="submit" value="数组类型">
</form>
@RequestMapping("/arrayParam")public String arrayParam(Integer[] ids) {System.out.println(Arrays.toString(ids));return "success";}

3.6 获取集合(复杂)类型参数

获得集合参数时,要将集合参数包装到一个POJO(实体类)中才可以。
实体类

public class QueryVo {private String keyword;private User user;private List<User> userList;private Map<String,User> userMap;
}

src/main/webapp/requestParam.jsp

<%--获取集合类型--%>
<form action="${pageContext.request.contextPath}/user/queryParam" method="post">搜索关键字:<input type="text" name="keyword"> <br>user对象:<input type="text" name="user.id" placeholder="编号"><input type="text" name="user.username" placeholder="姓名"><br>list集合<br>第一个元素:<input type="text" name="userList[0].id" placeholder="编号"><input type="text" name="userList[0].username" placeholder="姓名"><br>第二个元素:<input type="text" name="userList[1].id" placeholder="编号"><input type="text" name="userList[1].username" placeholder="姓名"><br> map集合<br> 第一个元素:<input type="text" name="userMap['u1'].id" placeholder="编号"><input type="text" name="userMap['u1'].username" placeholder="姓名"><br>第二个元素:<input type="text" name="userMap['u2'].id" placeholder="编号"><input type="text" name="userMap['u2'].username" placeholder="姓名"><br><input type="submit" value="复杂类型">
</form>
    /*获取到集合(复杂)类型请求参数*/@RequestMapping("/queryParam")public String queryParam(QueryVo queryVo){System.out.println(queryVo);return "success";}

3.7 自定义类型转换器

SpringMVC 默认已经提供了一些常用的类型转换器;例如:客户端提交的字符串转换成int型进行参数设置,日期格式类型要求为:yyyy/MM/dd 不然的话会报错,对于特有的行为,SpringMVC提供了自定义类型转换器方便开发者自定义处理。
src/main/webapp/requestParam.jsp

<%--演示自定义转换器:错误的产生 2012/12/12--%>
<form action="${pageContext.request.contextPath}/user/converterParam" method="post">生日:<input type="text" name="birthday"><input type="submit" value="自定义类型转换器">
</form>

工具类
com.lagou.converter.DateConverter.java

import org.springframework.core.convert.converter.Converter;public class DateConverter implements Converter<String, Date> {//s就是表单传递过来的请求参数2012-12-12public Date convert(String s) {//将日期字符串转换成日期对象,进行返回SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");Date date=null;try {date = simpleDateFormat.parse(s);} catch (ParseException e) {e.printStackTrace();}return date;}
}

spring-mvc.xml

    <!-- 处理器映射器-处理器适配器 进行了功能增强,支持json的读写 --><mvc:annotation-driven conversion-service="conversionService"/><!--自定义类型转换器配置--><bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"><property name="converters"><set><bean class="com.lagou.converter.DateConverter"/></set></property></bean>

UserController

 /*获取日期类型参数:(自定义类型转换器)*/@RequestMapping("/converterParam")public String converterParam(Date birthday){System.out.println(birthday);return "success";}

3.8 相关注解

@RequestParam
当请求的参数name名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定

<%--演示@RequestParam--%>
<a href="${pageContext.request.contextPath}/user/findByPage?pageNo=2">分页查询
</a>
    /* 演示@RequestParam() 注解defaultValue 设置参数默认值name 匹配页面传递参数的名称required 设置是否必须传递参数,默认值为true;如果设置了默认值,值自动改为false*/@RequestMapping("/findByPage")public String findByPage(@RequestParam(name="pageNo",defaultValue = "1",required = false) Integer pagNum, @RequestParam(defaultValue = "5") Integer pageSize) {System.out.println(pagNum); //2如果有前台传递的值,那么会覆盖默认值System.out.println(pageSize); //5return "success";}

@RequestHeader
获取请求头的数据。

    /*演示@reuqestHeader注解的使用*/@RequestMapping("/requestHead")public String requestHead(@RequestHeader("cookie") String cookie) {System.out.println(cookie);return "success";}
输出JSESSIONID=4C44FA04AB16635971D8D9778C01297F

@CookieValue
获取cookie中的数据。

 /*@CookieValue*/public String cookieValue(@CookieValue("JSESSIONID") String jsessionId) {System.out.println(jsessionId);return "success";}
输出:4C44FA04AB16635971D8D9778C01297F

3.9 获取Servlet相关API

SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:

/*原始servletAPI的获取*/
@RequestMapping("/servletAPI")
public String servletAPI(HttpServletRequest request, HttpServletResponse response, HttpSession session) {System.out.println(request);System.out.println(response);System.out.println(session);return "success";
}

四 SpringMVC的响应

4.1 SpringMVC响应方式介绍

页面跳转

  1. 返回字符串逻辑视图
  2. void原始ServletAPI
  3. ModelAndView

返回数据

  1. 直接返回字符串数据
  2. 将对象或集合转为json返回(任务二演示)

4.2 返回字符串逻辑视图

直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转到指定页面

@RequestMapping("/returnString")
public String returnString() { return "success";
}

4.3 void原始ServletAPI

我们可以通过request、response对象实现响应

    @RequestMapping("/returnVoid")public void returnVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {// 1.通过response直接响应数据 response.setContentType("text/html;charset=utf-8");response.getWriter().write("李四");
//        ----------------------------------------request.setAttribute("username", "张三");// 2.通过request实现转发 request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
//        ---------------------------------------- //借助response对象完成重定向 两次请求 WEB-INF :是安全目录:不允许外部请求直接访问该目录资源,只可以进行服务器内部转发 response.sendRedirect(request.getContextPath() + "/index.jsp");}

4.4 转发和重定向

企业开发我们一般使用返回字符串逻辑视图实现页面的跳转,这种方式其实就是请求转发。
我们也可以写成:forward转发
如果用了forward:则路径必须写成实际视图url,不能写逻辑视图。它相当于:

request.getRequestDispatcher("url").forward(request,response)

使用请求转发,既可以转发到jsp,也可以转发到其他的控制器方法。

    /*演示forwar关键字进行请求转发*/@RequestMapping("/forward")public String forward(Model model) {//还想在明细中设置一些值怎么做?model.addAttribute("username", "张三")//使用请求转发,既可以转发到jsp,也可以转发到其他的控制方法// return "forward:/product/findAll";return "forward:/WEB-INF/pages/success.jsp";}
    <%--获取到传过来的值--%><h3>${username}</h3>

Redirect重定向
我们可以不写虚拟目录,springMVC框架会自动拼接,并且将Model中的数据拼接到url地址上,model传入的值是无法直接取出

 /*演示Redirect关键字进行重定向当写了redirect或者forward关键字,是不会在走视图解析器*/@RequestMapping("/redirect")public String redirect(Model model){//底层使用的还是reqeust.setAttribute("username","拉钩教育") 预范围:一次请求model.addAttribute("username","李四");return "redirect:/index.jsp";}

4.5 ModelAndView

4.4.1 方式一

在Controller中方法创建并返回ModelAndView对象,并且设置视图名称

 /*modelAndView进行页面跳转:方式一*/@RequestMapping("returnModelAndView")public ModelAndView returnModelAndView(){/*model:模型:作业封装存放数据View:视图:用来展示数据*/ModelAndView modelAndView = new ModelAndView();//设置模型数据modelAndView.addObject("username","modelAndView进行页面跳转方式一");//设置视图名称,视图解析器解析modelAndView 拼接前缀和后缀modelAndView.setViewName("success");return modelAndView;}

4.4.2 方式二

在Controller中方法形参上直接声明ModelAndView,无需在方法中自己创建,在方法中直接使用该对象设置视图,同样可以跳转页面

 /*modelAndView进行页面跳转:方式二*/@RequestMapping("/returnModelAndView2")public ModelAndView returnModelAndView2(ModelAndView modelAndView){/*model:模型:作业封装存放数据View:视图:用来展示数据*///设置模型数据modelAndView.addObject("username","modelAndView进行页面跳转方式一");//设置视图名称,视图解析器解析modelAndView 拼接前缀和后缀modelAndView.setViewName("success");return modelAndView;}

4.6 @SessionAttributes

如果在多个请求之间共用数据,则可以在控制器类上标注一个 @SessionAttributes,配置需要在session中存放的数据范围,Spring MVC将存放在model中对应的数据暂存到 HttpSession 中。
注意:@SessionAttributes只能定义在类上

@Controller
@SessionAttributes("username")//向request域中(model)中存入key为username时,会同步到session域中
public class UserController {@RequestMapping("/forward")public String forward(Model model) {model.addAttribute("username", "子慕");return "forward:/WEB-INF/pages/success.jsp";}@RequestMapping("/returnString")public String returnString() {return "success";}
}

显示效果:当访问/forward时,进入success中username会有显示出来,当在访问/returnString时,进入success中还是会显示出username

4.7 知识小结

  • 页面跳转采用返回字符串逻辑视图
    1.forward转发:可以通过Model向request域中设置数据
    2.redirect重定向:直接写资源路径即可,虚拟目录springMVC框架自动完成拼接

  • 数据存储到request域中
    Model model
    model.addAttribute(“username”, “子慕”);

五 静态资源访问的开启

当不开启静态资源时会出现什么问题:
引入jquery.js文件

<%--引入jquery.js--%>
<script src="${pageContext.request.contextPath}/js/jquery.js"/>

当访问页面时,会出现jquery-3.4.1.min.js文件加载失败,报错

原因:浏览器将http://localhost:8080/01springmvc_quickstart/js/jquery-3.4.1.min.js当成请求,这会被前端控制器拦截,会调用路径,与当前的路径进行匹配,匹配失败就会报错404。
解决方式:
当有静态资源需要加载时,比如jquery文件,通过谷歌开发者工具抓包发现,没有加载到jquery文件,原因是SpringMVC的前端控制器DispatcherServlet的url-pattern配置的是 /(缺省),代表对所有的静态资源都进行处理操作,这样就不会执行Tomcat内置的DefaultServlet处理,我们可以通过以下两种方式指定放行静态资源:
方式一

<!--在springmvc配置文件中指定放行资源 mapping:防线的映射路径 location:静态资源所在的目录
-->
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/img/**" location="/img/"/>

方式二

<!--放行全部的静态资源:在springmvc配置文件中开启DefaultServlet处理静态资源-->
<mvc:default-servlet-handler/>

06_03_SpringMVC 任务一: SpringMVC基本应用(SpringMVC请求与响应,进行日期转换工具类DateConverter)相关推荐

  1. 在线HTTP请求头响应头转JSON工具

    在线HTTP请求头响应头转JSON工具 在线HTTP请求头响应头转JSON工具 本工具可以将HTTP请求头或者响应头转换成JSON格式 本工具可以将HTTP请求头或者响应头转换成JSON格式 本工具可 ...

  2. get请求URL传参url编码工具类

    get请求URL传参需要 进行url编码,只能编码参数,不能整个编码URL package com.bonc.bxm.security.common.util;import lombok.extern ...

  3. springMVC从发送hello请求到响应的执行流程分析

    启动tomcat服务器后,借助springMVC框架,我们可以很方便高效控制客户端发出的各种请求.分析请求执行流程前,我们需要了解一下服务器启动时,都做了什么. tomcat服务器启动加载项 加载we ...

  4. java 响应 请求参数_spring基础----请求与响应的参数(一)

    这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...

  5. WebService soap报文请求与响应报文解析

    需求 今日公司要做一个协同办公系统(OA),PC端已经完成.现在要做一个手机端网页端的.从登陆入手,需要向 服务端发送一段请求报文获取响应报文,对响应报文进行解析判断是否登录成功. 当然手机客户端发送 ...

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

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

  7. SpringMVC的请求参数,类型转换器(日期格式),请求映射

    SpringMVC的请求参数,类型转换器(日期格式),请求映射 请求参数 springMVC将传递的参数封装到处理的方法形参中,达到快速访问参数的目的 普通参数类型 参数名与处理器方法形参名保持一致 ...

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

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

  9. springmvc 全局编码_SpringMVC请求参数和响应结果全局加密和解密

    前提 前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景.为了模拟真实的交互场景,先定制一下整个交互流程.第三方传输(包括请求和响应)数据报文包括三个部分: 1.t ...

最新文章

  1. php 数组转目录树,PHP根据路径数组转成一个目录树
  2. java gettext用法_Java Context.getText方法代码示例
  3. [MongoDB]db.serverStatus()命令详解
  4. Linux虚拟机克隆后网卡找不到问题
  5. 多线程控制不同的线程取不同的数据的问题
  6. axacropdf 服务器pdf_C#显示PDF文件
  7. Ubuntu下如何创建文本文件
  8. 开源项目smartImageView
  9. 在pytorch中实现十折交叉验证
  10. 如何打造高质量的NLP数据集
  11. Soul里的“盲盒”交友
  12. 通讯:白先勇的“八千里路云和月”
  13. JS中调用后台方法进行验证返回值后加?的意思在GridView中指定一列为超级链接并有查询字符串的写法...
  14. 试用蓝牙模块的一点经验整理(Part 3, 关于iBeacon功能 )
  15. 1066 Root of AVL Tree——PAT甲级 | 参考mooc实现完整代码
  16. python如何将字典数据存入excel
  17. Error: docker-ce-cli conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64
  18. CC00155.bigdatajava——|JavaMySQL.高级.V27|——|MySQL.v28|锁分类|
  19. Arcgis 熟练和操作
  20. num2str(matlab自定义函数)

热门文章

  1. 将iphone手机屏幕画面投到Mac上
  2. iOS App构建版本
  3. JSD-2204-反射-Day17
  4. token验证的方法
  5. 高校BBS最HOT的100个笑话(不看保证后悔终身)
  6. 【C语言】已知三角形三边长,求三角形面积
  7. 《地球概论》(第3版)笔记 第三章 地球的运动
  8. 这次GDC China 2015的总结与关卡设计教程的梳理
  9. 集线器,路由器,交换机的作用和区别是什么
  10. ubuntu16.04 update 出现 aborted(core dumped)错误