cpj-swagger分别整合struts2、spring mvc、servlet
cpj-swagger
原文地址:https://github.com/3cpj/swagger
1. Swagger是什么?
官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
个人觉得,swagger的一个最大的优点是能实时同步api与文档。在项目开发过程中,发生过多次:修改代码但是没有更新文档,前端还是按照老旧的文档进行开发,在联调过程中才发现问题的情况(当然依据开闭原则,对接口的修改是不允许的,但是在项目不稳定阶段,这种情况很难避免)。
cpj-swagger通过与swagger ui一起快速为您的web项目产生接口文档,并且支持在线测试接口。cpj-swagger可以很方便的与struts2、spring mvc、servlet集成使用,下面的教程将详细说明如何使用cpj-swagger。
目录
一. 加入依赖JAR文件二. 配置三. 标注你的接口四. 访问接口文档五. 核心API六. 示例程序下载
一. 加入依赖JAR文件
- maven:
<dependency>
<groupId>com.github.3cpj</groupId>
<artifactId>cpj-swagger</artifactId>
<version>1.2.1</version>
</dependency>
二. 配置
1. 选择使用方式
您可以通过三种方式来使用cpj-swagger。
- 与strut2集成
如果您的web项目是基于strut2的,您可以在您的strut2配置文件中加入如下代码来快速集成cpj-swagger:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" /> <package name="api" namespace="/api" extends="struts-default" >
<action name="*" class="com.cpj.swagger.support.struts2.ApiAction" method="{0}">
</action>
</package>
- 与spring mvc集成
如果您的web项目是基于spring mvc的,您可以在您的spring mvc配置文件中加入如下代码来快速集成cpj-swagger:
<context:component-scan base-package="com.cpj.swagger.support.springmvc">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
- 与servlet集成
如果您的web项目是基于servlet的,您可以在您的web.xml配置文件中加入如下代码来快速集成cpj-swagger:
<servlet>
<servlet-name>apiServlet</servlet-name>
<servlet-class>com.cpj.swagger.support.servlet.ApiServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>apiServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
2. 修改配置项
您需要在项目的源文件目录下添加一个swagger.properties文件,并加入以下配置项:
packageToScan=com.cpj.swagger.action
apiDescription=Swagger Demo
apiTitle=Swagger Demo
apiVersion=1.0.0
teamOfService=www.cpj.com
devMode=true
cpj-swagger的配置信息都必须写在swagger.properties文件里面。具体的配置项及其说明如下:
| 键 | 说明 |
|---|---|
| apiFile | 扫描生成json文件的存放路径 |
| packageToScan | 扫描的包 |
| apiDescription | 接口文档描述 |
| apiTitle | 接口文档标题 |
| apiVersion | 接口版本 |
| teamOfService | 服务团队 |
| apiHost | 接口主机地址 |
| apiBasePath | 接口基路径 |
| devMode | 是否启用开发模式,如果开启则每次获取接口文档的时候都会扫描类 |
| suffix | 接口请求地址后缀,如.action |
三. 标注你的接口
接下来需要用cpj-swagger提供的注解来标明你的接口,下面以spring mvc为例来说明如何标注接口,其他方式请参考示例程序。
@Controller
@APIs("/demo")
@RequestMapping("/demo")
public class DemoController {
@API(value="login", summary="示例1", parameters={
@Param(name="username", description="用户名", type="string"),
@Param(name="password", description="密码", type="string", format="password"),
@Param(name="image" , description="图片", type="file", format="binary")
})
@RequestMapping(value="login", method=RequestMethod.POST)
public void login(HttpServletResponse response, String username, String password, MultipartFile image)
throws Exception {
response.setContentType("application/json;charset=utf-8");
JSONWriter writer = new JSONWriter(response.getWriter());
Map<String, String> user = new HashMap<String, String>();
user.put("username", username);
user.put("password", password);
writer.writeObject(user);
writer.flush();
writer.close();
}
}
四. 访问接口文档
在完成前面的工作之后,您可以部署好您的web项目,然后在浏览器输入以下地址就可以访问接口文档了:http://127.0.0.1:8080/您的项目名/api/index
五. 核心API
1. 注解 @com.cpj.swagger.annotation.APIs
该注解放在一个类上面,用来表明类中包含作为HTTP接口的方法(被注解@com.cpj.swagger.annotation.API标注了的方法)。 该注解的value用来设置接口的前缀,这和struts2的命名空间很像。使用示例如下:
@APIs("/demo")
public class DemoController {
}
2. 注解 @com.cpj.swagger.annotation.API
该注解放在一个方法上面,用来表明方法是HTTP接口方法,注解的属性说明如下:
value
与注解@com.cpj.swagger.annotation.APIs的value属性一起来指定接口的地址,例如有如下设置:
@APIs("/demo")
public class DemoController {
@API(value="login"})
public void login()
}
}
那么login方法对应的接口地址为: youhost/demo/login
parameters
用来指定接口的请求参数,详情参见注解Param的说明。
summary
接口功能简述。
description
接口功能详细说明。
method
请求方式,默认是POST。
consumes
允许的请求MIME,比如:multipart/form-data、application/xml、application/json默认是application/json; charset=utf-8。
特别说明:
当为 multipart/form-data 时,Param 的in属性必须为formData,但是in为path、header时Param不用遵循此规则。
3. 注解 @com.cpj.swagger.annotation.Param
用来说明请求参数,例如:
@API(value="login", summary="示例1", parameters={
@Param(name="username", description="用户名", type="string"),
@Param(name="password", description="密码", type="string", format="password")})
@RequestMapping(value="login", method=RequestMethod.POST)
public void login(HttpServletResponse response, String username, String password) throws Exception {
}
这表明该接口需要两个请求参数,及username、password。 注解@com.cpj.swagger.annotation.Param的属性说明如下:
name
参数名
in
输入参数类型,可取如下值:
- query - 参数拼接到url中
- body - 参数直接放入请求体中
- path - restful风格的参数传递
- header - 参数放在请求头中
- formData - 参数通过form表单提交
特别说明:
- 当前请求方式为POST的时候,默认值为formData
- 请求方式为非POST的时候,默认值为query
type
数据类型, 与format一起指定请求参数的数据类型。 type 和 format 的可选值如下:
| 通用名 | type |
format |
备注 |
|---|---|---|---|
| integer | integer |
int32 |
signed 32 bits |
| long | integer |
int64 |
signed 64 bits |
| float | number |
float |
|
| double | number |
double |
|
| string | string |
||
| byte | string |
byte |
base64 encoded characters |
| binary | string |
binary |
any sequence of octets |
| boolean | boolean |
||
| date | string |
date |
As defined by full-date - RFC3339 |
| dateTime | string |
date-time |
As defined by date-time - RFC3339 |
| password | string |
password |
Used to hint UIs the input needs to be obscured. |
format
数据格式,type一起指定请求参数的数据类型。
description
参数说明
required
是否是必须参数, 默认是false
六. 示例程序下载
七. 与struts2 整合项目演示
进入git命令行,输入命令下载代码
git clone https://github.com/3cpj/swagger-demo-struts2.git
然后进入项目文件夹内
cd swagger-demo-struts2/
把项目转成eclipse项目
mvn eclipse:eclipse

