一、创建工程
1、创建maven工程,添加maven-archetype-webapp模版
2、添加依赖
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>4.0.1.RELEASE</spring.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- log4j 日志jar--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 连接mysql5 的驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.10</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.2</version></dependency><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.2</version></dependency><!-- 参考版本对应 http://www.mybatis.org/spring/ --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 数据源管理 使用了dbcp2数据 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-dbcp2</artifactId><version>2.1.1</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- commons 文件上传jar --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>1.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!-- jstl --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 加入JSON转换工具 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency></dependencies>
3、配置springmvc-config.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: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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
"><!-- 扫描控制器的注解 --><context:component-scan base-package="com.controller"></context:component-scan><!--开启了注解驱动--><mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property></bean><bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property><property name="features"><list><value>WriteDateUseDateFormat</value></list></property></bean></mvc:message-converters></mvc:annotation-driven><!-- 配置视图解析器 作用:解析逻辑视图,转换为真正的视图地址 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=""></property></bean><!-- 解决静态资源的加载问题,屏蔽真实的访问目录mapping 对应的是引用时的路径location 项目结构中真实的文件路径--><mvc:resources mapping="/static/**" location="/static/"/><!--<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">--><!--<property name="exceptionMappings">--><!--<props>--><!--<prop key="java.lang.RuntimeException">error.jsp</prop>--><!--</props>--><!--</property>--><!--</bean>--><!-- 上传解析器 id需要设置为multipartResolver --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="UTF-8"></property><property name="maxUploadSize" value="50000000"></property></bean><!-- <mvc:interceptors>-->
<!-- <mvc:interceptor>-->
<!-- <mvc:mapping path="/sys/**"/>-->
<!-- <mvc:exclude-mapping path="/sys/test02"/>-->
<!-- <bean class="com.xinsilu.controller.interceptor.SysInterceptor"></bean>-->
<!-- </mvc:interceptor>-->
<!-- </mvc:interceptors>--></beans>
并根据配置内容,创建相应的目录。static、jsp、controller等。
3、配置web.xml
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><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>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
4、创建controller
package com.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello.jsp";}}
5、配置tomcat,并运行测试。
二、接收请求中的参数
@RequestMapping("/login")
@ResponseBody
public String user(String username,String password){System.out.println(username+"---"+password);return "hello.jsp";
}
@RequestMapping("/addUser")
@ResponseBody
public User addUser(@RequestBody User user){return user;
}
三、统一接口返回格式
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version><scope>provided</scope></dependency>
package com.util;import lombok.Data;import java.io.Serializable;@Data
public class ResultUtil<T> implements Serializable {public static final Integer SUCCESS_CODE = 2000;public static final Integer FAIL_CODE = 4000;public static final String SUCCESS_MESSAGE = "success";public static final String FAIL_MESSAGE = "fail";/*** 返回状态码*/private Integer code;/*** 返回信息*/private String message;/*** 返回数据*/private T data;private ResultUtil() {}public static <T> ResultUtil<T> success() {ResultUtil<T> resultUtil = new ResultUtil<>();resultUtil.setCode(SUCCESS_CODE);resultUtil.setMessage(SUCCESS_MESSAGE);return resultUtil;}public static <T> ResultUtil<T> success(T data) {ResultUtil<T> resultUtil = success();resultUtil.setData(data);return resultUtil;}public static <T> ResultUtil<T> success(String message, T data) {ResultUtil<T> resultUtil = success();resultUtil.setMessage(message);resultUtil.setData(data);return resultUtil;}public static <T> ResultUtil<T> success(Integer code, String message, T data) {ResultUtil<T> resultUtil = new ResultUtil<>();resultUtil.setCode(code);resultUtil.setMessage(message);resultUtil.setData(data);return resultUtil;}public static <T> ResultUtil<T> fail() {ResultUtil<T> resultUtil = new ResultUtil<>();resultUtil.setCode(FAIL_CODE);resultUtil.setMessage(FAIL_MESSAGE);return resultUtil;}public static <T> ResultUtil<T> fail(T data) {ResultUtil<T> resultUtil = fail();resultUtil.setData(data);return resultUtil;}public static <T> ResultUtil<T> fail(String message, T data) {ResultUtil<T> resultUtil = fail();resultUtil.setMessage(message);resultUtil.setData(data);return resultUtil;}public static <T> ResultUtil<T> fail(Integer code, String message) {ResultUtil<T> resultUtil = fail();resultUtil.setCode(code);resultUtil.setMessage(message);return resultUtil;}public static <T> ResultUtil<T> fail(Integer code, String message, T data) {ResultUtil<T> resultUtil = new ResultUtil<>();resultUtil.setCode(code);resultUtil.setMessage(message);resultUtil.setData(data);return resultUtil;}}
修改controller
@RequestMapping("/addUser")@ResponseBodypublic Object addUser(@RequestBody User user){return ResultUtil.success(user);}