一 、css
前言:博主正在教你們如何開發一個javaEE框架,我把框架命名爲Jvn,博客裏有完整的開發視頻,每一篇博文都是一個知識點;html
關於框架的介紹和學習,能夠從我博客第一講開始看起,博客首頁:http://www.cnblogs.com/everxs/java
本次內容視頻以及源碼下載地址:http://pan.baidu.com/s/1o6MJnFcjquery
2、bootstrap
本次博客講的內容框架
場景:如今是APP時代,APP很熱門,並且跟後臺交互跑的都是HTTP協議,因此講到這裏,對於這裏面的交互。jsp
安卓工程師(客戶端),在調用後臺接口的時候,須要一個文檔,二後臺工程師(這裏用JAVA),要去維護這份文檔,或者學習
說手寫這份文檔,工做量跟維護量是很是大的。因此提出了一個想法,在線文檔可否自動生成了。測試
解決思路:ui
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>