首页 > 其他分享 >springmvc+swagger2+struts2

springmvc+swagger2+struts2

时间:2024-05-12 22:44:25浏览次数:26  
标签:springfox springmvc swagger2 struts2 springframework org import swagger annotati

jar包

<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.8.7</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.7</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.8.7</version>
		</dependency>

		<!--springfox的核心jar包 -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!--springfox-ui的jar包(里面包含了swagger的界面静态文件) -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.9.2</version>
		</dependency>

       <!-- swagger增强页面,默认的太丑 -->
       <dependency>
		    <groupId>com.github.xiaoymin</groupId>
		    <artifactId>swagger-bootstrap-ui</artifactId>
		    <version>1.8.9</version>
		</dependency>

2、加入WebMvcConfigurerAdapter ,否则打开swaggerUI页面,会有弹框提示无法使用

package com.mhm.listener;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {

		registry.addResourceHandler("swagger-ui.html").addResourceLocations(
				"classpath:/META-INF/resources/");

		registry.addResourceHandler("/webjars/**").addResourceLocations(
				"classpath:/META-INF/resources/webjars/");

        registry.addResourceHandler("/doc.html").addResourceLocations(
				"/doc.html");

	}
}

加入swagger2的配置类

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration;

@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan(basePackages = "org.mohrss.leaf.demo.****")
@Import({Swagger2DocumentationConfiguration.class})
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                // 扫描全部
//                .apis(RequestHandlerSelectors.any())
                // 扫描Api修饰的类
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                // 扫描ApiOperation修饰的方法
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .build()
                .apiInfo(apiInfo());
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("XXX项目接口文档")
                .description("XXX项目接口测试")
                .version("1.0.0")
                .termsOfServiceUrl("")
                .license("")
                .licenseUrl("http://localhost:8080/sitp_portal/swagger-ui.html")
                .build();
    }
}

package com.mhm.swagger;

import io.swagger.models.Path;
import io.swagger.models.Swagger;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;

@Aspect
@EnableAspectJAutoProxy
@Component
public class SwaggerApiSuffixAspect {
	
	@AfterReturning(pointcut="execution(public io.swagger.models.Swagger springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapDocumentation(..))",
            returning="swagger")
	public void doBeforeBussinessCheck(Swagger swagger){
        Map<String, Path> paths = swagger.getPaths();
        if(null != paths){
            Map<String, Path> newPaths = new HashMap<String, Path>(paths);
            paths.clear();
            Iterator<String> it = newPaths.keySet().iterator();
            while(it.hasNext()){
                String oldKey = it.next();
                // 添加模式后缀 .do
                String newKey = oldKey  + ".do";
                paths.put(newKey, newPaths.get(oldKey));
            }
            newPaths = null;
        }
    }
	
}

spring-mvc.xml配置文件中加入swagger2的支持

	<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
	<mvc:resources mapping="/webjars/**"
		location="classpath:/META-INF/resources/webjars/" />
	<bean id="/swaggerConfig" class="com.mhm.swagger.SwaggerConfig" />

web.xml文件中添加对swagger的支持

<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:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <!-- 这个是对struts2的支持 -->
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
    
    <!-- 这个是对swagger2的支持 -->
    <url-pattern>/v2/api-docs</url-pattern>
    <url-pattern>/swagger-resources</url-pattern>
    <url-pattern>/swagger-resources/configuration/security</url-pattern>
    <url-pattern>/swagger-resources/configuration/ui</url-pattern>
    
  </servlet-mapping>

controller写法

@Api(tags = "测试控制器")
public class TestController {
  
    @ApiOperation("列表查询")
    @RequestMapping("getPageList")
    @ResponseBody
    public PageResult<XXX> findList(PageCondition pageCondition) {
        return service.findList(pageCondition);
    }
  
}

标签:springfox,springmvc,swagger2,struts2,springframework,org,import,swagger,annotati
From: https://www.cnblogs.com/xy20211005/p/18188327

相关文章

  • Spring SpringMVC——前端控制器初始化过程
     创建完DispatcherServlet对象时,会执行类中的init方法 如果不配置load-on-startup,那么DispatcherServlet将在第一次收到请求时才会被实例化和初始化。这意味着DispatcherServlet不会在服务器启动时立即执行创建和初始化的操作。当第一个请求到达时,Servlet容器(如Tomca......
  • Spring SpringMVC概述
    SpringMVC框架主要用于跟客户端交互,包括请求和响应。  前端控制器的作用就是把一些功能封装,我们在开发时就不用再写一些繁杂的代码了SpringMVC使用DispatcherServlet作为前端控制器,DispatcherServlet本质其实是一个Servlet 原先我们在访问时,客户端发起请求直接找Servlet......
  • SpringMVC(3)-request域和session域的作用和区别
    最近看到项目中用到request域和session域,脑子里一直没有一个明确的区分,结合GPT整理了一份总结。为了理解request和session的作用和区别,可以想象我们正在参加一个大型的科技会议。会议中,每位与会者(用户)都会与会议工作人员(服务器)进行交流。在这个比喻中,request域和session域是用于......
  • SpringMVC(2)-Rest请求风格
    REST:RepresentationalStateTransfer,(资源)表现层状态转化。REST是目前流行的请求方式。在HTTP协议中,有四个基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。REST就是通过get/post/put/delete说明crud的类型。REST的核心过滤器浏览器form表单......
  • SpringMVC(1)-@RequestMapping的简单使用
    本文核心内容来自于韩顺平老师的课程@RequestMapping注解可以用来指定控制器或者处理器的某个方法的请求url@ControllerpublicclassUserServlet{@RequestMapping("/login")publicStringlogin(){return"login";}}1@RequestMappi......
  • SpringMVC学习总结 + 【手写SpringMVC底层机制核心】
    SpringMVC笔记SpringMVC介绍基本介绍SpringMVC是WEB层框架,接管了Web层组件,支持MVC的开发模式/开发架构SpringMVC通过注解,让POJO成为控制器,不需要继承类或者实现接口SpringMVC采用低耦合的组件设计方式,具有更好扩展和灵活性.支持REST格式的URL请求.SpringMV......
  • SpringMVC
    SpringMVC1、回顾MVC1.1什么是mvcMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存......
  • SSM整合(Spring、SpringMVC、Mybatis)
    第一步:新建一个Webx项目第二步:导入相关依赖包第三步:配置Spring核心配置文件第四步:配置SpringMVC核心配置文件第五步:配置web.xml文件......
  • ssm基于SpringMVC网上选课系统的设计与实现论文
    摘要随着课程的增多,学生的选择性越来越大。现在大多数学校选课的方式采用学生上报给老师,老师负责整理。这种方式效率低、灵活性低,每门课程的选报人数有限就给老师的统计整理工作造成困难。目前,网络发展成熟,各类管理系统层出不穷,如果可以有专业的管理系统提供网上选课,则可......
  • idea配置springmvc项目
    传统的web项目(含有webroot文件夹)导入IDEA需要做的一系列配置_ideawebroot-CSDN博客IDEA部署以往的springmvc项目,用外部Tomcat部署---精简版,几步操作完成_springmvc用外置的tomcat-CSDN博客参考这位博主的内容成功配置需要修改的是默认启动文件出现新的问题,js和css文件不好使,......