SpringMVC是基本請求響應模式的框架。html
在項目中集成SpringMVC框架首先須要導入相關的jar包,所需包具體以下:java
commons-dbcp.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-logging-1.1.1.jar
jackson-annotations-2.2.3.jar
jackson-core-2.2.3.jar
jackson-databind-2.2.3.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-context-support-4.2.3.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-jdbc-4.2.3.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
spring-webmvc-4.1.6.RELEASE.jarweb
在導入相關jar包以後須要配置web.xml文件與SpringMVC相關聯,完整web.xml文件以下:ajax
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>springMVC</display-name> <servlet> <servlet-name>demo</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>demo</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
在web.xml中關於springMVC的兩個標籤是<servlet></servlet>和<servlet-mapping></servlet-mapping>spring
這兩個標籤的第一個子標籤<servlet-name>要互相對應保持一致express
<servlet>標籤的子標籤<servlet-class>指定路由的處理類json
<servlet-mapping>標籤的子標籤<url-pattern>指定被攔截的路由模式,上面的配置表示系統中全部以.do結尾的請求都交給org.springframework.web.servlet.DispatcherServlet來進行處理mvc
<servlet>標籤的子標籤<init-param>表示參數的配置,<init-param>的子標籤<param-name>設置爲contextConfigLocation,<param-value>標籤表示contextConfigLocation的值,其值classpath:mvc.xml表示路徑是在src目錄下的mvc.xml,mvc.xml表示具體的關於springMVC應用的配置,若是不進行<init-param>的配置則springMVC的具體的配置文件要指定爲[name]-servlet.xml,[name]表示<servlet-name>的值app
<load-on-value>表示項目啓動則配置生效框架
在web.xml配置完成以後須要對springMVC.xml文件來進行配置
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 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"> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html; charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html; charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/pages/"/> </bean> <context:component-scan base-package="com.wx.controller"/> </beans>
beans裏面的第一個bean表示開啓註解掃描
beans裏面的第二個bean表示註解映射器
beans裏面的第三個bean表示註解適配器,主要實現了返回一個json數據的功能。第二和第三的要有綁定關係,要麼全寫,要麼全不寫
beans裏面的第四個bean表示視圖解析器,裏面的<property name=prefix value="/WEB-INF/pages"/>表示對返回的視圖添加前綴,與之對應的就是添加後綴,使用方式爲<property name="sufix" value=".jsp">,例如controller類中一個方法return "demo",則最終的結果爲/WEB-INF/pages/demo.jsp
最後一行表示配置文件對com.wx.controller下的全部java文件起做用(掃描裏面的註解)
至此完成了一個最簡單的springMVC的配置。
在springMVC的配置文件中咱們指明瞭監控com.wx.controller包內的全部文件的註解,咱們在該包內新建一個DemoController.java文件,最終其內容以下:
package com.wx.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class DemoController { @RequestMapping("/demo/html.do") public String toHtml(){ return "html.html"; } @RequestMapping("/demo/jsp.do") public String toJSP(){ return "jsp.jsp"; } }
在WEB-INF下的pages文件中新建html.html和jsp.jsp文件
運行項目在地址輸入/demo/html.do能夠跳轉到html.html頁面,輸入/demo/jsp.do能夠跳轉到jsp.jsp頁面
咱們在客戶端已發出以下的請求:
$(function(){ var data = { name:"zt", age:23 } $.ajax({ url:"http://zt:8088/springmvc-demo/demo/send.do", type:"post", data:JSON.stringify(data), contentType:"application/json; charset=utf-8" }).done(function(data){ console.log(data); }).fail(function(){ console.error("server error"); })
在服務端的controller類中添加對應的處理方法:
@RequestMapping("/demo/send.do") @ResponseBody public List<Person> send(@RequestBody User user){ System.out.println("client send age:"+user.getAge()); System.out.println("client send name:"+user.getName()); List<Person> list = new ArrayList<Person>(); Person p1 = new Person("張三",23); Person p2 = new Person("李四",22); list.add(p1); list.add(p2); return list; }
@ResponseBody表示返回的是數據再也不是頁面再也不須要視圖解析器的處理
User是一個實體類用來接收從客戶端發送過來的數據,前面要用@RequestBody來進行修飾
此時客戶端也能夠正確的接收到服務端返回的JSON數據:[{"name":"張三","age":23},{"name":"李四","age":22}]