1.下载spring相关jar
去哪里下载就不说了
要想支持json,需要下载 jackson-all-1.9.5.jar(版本看情况,下载合适的)
2.配置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"> <filter> <filter-name>sitemesh</filter-name> <filter-class> org.sitemesh.config.ConfigurableSiteMeshFilter </filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>Spring3</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring/*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring3</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Spring3</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <!--编码过滤器--> <filter> <filter-name>encodingFilter</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>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
应该都能看懂
3.配置spring的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <!-- Spring要扫描的包 --> <context:component-scan base-package="com.mm" /> <!-- 支持JSON 需要加入 jackson-all-1.9.5.jar --> <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 /> <mvc:annotation-driven/> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" /> <!-- SpringMVC过滤 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
这里面尤其 注意要加上 util 的命名空间
注意:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter的Bean配置中,我们加入了messageConverters属性,在该属性中我们有配置mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。
在mappingJacksonHttpMessageConverter的Bean配置中,我们有一个supportedMediaTypes属性,在这个属性
中我们添加了text/html;charset=UTF-8这个值,它是为了处理返回的json数据的编码,默认是ISO-88859-1的,这里我们把它设置为UTF-8,如果有乱码的情况,我们只需要修改这里就可以了。
4.写个测试方法
@Controller
@RequestMapping("/test")
public class TestAction extends BaseAction {
@RequestMapping(value = "/test9", method = RequestMethod.GET)
@ResponseBody
public User test9(HttpServletRequest req) {
User u = new User();
u.setName("张三");
u.setPassword("123");
return u;
}
}
注意:方法上,我们使用了一个@ResponseBody的注解,Spring3.0 MVC @ResponseBody的作用是把返回值直接写到HTTP response body里。 这个方法就是我们这里关注的地方,它就是返回json数据到客户端去的。还要注意,这个方法返回的可以是任意类型,而不ModelAndView。
5.运行效果
=====================================================
题外话,怎么使用SpringMVC的模型驱动接收Form参数?
1.Form这么写
<form action="test8.html" method="post">
<table width="600px">
<tr>
<td>用户名:</td>
<td><input type="text" name="name"> </td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="password"> </td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"> </td>
</tr>
</table>
</form>
2.Action这么写
/**
* 测试使用 模型驱动 接收Form表单的参数
* <br>页面只能直接写模型中的字段名称
*
* @param user
* @param name
* @param req
* @return
*/
@RequestMapping(value = "/test8", method = RequestMethod.POST)
public String test81(@ModelAttribute("user")User user,@RequestParam("name")String name,HttpServletRequest req) {
// System.out.println(name);
System.out.println(user);
return "test/test8";
}