JSPGenSDF基礎配置

JSPGenSDF軟件開發框架(於2014年5月5號發佈4.0版),簡稱JSPGen,專用Java Web方面平臺式軟件開發,整個框架也可以說是前臺與後臺的一個粘合劑,現在對JSPGenSDF進行開發配置,看看最基礎的配置和最基本的使用方法。

 

JSPGenSDF學習成本不高,採用的都是Java原生態編碼方式,按照官方說法:稍有Java基礎知識均可做開發,這也是我打算整理此教程的根本原因(題外話:此次版本與之前版本區別很大,網上資料很少,官方資料又太過專業,希望此教程能幫助大家更好、更快熟悉這個開發框架)。

 

本次demo工程是一個官網提供的示例項目工程,開發方面我們採用官網提供的Eclipse3.7中文版進行Java開發以及項目管理。

一、準備工作

1、下載項目運行環境:WATMServer2.6

2、下載項目運行(開發)時所需第三方jar組件包:Jar20140505

3、下載開發環境(工具):Eclipse3.7

4、獲取JSPGen示例項目:

有兩種獲取方式:

a、到官網在線預定,選免費型(建議選這種方式,獲取都是最新版本);

b、加入官網提供的QQ交流羣:12349848,在羣共享裏下載。

 

環境下載地址:http://www.jspgen.com

示例項目獲取:http://www.jspgen.com

 

二、環境安裝及項目導入

視頻教程下載:http://help.jspgen.com/vteach/jspgen4_01.rar

 

三、項目配置

A、項目結構

 

B、配置文件

1、jspgen-config.xml

框架所構建的平臺基本信息配置:

<?xml version="1.0" encoding="UTF-8"?>
<jspgen version="4.0">
    <!-- 平臺主題、地址 -->
    <host>
       <title>JSPGen-讓Java(Web)軟件開發變得更敏捷! www.JSPGen.com</title>
       <!-- 多個半角逗號間隔 -->
       <url>http://127.0.0.1:8080/</url>
    </host>
    
    <!-- 開發者信息 -->
    <company>JSPGen.com</company>
    <url>http://www.jspgen.com/</url>
    <email>[email protected]</email>

    <!-- 時區Id(爲空則爲系統默認時區) -->
    <timezoneid>Asia/Shanghai</timezoneid>

    <!-- 區域語言環境(爲空則爲系統默認區域) -->
    <locale>zh_CN</locale>

    <!-- 頁面編碼 -->
    <charset>UTF-8</charset>

    <!-- 平臺授權碼 -->
    <serialno></serialno>

    <!-- 開啓IE緩存 -->
    <iecache>true</iecache>

    <!-- 靜態資源 -->
    <static>
       <!-- 訪問地址(若靜態生成配置中有發佈點的,以發佈點訪問地址爲準) -->
       <url></url>
       <!-- 存儲地址:相對於平臺根目錄下 -->
       <uri>static/</uri>
    </static>

    <!-- 上傳文件 -->
    <upload status="true">
       <!-- 訪問地址(若上傳配置中有發佈點的,以發佈點訪問地址爲準) -->
       <url></url>
       <!-- 臨時存儲地址:相對於項目根目錄下 -->
       <uri>temp/upload/</uri>
       <!-- 允許大小:默認值1M -->
       <size>1M</size>
    </upload>

    <!-- 下載文件 -->
    <download status="false">
       <!-- 存儲地址:相對於項目根目錄下 -->
       <uri>temp/download/</uri>
    </download>

    <!-- 安全 -->
    <safe>
       <!-- 平臺密鑰 (爲cookie 僞靜態 … 加密服務防cookie欺騙) -->
       <authkey>JSPGen</authkey>
       <!--
           允許訪問IP範圍 (支持格式127.0.0.1 127.0.0.* 127.0.0.0-127.0.0.10 多個用半角逗號間隔)
       -->
       <allowip></allowip>
       <!--
           禁止訪問IP範圍 (支持格式127.0.0.1 127.0.0.* 127.0.0.0-127.0.0.10 多個用半角逗號間隔)
       -->
       <denyip></denyip>
    </safe>

    <!-- 郵件服務 -->
    <mail status="true">
       <smtp>
           <!-- 發送類型(SMTP MX) -->
           <type>SMTP</type>
           <server>smtp.163.com</server>
           <port>25</port>
           <email>[email protected]</email>
           <name>JSPGen官網</name>
           <username>jspgen</username>
           <password>jspgen</password>
           <!-- 內容格式(text html url) -->
           <format>html</format>
           <!-- 內容簽名 -->
           <sign>JSPGen-讓Java(Web)軟件開發變得更敏捷! www.JSPGen.com</sign>
       </smtp>
    </mail>
</jspgen>

2、jspgen-action.xml

業務動作配置,爲後臺業務與前臺顯示視圖進行配對服務,這裏需要注意僅定義Action所在包的地址,而非具體Action文件地:

