1:导入的包
<!--导入我们的Servlet的API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--导入我们jstl的标签库的包 --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>javax.servlet.jsp.jstl-api</artifactId> <version>1.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> <!--导入我们的mybatis运行的时候的一些依赖包日志相关的 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--导入的是日志相关的包 --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!--带入cglib代理的包 --> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.4</version> </dependency> <!--引入junit类 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--导入我们Spring的相关包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!--介入aspectj的相关包 --> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.11</version> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency> <!--使用Swagger2的包 需要导入如下的包--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.5</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.71</version> </dependency>2.配置文件 2.1 bean-base.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" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--配置扫描 spring的扫描--> <context:component-scan base-package="com.qf.meeting"></context:component-scan> <!--配置aop的自动代理--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans>2.2 SpringMvc的配置
<?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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.qf.meeting.controller"></context:component-scan> <!-- 开启自动扫描 扫描controller--> <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/> <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/> <mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <!--spring消息转换器 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/> <!--解决@Responcebody中文乱码问题 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"></constructor-arg> </bean> <!--配合fastjson支持 --> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="defaultCharset" value="UTF-8"></property> <property name="supportedMediaTypes"> <list> <!--顺序保持这样,避免IE下载出错 --> <value>text/html;charset=UTF-8</value> <value>application/json</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> </beans>3.config的包 就是Swagger的配置
/** * @Author pao * @Date 2020/7/3 12:46 * @Description:这个就是swagger2的配置 * 注意:这个类的地址必须被spring扫描到 */ @Configuration //表示的是一个配置文件 @EnableSwagger2 //使能swagger2 @EnableWebMvc //使能Webmvc public class Swagger2Config { @Bean public Docket docket(){ System.out.println("执行了"); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo())//接口文档的信息 .select() //下面这个意思是要扫描包的文档 .apis(RequestHandlerSelectors.basePackage("com.qf.meeting.controller")) //扫描包的任何一个接口 都要打包 .paths(PathSelectors.any()) .build(); } /** * 接口本身信息的描述 * @return */ public ApiInfo apiInfo(){ //构建者设计模式 return new ApiInfoBuilder() .title("网站接口") .description("无敌是多么寂寞") .version("v1.0") .contact("xuPaoTai") .build(); } }4.控制层的写法
@RestController //@RequestMapping("/users") @Api(value="用户接口",description = "用户接口") //这个注解的主要意思是说 这个类是谁的接口 public class UserController { /** * * @param userName * @param password * * ApiOperation:主要是说明这个接口是用来干嘛的 * value:表示的是这个接口的名字 * notes:表示使用这个接口的注意事项 * @ApiImplicitParams这个注解是在有多个参数的时候 使用 * @ApiImplicitParam:表示的是单个参数使用的注解 * * paramType:这个表示的是参数的传输类型 * query:如果你设置的是这个值 那么 下面的单个参数使用 @RequestParam这个注解接受 普通的 * path:如果设置的是这个值 那么使用@PathVariable来进行接受 http://127.0.0.1:8080/users/{id} * header:这个表示的 是参数 放到 请求头里的 token * body/form :几乎不会用到 * name:表示的是下面你对应的那个参数的名字 * value:写这个参数的具体含义 * required:是不是这个参数在使用的时候 一定要传递 * dataType:表示的是当前参数的类型 * * * @return */ @ApiOperation(value ="登陆接口",notes = "用户名和密码不能为null") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "userName", value = "用户名", required = true, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "password", value = "密码", required = true, dataType = "String") } ) @RequestMapping(value = "/login",method = RequestMethod.GET) public User login(String userName,String password){ System.out.println("我执行了...."); return new User(1,"小波波","123"); } /** * 通过用户的id找到用户 * @param id * @return */ @RequestMapping(value = "findUserById",method = RequestMethod.GET) @ApiOperation(value = "通过用户找用户",notes = "用户id不能为null") @ApiImplicitParam(paramType = "query",name = "id", value = "用户id",required = true,dataType = "Integer") public User findUserById(int id){ return new User(1,"中国好","小日本"); } /** * 添加数据 * @param user * @return */ @RequestMapping(value = "add",method = RequestMethod.POST) @ApiOperation(value = "添加用户到数据库",notes = "用户对象传递json格式") public ResponseResult add(@RequestBody User user){ ResponseResult responseResult = new ResponseResult(); responseResult.setStatus(0); return responseResult ; } @RequestMapping(value = "findUserAll",method = RequestMethod.GET) @ApiOperation(value = "查询所有的用户",notes = "前端请求必须传输token做身份校验") @ApiImplicitParam(paramType = "header",name = "token",value = "用户token",required = true,dataType = "String") public ResponseResult findUserAll(HttpServletRequest request){ //token是放到头里面的 String token = request.getHeader("token"); System.out.println("前端传输过来的token是:"+token); ResponseResult<List<User>> responseResult = new ResponseResult(); responseResult.setStatus(0); List<User> users=new ArrayList<>(); for (int i = 0; i <10 ; i++) { users.add(new User(i,"波波:"+i,"密码:"+i)); } responseResult.setT(users); return responseResult ; } }4.当用用户传递json格式
@Data @NoArgsConstructor @AllArgsConstructor @ApiModel public class User { private int id; @ApiModelProperty(name = "userName",value = "用户名") private String userName; @ApiModelProperty(name = "password",value = "密码") private String password; }