锦州滨海新区城市建设规划网站,重庆网站建设快忻科技,想学电商去哪学,店铺推广方案怎么写HttpMessageConverter HttpMessageConverter:报文信息转换器#xff0c;将请求报文转换为Java对象#xff0c;或将Java对象转换为响应报文。它提供了两个注解和两个类型#xff1a; RequestBody, ResponseBody, RequestEntity, ResponseEntity(响应用的较多) 准备 创建模块并…HttpMessageConverter HttpMessageConverter:报文信息转换器将请求报文转换为Java对象或将Java对象转换为响应报文。它提供了两个注解和两个类型 RequestBody, ResponseBody, RequestEntity, ResponseEntity(响应用的较多) 准备 创建模块并完成配置文件编写 success.html
!DOCTYPE html
html langen
headmeta charsetUTF-8 xmlns:thhttp://www.thymeleaf.orgtitleTitle/title
/head
body
success
/body
/htmlweb.xml
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--配置编码过滤器--filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-paraminit-paramparam-nameforceResponseEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--配置请求方式put和delete的hiddenHttpMethodFilter--filterfilter-nameHiddenHttpMethodFilter/filter-namefilter-classorg.springframework.web.filter.HiddenHttpMethodFilter/filter-class/filterfilter-mappingfilter-nameHiddenHttpMethodFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--配置springMVC的前端控制器DispatcherServlet--servletservlet-nameDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springMVC.xml/param-value/init-param!--将前端控制器的时间提前到服务器启动时--load-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping
/web-appSpringMVC.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--开启扫描组件--context:component-scan base-packagecom.louis/context:component-scan!--配值Thymeleaf视图解析器--bean idviewResolver classorg.thymeleaf.spring5.view.ThymeleafViewResolverproperty nameorder value1/property namecharacterEncoding valueUTF-8/property nametemplateEnginebean classorg.thymeleaf.spring5.SpringTemplateEngineproperty nametemplateResolverbean classorg.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolverproperty nameprefix value/WEB-INF/templates//property namesuffix value.html/property nametemplateMode valueHTML5/property namecharacterEncoding valueUTF-8//bean/property/bean/property/bean
/beansRequestBody RequestBody可以获取请求体需要在控制方法设置一个形参使用RequestBody进行标识当前请求的请求体就会为当前注解所标识的形参赋值(只求POST请求方式才会有请求体) HttpController
Controller
public class HttpController {RequestMapping(/testRequestBody)public String testRequestBody(RequestBody String requestBody){System.out.println(requestBody requestBody);return success;}
}index.html
!DOCTYPE html
html langen
headmeta charsetUTF-8 xmlns:thhttp://www.thymeleaf.orgtitle首页/title
/head
body
h3首页/h3
form th:action{/testRequestBody} methodpostinput typetext nameusernameinput typetext namepasswordinput typesubmit value测试RequestBody
/form
/body
/html测试 控制台 RequestEntity RequestEntity封装请求报文的一种类型需要在控制器方法的形参中设置该类型的形参当前请求的请求报文就会赋值给该形参可以通过getHeaders()获取请求头信息通过getBody()获取请求体信息。 index.html
form th:action{/testRequestEntity} methodpostinput typetext nameusernameinput typetext namepasswordinput typesubmit value测试RequestEntity
/formHttpController
RequestMapping(/testRequestEntity)
public String testRequestEntity(RequestEntityString requestEntity){//当前的RequestEntity表示整个请求报文的信息System.out.println(获取请求头: requestEntity.getHeaders());System.out.println(获取请求体: requestEntity.getBody());return success;
}测试 后端 ResponseBody ResponseBody用于标识一个控制器方法可以将该方法的返回值直接作为响应报文的响应体响应到浏览器。将数据响应到浏览器的方法有如下两种。 ①直接使用ServletAPI
index.html
a th:href{/testResponse}通过servletAPI的response对象响应浏览器数据/aHttpController
RequestMapping(/testResponse)
public void testResponse(HttpServletResponse response) throws IOException {response.getWriter().write(hello response);
}测试 ②使用ResponseBody 为了便于区分将success中的内容修改为如下 h3success/h3index.html
a th:href{/testResponseBody}通过ResponseBody响应浏览器数据/aHttpController
RequestMapping(/testResponseBody)
ResponseBody
public String testResponseBody(){/*加上ResponseBody之后返回的就不再是视图名称而是当前响应的响应体*/return success;
}测试 不加ResponseBody SpringMVC处理json
创建User对象
public class User {private Integer id;private String username;private String password;private Integer age;private String sex;public User() {}public User(Integer id, String username, String password, Integer age, String sex) {this.id id;this.username username;this.password password;this.age age;this.sex sex;}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}
}添加依赖 使用ResponseBody给浏览器响应对象数据需要先导入jackson,因为浏览器不会识别对象类型。 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.15.2/version
/dependency开启mvc的注解驱动 在SpringMVC的核心配置文件中开启mvc的注解驱动此时在HandlerAdaptor中会自动装配一个消息转换器MappingJackson2HttpMassageConvweter,可以将响应到浏览器的Java对象转换为Json格式的字符传输。 mvc:annotation-driven/mvc:annotation-driven使用ResponseBody标识 在控制器方法上使用ResponseBody注解进行标识这时将java对象直接作为控制器方法的返回值返回就会自动转换为Json格式的字符串。 HttpController
RequestMapping(/testResponseUser)
ResponseBody
public User testResponseUser(){/*加上ResponseBody之后返回的就不再是视图名称而是当前响应的响应体*/return new User(1001, khan, 1212, 22, 男);
}index.html
a th:href{/testResponseUser}通过ResponseBody响应浏览器User数据/a测试 SpringMVC处理ajax
导入静态资源axios.js 可以到进行下载 在springMVC.xml中配置
!--开放对静态资源的访问--
mvc:default-servlet-handler/index.html
div idappa clicktestAxios th:href{/testAxios}测试SpringMVC处理ajax/a
/div
script th:src{/static/js/axios-0.18.0.js}/script
script th:src{/static/js/vue.js}/script
scriptnew Vue({el:#app,methods:{testAxios(event){axios({method:post,url:event.target.href,params:{username:louie,password:1212} }).then(function (resp){alert(resp.data);});/*取消超链接的默认行为*/event.preventDefault(); }}})
/scriptHttpController
RequestMapping(/testAxios)
ResponseBody
public String testAxios(String username, String password){System.out.println(username, username password password);return hello ajax;
}测试 RestController注解 RestController注解是SpringMVC提供的一个复合注解标识在控制器的类上就相当于给类添加了Controller注解并且为其中的每个方法添加了ResponseBody注解 RespondseEntity 用于控制器方法的返回值类型该控制器方法的返回值就是响应到浏览器的响应报文。它可以用来实现文件下载功能。