<?xml version="1.0" encoding="UTF-8"?>
<jspgen version="4.0">
    <!-- 初始化參數 -->
    <props name="action">
       <!-- 開啓開發模式,開啓後將錯誤信息直接輸出至瀏覽器,否則將信息記錄至日誌文件 -->
       <prop name="jspgen.devMode">true</prop>
       <prop name="jspgen.antiAttack">false</prop>
       <!-- 開啓表單指令驗證 -->
       <prop name="jspgen.formHash">false</prop>
       <!-- 可忽略表單指令驗證地址 -->
       <prop name="jspgen.formHash.invalidURI"></prop>
       <!-- Action訪問地址擴展名 -->
       <prop name="jspgen.action.extension">gen</prop>
       <!-- Action名與方法名間隔符 -->
       <prop name="jspgen.action.separator">!</prop>
       <!-- Action返回關鍵字模板文件存放路徑,相對於框架根目錄下 -->
       <prop name="jspgen.result.uri">/WEB-INF/template/</prop>
       <!-- 模板路徑自適應,不啓用的情況下:若關鍵字不存在,顯示未定義返回關鍵字 -->
       <!-- 啓用情況下(只在應用區模板下有用):在應用區、框架區都沒有定義返回關鍵字的情況下,則自動組裝模板路徑(可由組裝變量自動匹配,即可實現Action零配置開發) -->

       <!-- 組裝變量:${space}、${action}、${method}、${result},分別爲:空間名(模板目錄)、Action名、方法名、返回關鍵字;Action名爲Action類文件名前綴,開頭字母小寫,其餘大寫字母轉小寫並在開頭添加下劃線。 -->

       <prop name="jspgen.template.auto">true</prop>
       <!-- <prop name="jspgen.template.default">${space}/${action}_${method}_${result}.jsp</prop> -->
       <prop name="jspgen.template.default">${space}/${action}_${result}.jsp</prop>
    </props>

    <!-- 返回配對:公共關鍵字 -->
    <results>
       <!--
           公共關鍵字:默認有none error success ajax[message],其中none無需定義,優先級最高用於內容直接輸出,其他關鍵字低於模板自適應及私有關鍵字配對;
           公共關鍵字:模板文件均位於框架模板目錄下(默認方案)。
       -->
       <result name="error">error.jsp</result>
       <result name="success">success.jsp</result>
    </results>

    <!-- 動作配對  -->
    <actions>
       <!-- Action定義:space(空間名)爲訪問路徑前綴,type(類型)爲Action所在包地址,若開頭有 "redirect:" 特殊字符串,則爲URL跳轉地址,將直接跳轉到定義地址 -->
       <action space="/" type="demo.action">
           <!--
              返回配對:返回關鍵字對應空間所在包內的所有Action,所以模板文件名建議採用組裝變量式定義;
              私有關鍵字:優先級高於公共關鍵字,支持模板類型:jsp[JSTL] vm[Velocity] ftl[FreeMarker]
           -->
           <result name="demo">demo.jsp</result>
           <result name="mail">demo_mail.jsp</result>
           <result name="upload">demo_upload.jsp</result>
           <result name="list">demo_upload_list.jsp</result>
       </action>
    </actions>
</jspgen>

 

3、i18n_zh_CN.xml

國際化資源配置,主要用於Java程序中提示語句配置:

<?xml version="1.0" encoding="UTF-8"?>
<i18n version="4.0">
    <!-- 全局 -->
    <props name="global">
       <prop key="access_ip">您的IP地址是:{0}</prop>
       <!-- 基本提示 -->
       <prop key="error">操作失敗</prop>
       <prop key="success">操作成功</prop>
       <!-- 上傳提示 -->
       <prop key="upload_error">上傳失敗</prop>
       <prop key="upload_success">上傳成功</prop>
    </props>
</i18n>

 

4、log4j.properties

日誌輸出配置,僅修改輸入文件地址即可:

# DEBUG < INFO < WARN < ERROR < FATAL
log4j.rootLogger=DEBUG,console,rollingFile
# -----------------------------------------------------------------------------------------
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p [%t] (%F:%L) - %m%n
# -----------------------------------------------------------------------------------------
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=E:/web/log.log
log4j.appender.rollingFile.MaxFileSize=500KB
log4j.appender.rollingFile.Threshold=INFO
log4j.appender.rollingFile.encoding=UTF-8
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} [%-5p] (%F:%L) - %m%n

 

5、jspgen-parse.xml

視圖(模板)解析配置,一般情況下不需要修改,保持默認即可:

