国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于SpringMVC Json使用

2019-11-14 22:13:51
字體:
來源:轉載
供稿:網友
關于SPRingMVC Json使用

很簡單的一個東西,這里就不做過多介紹了,寫一個小Demo,隨手記錄下。

首先,在搭好SpringMVC工程環境之后,如果想用Spring自帶的Json,需要額外的添加2個JAR包:

1、jackson-core-asl-1.9.9.jar

2、jackson-mapper-asl-1.9.9.jar

我這里使用的是Maven,也相對應的給出pox.xml

 1         <dependency> 2             <groupId>org.codehaus.jackson</groupId> 3             <artifactId>jackson-core-lgpl</artifactId> 4             <version>1.8.1</version> 5         </dependency> 6  7         <dependency> 8             <groupId>org.codehaus.jackson</groupId> 9             <artifactId>jackson-mapper-lgpl</artifactId>10             <version>1.8.1</version>11         </dependency>

當然也可以不使用Spring自帶的Json,還有很多第三方的Json支持包,比如谷歌的Gson,都是很好用的東西。

關于Gson的使用,之前的文章里也有做介紹,請戳:《Gson簡要使用筆記》http://m.survivalescaperooms.com/lichenwei/p/3987429.html

好了,進入正題,要使用Spring自帶的Json,需要在SpringMVC配置文件里做一些配置:

 1     <!-- 處理在類級別上的@RequestMapping注解 --> 2     <bean 3         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 4     <!-- 處理在方法級別上的@RequestMapping注解 --> 5     <bean 6         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 7         <property name="messageConverters"> 8             <list> 9                 <bean10                     class="org.springframework.http.converter.StringHttpMessageConverter">11                     <property name="supportedMediaTypes">12                         <list>13                          <!-- 默認是ISO-88859-1,避免亂碼這里設置為UTF-8 -->14                             <value>15                                 text/html;charset=UTF-816                             </value>17                         </list>18                     </property>19                 </bean>20                 <!-- 啟動JSON格式的配置 -->21                 <bean id="jacksonMessageConverter"22                     class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">23                     <!-- 解決 HttpMediaTypeNotAcceptableException: Could not find acceptable 24                         representation -->25                     <property name="supportedMediaTypes">26                         <list>27                             <value>application/json;charset=UTF-8</value>28                         </list>29                     </property>30                 </bean>31             </list>32         </property>33     </bean>

有了以上的配置之后,我們只需要在對應處理Ajax請求的方法上加上注解@ResponseBody,這樣Spring就會幫我們把內容或對象作為HTTP響應的正文返回,會跳過視圖處理部分,而調用適合HttpMessageConverter,將返回值(對象、字符串、List集合等)寫入輸出流。

SpringMVC的用法這里就不再多說了,直接給出關鍵代碼:

    //向頁面直接輸出Json字符串    @ResponseBody    @RequestMapping(value="/showUser",params="json",produces="application/json")    public User showUserJson(){        User user=userService.getUserById(1);//獲取數據庫的一條信息        return user;    }

@RequestMapping

value: 指定請求的實際地址,指定的地址可以是URI Template 模式(后面將會說明);

produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;

params: 指定request中必須包含某些參數值,才讓該方法處理。

看一下頁面輸出:

怎么樣?相比Struts2輸出Json要簡單的多吧,少去了很多配置和通配符的設定。

再來看一下和AJAX的配合使用,服務端的代碼依舊如上,然后我們寫一個jsp頁面進行測試

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <% 4     String path = request.getContextPath(); 5     String basePath = request.getScheme() + "://" 6             + request.getServerName() + ":" + request.getServerPort() 7             + path + "/"; 8 %> 9 <html>10 <head>11     <script type="text/Javascript" src="<%=basePath %>js/jquery-1.4.4.min.js"></script>12     <script type="text/javascript">13         $(document).ready(function(){14             $("#send").click(function(){15                     $.ajax({16                         type:"get",17                         url:"<%=basePath %>userController/showUser?json",18                         dataType:" json",19                         success:function(data){    20                             alert(data);21                         }22                     });23             });24         });25     </script>26 </head>27 <body>28 <h3>點擊下面按鈕,輸出Json信息</h3>29 <input type="button" id="send" name="send" value="獲取json信息">30 </body>31 </html>

這里要提到一個注意事項,我們在整合SpringMVC的時候需要在web.xml進行對DispatcherServlet的配置

 1     <!-- SpringMVC配置 --> 2     <servlet> 3         <servlet-name>springDispatcherServlet</servlet-name> 4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5         <init-param> 6             <param-name>contextConfigLocation</param-name> 7             <param-value>classpath:springmvc.xml</param-value> 8         </init-param> 9         <load-on-startup>1</load-on-startup>10     </servlet>11 12     <servlet-mapping>13         <servlet-name>springDispatcherServlet</servlet-name>14         <url-pattern>/</url-pattern>15     </servlet-mapping>

如果你配置DispatcherServlet攔截*.do就不會存在靜態資源訪問的問題,

但如果你和我一樣配置DispatcherServlet攔截 / (所有),那么對*.js,*.CSS,*.jpg等資源的訪問也就被攔截了,也就訪問不到了。

這里順帶說下解決方法:

激活Tomcat的defaultServlet來處理靜態文件

 1 <servlet-mapping> 2     <servlet-name>default</servlet-name> 3     <url-pattern>*.jpg</url-pattern> 4 </servlet-mapping> 5 <servlet-mapping> 6     <servlet-name>default</servlet-name> 7     <url-pattern>*.js</url-pattern> 8 </servlet-mapping> 9 <servlet-mapping>10     <servlet-name>default</servlet-name>11     <url-pattern>*.css</url-pattern>12 </servlet-mapping>  

每種文件類型都要配置,要寫在DispatcherServlet的前面, 讓defaultServlet先攔截,這個就不會進入Spring了。

看下實現效果:


上一篇:Java基本語法

下一篇:hdu 1002大數(Java)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海城市| 恩施市| 沧州市| 班戈县| 乌拉特前旗| 道真| 罗江县| 昌黎县| 五家渠市| 杨浦区| 鄂温| 密山市| 寻乌县| 平罗县| 玉田县| 大竹县| 榕江县| 潮安县| 临安市| 射阳县| 视频| 青海省| 临沧市| 澎湖县| 福贡县| 磐石市| 崇左市| 平定县| 康乐县| 和林格尔县| 乌苏市| 馆陶县| 明溪县| 罗田县| 张家港市| 蓬溪县| 鲜城| 临江市| 治县。| 酒泉市| 咸丰县|