导入eclipse之后发布项目到tomcat,然后启动项目,访问地址:http://localhost:8080/swagger-demo-struts2/api/index
运行效果:

整个接口的参数一目了然。
cpj-swagger分别整合struts2、spring mvc、servlet的更多相关文章
- 使用IDEA整合spring4+spring mvc+hibernate
配置文件 spring-mvc.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans x ...
- 整合struts2+spring+hibernate
一.准备struts2+spring+hibernate所须要的jar包: 新建web项目并将jar包引入到project项目中. 二.搭建struts2环境 a.在 ...
- 重新学习之spring第三个程序,整合struts2+spring
第一步:导入Struts2jar包+springIOC的jar包和Aop的Jar包 第二步:建立applicationContext.xml文件+struts.xml文件+web.xml文件 web. ...
- SSH之IDEA2017整合Struts2+Spring+Hibernate
转自:https://blog.csdn.net/sysushui/article/details/68937005
- 控制层技术:Servlet+reflection、Struts2、Spring MVC三者之间的比较学习
Servlet Struts2 Spring MVC 处理用户提交的数据 基于MVC设计模式的Web应用程序 是一个框架 是MVC框架 导入servlet包,配置web.xml文件 web.xml & ...
- Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...
- IDEA下创建Maven项目,并整合使用Spring、Spring MVC、Mybatis框架
项目创建 本项目使用的是IDEA 2016创建. 首先电脑安装Maven,接着打开IDEA新建一个project,选择Maven,选择图中所选项,下一步. 填写好GroupId和ArtifactId, ...
- spring、spring mvc、mybatis框架整合基本知识
学习了一个多月的框架知识了,这两天很想将它整合一下.网上看了很多整合案例,基本都是基于Eclipse的,但现在外面公司基本都在用Intellij IDEA了,所以结合所学知识,自己做了个总结,有不足之 ...
- Spring + Spring MVC + MyBatis 整合
1.所需要Jar包 ? <!-- Spring3.0.1包 --> org.springframework.web-3.0.1 系列 <!-- 公共包 --> sl ...
- 【Java】Spring MVC 扩展和SSM框架整合
开发web项目通常很多地方需要使用ajax请求来完成相应的功能,比如表单交互或者是复杂的UI设计中数据的传递等等.对于返回结果,我们一般使用JSON对象来表示,那么Spring MVC中如何处理JSO ...
随机推荐
- paramiko基本操作
paramiko 是一个用作远程控制的模块,它遵循SSH2协议,支持以加密和认证的方式来进行远程服务器的连接.操作.上传和下载. 官方文档地址:http://docs.paramiko.org/ pa ...
- easypoi 一行代码搞定excel导入导出
开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子[easypoi],下面介绍下“轮子”的使用. pom ...
- Servlet过滤器---登录权限控制
实现了登录时权限控制:进入首页.登录页以及登录servlet时,不用验证权限:进入其它页面时,须验证是否登录,未登录则跳转到登录页. 一个简单的首页:index.jsp <%@ page lan ...
- 3 破解密码,xshell连接
1.破解root密码 (1)启动电脑,按上下键进入启动菜单界面,选择第二个Red Hat Enterprise Linux Server, with Linux 0-rescue-* (2)按 'e' ...
- 3195: [Jxoi2012]奇怪的道路
3195: [Jxoi2012]奇怪的道路 链接 思路: 因为一个点只会和它前后k个点连边,所以,记录下每个点的前k个点和它自己(共k+1个点)的状态,1表示奇数,0表示偶数. dp[i][j][s] ...
- Jenkins拾遗--第二篇(初步配置Jenkins)
插件配置 第一次安装Jenkins的时候会让你配置插件.这里有一个建议:就是把所有插件都看一遍,如果用不到,就不要勾选.Jenkins插件兼容性有的时候不是很好,多装多出事儿,保持最小集就好.浏览一遍 ...
- APP开发手记01(app与web的困惑)
文章链接:http://quke.org/post/app-dev-fragment.html (转载时请注明本文出处及文章链接) 最近在用博客园的wcf服务做博客园的android和ios的app, ...
- Python字符串的常用操作学习
>>> name = "I love my job!" >>> name.capitalize() #首字母大写 'I love my job! ...
- codeblocks17.12 debug 报错:ERROR: You need to specify a debugger program in the debuggers's settings.
DebugERROR: You need to specify a debugger program in the debuggers's settings.(For MinGW compilers, ...
- 立体匹配之Census Transform
1.立体匹配算法主要可分为两大类:基于局部约束和基于全局约束的立体匹配算法. (一)基于全局约束的立体匹配算法:在本质上属于优化算法,它是将立体匹配问题转化为寻找全局能量函数的最优化问题,其代表算法主 ...