rest-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
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">
<!-- 自动扫描且只扫描@Controller -->
<context:component-scan base-package="cn.wsn.wot.api.web.controller" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<!-- 定义首页 -->
<mvc:view-controller path="/" view-name="redirect:/home/index" />
<!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
<!-- json转换器 -->
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
<!-- 配置RestTemplate -->
<!--Http client Factory-->
<bean id="httpClientFactory" class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
</bean>
<!-- RestTemplate -->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="httpClientFactory"/>
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="1">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>wot</display-name>
<!-- Spring配置文件开始 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/spring-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring配置文件结束 -->
<!-- 可以使用RequestContextHolder.currentRequestAttributes() 获取到请求的attr -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- Spring 刷新Introspector防止内存泄露 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- 设置servlet编码开始 -->
<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>
<!-- 设置servlet编码结束 -->
<!-- 让form支持PUT,DELETE等方法 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>DispatcherServlet</servlet-name>
</filter-mapping>
<!-- 配置控制器 -->
<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/rest-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--druid 监控-->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
<init-param>
<param-name>principalSessionName</param-name>
<param-value>username</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- druid监控 -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/admin/monitor/druid/*</url-pattern>
</servlet-mapping>
</web-app>
代码:
@RequestMapping(value = "/testCreateDevice")
public @ResponseBody String testCreateDevice() {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("WOT-ApiKey","d2427a2f-6524-40c9-bc63-cc58eb640988");
/*String body = "["
+"{\"serial_no\":\"abc123\","
+ "\"location\":\"320200\","
+ "\"longitude\":0.453,"
+ "\"latitude\":0.786},"
+"{\"serial_no\":\"321cba\","
+ "\"location\":\"320201\","
+ "\"longitude\":0.454,"
+ "\"latitude\":0.787}"
+"]";*/
String body = "[{\"serial_no\":\"abc123\",\"location\":\"320200\",\"longitude\":\"0.453\",\"latitude\":\"0.786\"},{\"serial_no\":\"321cba\",\"location\":\"320201\",\"longitude\":\"0.454\",\"latitude\":\"0.787\"}]";
HttpEntity<String> requestEntity = new HttpEntity<String>(body, requestHeaders);
String url = "http://localhost:8080/wot/products/{product_id}/devices";
Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("product_id", "1001");
ResponseEntity<String> responseEntity = restTemplate.exchange(url,
HttpMethod.POST, requestEntity, String.class, uriVariables);
String result = "responseEntity.getBody():" + responseEntity.getBody()
+ "responseEntity.getHeaders():" + responseEntity.getHeaders()
+ "responseEntity.getStatusCode():" + responseEntity.getStatusCode();
return result;
}
@RequestMapping(produces = "application/json",
method = RequestMethod.POST,
value = "/{product_id}/devices")
public ResponseEntity<String> creatDevice(@RequestHeader("WOT-ApiKey") String WOT_ApiKey,
@RequestBody String body,
@PathVariable("product_id") String product_id) {
// 1.通过WOT_ApiKey鉴权
System.out.println("WOT_ApiKey:" + WOT_ApiKey);
// 2.鉴权通过之后把body转换成POJO
System.out.println("body:" + body);
List<Device> deviceList = JsonUtils.convertJson2List(body, Device.class);
// 3.持久化POJO,并返回所需要的结果
if(null != deviceList && deviceList.size() > 0) {
for(Device device : deviceList) {
if("abc123".equals(device.getSerialNo())) {
device.setDeviceId("1001201");
} else if("321cba".equals(device.getSerialNo())) {
device.setDeviceId("1001202");
}
}
}
String responseJson = "";
try {
responseJson = new ObjectMapper().writeValueAsString(deviceList);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new ResponseEntity<String>(responseJson, HttpStatus.CREATED);
}
public static List convertJson2List(String json, Class clazz) {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
JavaType valueType = mapper.getTypeFactory().constructParametricType(ArrayList.class, clazz);
try {
json = json.replace("\\", "");
return mapper.readValue(json, valueType);
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
新手,不知道是哪里没配好么?
相关推荐
在Spring MVC框架中,JSON(JavaScript Object Notation)支持是必不可少的,因为它允许应用程序与客户端进行数据交换,尤其是在构建RESTful服务时。JSON格式轻便、易于读写,且被广泛接受为网络通信的标准数据格式...
本文将详细介绍如何在SpringMVC中后台转换JSON格式,以解决406错误问题。 406错误通常发生在客户端发送了Accept头,表明它期望接收某种特定类型的数据,但服务器无法提供这种类型的数据。在Ajax请求中,这个Accept...
在现代Web应用中,数据交换通常涉及JSON(JavaScript Object Notation)格式,因为JSON轻量级、易于解析,并且被大多数现代浏览器和服务器支持。Spring MVC 提供了对JSON的内置支持,使得开发人员可以轻松地在服务器...
《SpringMVC与JSON库的整合详解》 在现代Web开发中,SpringMVC作为一款强大的MVC框架,被广泛应用于构建企业级的Java应用程序。而JSON作为一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和...
@RequestMapping(value = "/getJSON", method = RequestMethod.GET) public @ResponseBody MyObject getJsonData() { // 创建MyObject实例并填充数据 MyObject obj = new MyObject(); // ... return obj; } ...
在这个"springMVC 多视图配置(Jsp Freemarket Json)实例"中,我们将探讨如何在 SpringMVC 中设置多种视图解析器来支持 Jsp、FreeMarker 和 Json 格式的响应。 **1. 视图解析器 (View Resolver)** 在 SpringMVC ...
在描述中提到的文件"springmvc-json"可能包含了Spring MVC与JSON交互所需的一些依赖,如Jackson库的jar文件。Jackson库由多个组件组成,主要包括: 1. **Jackson-core**: 这是Jackson库的基础模块,提供了基本的...
SpringMVC支持JSON序列化和反序列化,允许服务器将Java对象转换为JSON字符串发送给客户端,以及将客户端发送的JSON数据转换回Java对象。这个过程中,Jackson库扮演了关键角色。 Jackson是Java领域中广泛使用的JSON...
本示例"springMVC json格式转换demo"将展示如何在Spring MVC应用中处理JSON格式的数据。 首先,确保你的项目依赖于`spring-web`模块,因为该模块包含了处理JSON所需的支持。在Maven的pom.xml文件中,添加以下依赖:...
"springmvc3+json参数传递后台接收json参数"这个主题涉及到的是如何使用Spring MVC 3版本接收前端通过JSON格式发送的数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写,...
在IT行业中,SpringMVC和JSON是两个非常重要的技术组件,尤其在开发Web应用程序时。SpringMVC作为Spring框架的一部分,提供了强大的模型-视图-控制器(MVC)架构支持,而JSON则是一种轻量级的数据交换格式,常用于...
SpringMVC 提供了对JSON处理的支持,使得服务器可以方便地将数据转换为JSON格式发送给客户端,或者接收客户端发送的JSON数据。在这个"SpringMVC-json2.8.7"的压缩包中,包含了处理JSON的三个关键组件,分别是: 1. ...
springmvc,mybaitis json jar包Spring各jar包详解spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar,aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。 spring-src.zip就是所有的源...
SpringMVC 开发json接口Demo(含数据库、jar包)。包含:1、SpringMVC 开发json接口.docx;2、springmvc_project.rar;3、students_manage.sql
在现代Web开发中,JSON(JavaScript Object Notation)已经成为一种广泛使用的数据交换格式,它轻量级、易于读写,并且被大多数编程语言所支持。Spring MVC,作为Spring框架的一部分,提供了一种优雅的方式来处理...
Spring MVC、Ajax 和 JSON 是现代Web开发中的关键技术,它们共同构建了高效、动态的用户界面。下面将详细解释这三个技术及其在实际应用中的结合。 **Spring MVC** Spring MVC 是 Spring 框架的一部分,用于构建基于...
在Spring MVC框架中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它轻量级、易读写,被广泛用于前后端数据交互。要使Spring MVC能够处理JSON请求和响应,我们需要集成一个JSON库,如Jackson。在...
在SpringMVC框架中,处理视图的呈现是至关重要的,尤其在当今Web应用程序中,JSON和XML格式的数据传输越来越普遍。SpringMVC为开发者提供了便捷的方式,将Java对象转换成JSON或XML视图,使得数据交换更加灵活。本文...
在Spring MVC框架中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它被广泛用于Web服务和客户端之间的通信。为了使Spring MVC能够处理JSON数据,我们需要依赖特定的库来进行对象到JSON字符串以及...