標籤:
一 、
前言:博主正在教大家如何開發一個javaEE架構,我把架構命名為Jvn,部落格裡有完整的開發視頻,每一篇博文都是一個知識點;
關於架構的介紹和學習,可以從我部落格第一講開始看起,部落格首頁:http://www.cnblogs.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" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css"><!-- 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>
如何開發一個java開源架構-----Jvn架構之實現自動產生線上文檔(第七講)