<?xml version="1.0" encoding="UTF-8"?>
<jspgen version="4.0">
    <!-- 初始化參數 -->
    <props name="parse">
       <!-- JSTL 參數 -->
       <prop name="jstl.template.import"></prop>       
       <!-- Velocity 參數 -->
       <prop name="velocity.default.encoding">UTF-8</prop>
       <prop name="velocity.input.encoding">UTF-8</prop>
       <prop name="velocity.output.encoding">UTF-8</prop>
       <prop name="velocity.directive.parse.max.depth">5</prop>
       <!-- Freemarker 參數 -->
       <prop name="freemarker.locale">zh_CN</prop>
       <prop name="freemarker.url_escaping_charset">UTF-8</prop>
       <prop name="freemarker.template_update_delay">1</prop>
       <prop name="freemarker.whitespace_stripping">true</prop>
    </props>
    <parse>
       <type name="jsp">jspgen.parse.provider.JSTLProvider</type>
       <type name="vm">jspgen.parse.provider.VelocityProvider</type>
       <type name="ftl">jspgen.parse.provider.FreemarkerProvider</type>
       <!-- 此處工具對於JSTL文件無效,JSTL文件需要在jspgen.tld裏定義函數標記方可使用 -->
       <!--tool name="Grapes">grapes.Grapes</tool-->
    </parse>
</jspgen>

C、業務動作處理

1、IndexAction.java

默認視圖動作:

package demo.action;

import grapes.Dates;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import jspgen.action.Action;

/**
 * Action類:默認主頁
 * 
 * @author JSPGen
 * @copyright (c) JSPGen.com
 * @created 2013年03月
 * @email [email protected]
 * @address www.jspgen.com
 */

publicclass IndexAction extends Action { 
    /**
     * 默認方法
     */
    @Override
    public String execute() {
       HttpServletResponse response = getResponse();
       try {
           // 直接輸出字符串
           response.getWriter().write("<h2>Hello JSPGener!</h2>");
           response.getWriter().write("Time:"+Dates.getDateTime());
       } catch (IOException e) {
           thrownew IllegalArgumentException(e);
       }
       return NONE;
    }
}

2、DemoAction.java

演示動作:

package demo.action;

import grapes.Dates;

import grapes.Files;
import grapes.Grapes;
import grapes.tools.Browser;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import jspgen.action.Action;
 
/**
 * Action類:演示
 * 
 * @author JSPGen
 * @copyright (c) JSPGen.com
 * @created 2013年03月
 * @email [email protected]
 * @address www.jspgen.com
 */
publicclass DemoAction extends Action {

    /**
    Action文件常用方法對象:
     獲取用戶端請求對象:HttpServletRequest request = getRequest();
     獲取服務端響應對象:HttpServletResponse response = getResponse();
     獲取用戶端IP地址:String ip = Browser.getIP(getRequest());
     獲取用戶界面表單值:String name = getParameter("name"); // 接收表單值(表單名稱:name) 
     獲取當前系統時間戳:long dateline = Dates.getTimeMillis();

     向用戶界面(模板)賦值:setAttribute("屬性名稱", 屬性值); // 屬性值可以是對象或具體數值
     向用戶界面直接輸出:response.getWriter().write("<h2>Hello JSPGener!</h2>這是一個  Action 演示頁面…");
     向日志文件輸出:logger.info("日誌輸出:"+ ip);
     */

    /**
     * 創建
     */
    @Override
    protected String create() {

       // 先處理父級方法,再處理本類定義
       String result = super.create();
       if (NONE.equalsIgnoreCase(result) || ERROR.equalsIgnoreCase(result) ) return result;

       // --------------------------

       // 本類定義
       return SUCCESS;
    }

    
    /**
     * 銷燬
     */
    @Override
    protectedvoid destroy() {

       // 本類定義

       // --------------------------
       // 先處理本類定義,再處理父級方法
       super.destroy();
    }

    // -----------------------------------------------------------

    /**
     * 默認方法
     */
    @Override
    public String execute() {
       String ip = Browser.getIP(getRequest());
       String youIp = getMessageValue("global.access_ip", new Object[]{ ip });      // 資源調用
                  
       // 日誌輸出
       logger.info("日誌輸出:"+ youIp);
                  
       // 字符串輸出
       String str = "<h2>Hello JSPGener!</h2> 這是一個演示Action中的默認方法… " + youIp;
       setAttribute("message", str);

       // 跳轉頁面(若直接輸出,則跳轉無用,主要與模板結合使用)
       // this.redirectUrl = "http://www.jspgen.com/";

       return "demo";
    } 
}

3、demo.jsp

演示視圖(模板)文件:

<%@page trimDirectiveWhitespaces="true"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="g" uri="http://api.jspgen.com/taglib/jstl"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>演示</title>
<link type="text/css" href="${config.staticUrl}ui/prompt.css" rel="stylesheet">
</head>
<body>
<div class="prompt tip info">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> <td>${message}</td> </tr>
    <tr> <td align="right"><a href="${config.host}">返回首頁</a></td> </tr>
  </table>
</div>
</body>
</html>

 

四、項目發佈

A、項目部署至Tomcat

 

B、進行測試

 

 

 

本文由 JSPGener 提供,作者:西雅

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章