我們在本示例中,使用Spring3.0 MVC, Spring 3.0 MVC已經(jīng)支持JSON了。
這里我們使用基于注解的方式,也是springMVC 3.0所支持的RESTFul風(fēng)格的。
1.首先加入兩個jar依賴,這里以maven構(gòu)建為例:
Xml代碼
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.4</version>
</dependency>這是spring MVC處理json數(shù)據(jù)時,所必須的jar依賴。
2.在spring mvc的配置文件中加入配置
這里我們使用的是spring mvc的注解,如例:
Xml代碼
<context:component-scan base-package="com.hundsun.twioo.business.action" />
<bean class="org.springframework.web.servlet.mvc.annotation.
DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.
AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<util:list id="beanList">
<ref bean="mappingJacksonHttpMessageConverter"/>
</util:list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.
http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<context:annotation-config/>
<context:component-scan base-package="com.hundsun.twioo.business.action" />
<bean class="org.springframework.web.servlet.mvc.annotation.
DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.
AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<util:list id="beanList">
<ref bean="mappingJacksonHttpMessageConverter"/>
</util:list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.
http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<context:annotation-config/>注意:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter的Bean配置中,我們加入了messageConverters屬性,在該屬性中我們有配置mappingJacksonHttpMessageConverter這個Bean,它就是用來處理json數(shù)據(jù)轉(zhuǎn)換的。
在mappingJacksonHttpMessageConverter的Bean配置中,我們有一個supportedMediaTypes屬性,在這個屬性
中我們添加了text/html;charset=UTF-8這個值,它是為了處理返回的json數(shù)據(jù)的編碼,默認(rèn)是ISO-88859-1的,這里我們把它設(shè)置為UTF-8,如果有亂碼的情況,我們只需要修改這里就可以了。
3.控制器Controller上的注解使用
如例:
Java代碼
@Controller
@RequestMapping("/logins")
public class LoginController {
@Autowired
private LoginManagerService loginManagerService;
@Autowired
private PermitManagerService permitManagerService;
private Logger log = Logger.getLogger(LoginController.class);
/**
* 用戶登錄系統(tǒng)
* @return
*/
@RequestMapping(value="/login")
public ModelAndView login(HttpServletRequest request,HttpSession session){
User user = null;
List<Module> moduleList = null;
try {
//TwiooID
Integer twiooId = ServletRequestUtils.getIntParameter(request, "twiooId");
//群ID
Integer groupId = ServletRequestUtils.getIntParameter(request, "groupId");
user = loginManagerService.login(twiooId, 3);
if(null != user){
moduleList = permitManagerService.findPermit(user.getId());
}
session.setAttribute("user", user);
session.setAttribute("permit", moduleList);
session.setAttribute("twiooId", twiooId);
session.setAttribute("groupId", groupId);
} catch (Exception e) {
e.printStackTrace();
log.error("LoginController.login() execute error!!!");
}
System.out.println("login...................");
return new ModelAndView("index");
}
/**
* 用戶退出系統(tǒng)
* @return
*/
@RequestMapping(value="/exit")
public ModelAndView exit(HttpServletRequest request,HttpSession session){
session.removeAttribute("user");
session.removeAttribute("permit");
session.removeAttribute("twiooId");
session.removeAttribute("twiooId");
System.out.println("exit....................");
return new ModelAndView("index");
}
/**
* 測試返回JSON數(shù)據(jù)
* @param session
* @return
*/
@RequestMapping(value="/test")
@ResponseBody
public Object test(HttpSession session){
System.out.println("test....................");
return session.getAttribute("permit");
}
public LoginManagerService getLoginManagerService() {
return loginManagerService;
}
public void setLoginManagerService(LoginManagerService loginManagerService) {
this.loginManagerService = loginManagerService;
}
public PermitManagerService getPermitManagerService() {
return permitManagerService;
}
public void setPermitManagerService(PermitManagerService permitManagerService) {
this.permitManagerService = permitManagerService;
}
}
注意:test()方法上,我們使用了一個@ResponseBody的注解,Spring3.0 MVC @ResponseBody的作用是把返回值直接寫到HTTP response body里。 test()這個方法就是我們這里關(guān)注的地方,它就是返回json數(shù)據(jù)到客戶端去的。還要注意,這個test()方法返回的是Object(這里可以是任意類型),而不ModelAndView。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。