一、
前言:博主正在教大家如何開發一個javaEE框架,我把框架命名為Jvn,博客里有完整的開發視頻,每一篇博文都是一個知識點;
關于框架的介紹和學習,可以從我博客第一講開始看起,博客首頁:http://www.49028c.com/everxs/
本次內容視頻以及源碼下載地址:http://pan.baidu.com/s/1o6MJnFc
二、
本次博客講的內容
場景:現在是APP時代,APP很熱門,而且跟后臺交互跑的都是HTTP協議,所以講到這里,對于這里面的交互。
安卓工程師(客戶端),在調用后臺接口的時候,需要一個文檔,二后臺工程師(這里用JAVA),要去維護這份文檔,或者
說手寫這份文檔,工作量跟維護量是非常大的。所以提出了一個想法,在線文檔能否自動生成了。
解決思路:
1,在我們的Controller上面加一個注解@OnlineController同時指定被注解Controller的用途 memo="用戶管理控制器",該COntroller的URL
2,在我們具體的Action,也就是我們Controller里面的方法里面加一個@OnlineMethod注解,同時指定 method="訪問方式(GET或者POST)",memo="方法描述",
param="調用該接口需要的參數比如:name=XXX&age=XXX",該接口的URL
3,把這些信息保存進我們的List里面,啟動框架的時候設進一個List.
4,使用者可以定義一個Controller獲取該list在頁面顯示出來
本次視頻跟源碼的下載地址:http://pan.baidu.com/s/1o6MJnFc
建議看視頻,因為我在視頻里講得很詳細。
Ps:視頻跟代碼都會持續更新,希望大家喜歡,多多支持。
QQ:245223343 永遠的八哥
下面是一些代碼:
OnlineController:
/**| * 在線文檔Controller注解 * @author Administrator * */@Retention(RetentionPolicy.RUNTIME)public @interface OnlineController {String memo();}
OnlineMethod:
/** * 在線文檔的方法注解 * @author Administrator * */@Retention(RetentionPolicy.RUNTIME)public @interface OnlineMethod {String memo();String param();String method();}
Online實體類:
public class Online {PRivate String url;private String memo;private String method;private String param;private int type;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}public String getMethod() {return method;}public void setMethod(String method) {this.method = method;}public String getParam() {return param;}public void setParam(String param) {this.param = param;}public int getType() {return type;}public void setType(int type) {this.type = type;}}
OnlineDoc 操作類:
public class OnlineDoc {/** * 加載有注解的Controller */public static List<Online> loadClass(Map<String,Class> map){List<Online> onlineList = new ArrayList<Online>();System.out.println("map :"+map.size());for(String nameSpace :map.keySet()){Class clazz = map.get(nameSpace);OnlineController onlineController = (OnlineController) clazz.getAnnotation(OnlineController.class);if(onlineController!=null){System.out.println("進來");Online online = new Online();online.setType(1);online.setMemo(onlineController.memo());online.setUrl(nameSpace);onlineList.add(online);Method[] methods = clazz.getMethods();for(Method method :methods){OnlineMethod onlineMethod = method.getAnnotation(OnlineMethod.class);if(onlineMethod!=null){Online o = new Online();o.setMemo(onlineMethod.memo());o.setMethod(onlineMethod.method());o.setParam(onlineMethod.param());o.setType(2);o.setUrl(nameSpace+"/"+method.getName());onlineList.add(o);}}}}System.out.println("執行完 有多少個:"+onlineList.size());return onlineList;}}
最后是配置在線文檔:
public class OnlineDocController extends JvnController{public void index(){List<Online> onlineList = JvnConfig.CONSTANT.getOnlineList();System.out.println("size :" +onlineList.size());getRequest().setAttribute("onlineList", onlineList);render("/WEB-INF/views/online/index.jsp");}}
測試Controller:
@OnlineController(memo = "訂單管理控制器")public class OrderController extends JvnController{@OnlineMethod(memo = "增加訂單", method = "GET", param = "訂單id orderId")public void add(){}@OnlineMethod(memo = "刪除訂單", method = "GET", param = "訂單id orderId")public void delete(){}}
在線文檔的jsp:
<%@page import="com.jvn.doc.online.Online"%><%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><!-- 新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" ><!-- jQuery文件。務必在bootstrap.min.js 之前引入 --><script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 Javascript 文件 --><script src="http://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script></head><body><h1>在線生成文檔</h1><div style="width: 70%;margin: 0,auto;"><table class="table"> <tr><th>訪問的url</th><th>描述</th><th>參數/說明</th><th>訪問方式</th></tr> <c:forEach var="online" items="${onlineList}"> <tr> <td>http://www.baidu.com/jvn${online.url}</td> <td>${online.memo}</td> <td>${online.param}</td> <td>${online.method}</td> </c:forEach> </tr></table></div></body></html>
新聞熱點
疑難解答