zoukankan      html  css  js  c++  java
  • 跟阿根一起学Java Web开发一:开发环境搭建及JSPGen基础配置

    JSPGenSDF软件开发框架(于2014年5月5号公布4.0版)。简称JSPGen,专用Java Web方面平台式软件开发,整个框架也能够说是前台与后台的一个粘合剂,如今对JSPGenSDF进行开发配置。看看最基础的配置和最主要的用法。

    JSPGenSDF学习成本不高。採用的都是Java原生态编码方式,依照官方说法:稍有Java基础知识均可做开发,这也是我打算整理此教程的根本原因(题外话:此次版本号与之前版本号差别非常大,网上资料非常少,官方资料又太过专业,希望此教程能帮助大家更好、更快熟悉这个开发框架)。

    本次demoproject是一个官网提供的演示样例项目project,开发方面我们採用官网提供的Eclipse3.7中文版进行Java开发以及项目管理。

    一、准备工作

    1、下载项目执行环境:WATMServer2.6+

    2、下载项目执行(开发)时所需第三方jar组件包:Jar20140505

    3、下载开发环境(工具):Eclipse3.7

    4、获取JSPGen演示样例项目:

    有两种获取方式:

    a、到官网在线预定。选免费型(建议选这样的方式。获取都是最新版本号);

    b、增加官网提供的QQ交流群:12349848,在群共享里下载。

    环境下载地址:http://www.jspgen.com/html/node/NodeX6.html

    演示样例项目获取:http://www.jspgen.com/CMS/Node.gen?

    Id=8

    二、环境安装及项目导入

    视频教程下载: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>JSPGen@163.com</email> <!-- 时区Id(为空则为系统默认时区) --> <timezoneid>Asia/Shanghai</timezoneid> <!-- 区域语言环境(为空则为系统默认区域) --> <locale>zh_CN</locale> <!-- 页面编码 --> <charset>UTF-8</charset> <!-- 开启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>jspgen@163.com</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返回keyword模板文件存放路径,相对于框架根文件夹下 --> <prop name="jspgen.result.uri">/WEB-INF/template/</prop> <!-- 模板路径自适应,不启用的情况下:若keyword不存在,显示未定义返回keyword --> <!-- 启用情况下(仅仅在应用区模板下实用):在应用区、框架区都未定义返回keyword的情况下,则自己主动组装模板路径(可由组装变量自己主动匹配,就可以实现Action零配置开发) --> <!-- 组装变量:${space}、${action}、${method}、${result}。分别为:空间名(模板文件夹)、Action名、方法名、返回keyword。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> <!-- 返回配对:公共keyword --> <results> <!-- 公共keyword:默认有none error success ajax[message],当中none无需定义,优先级最高用于内容直接输出。其它keyword低于模板自适应及私有keyword配对; 公共keyword:模板文件均位于框架模板文件夹下(默认方案)。 --> <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"> <!-- 返回配对:返回keyword相应空间所在包内的全部Action,所以模板文件名称建议採用组装变量式定义; 私有keyword:优先级高于公共keyword。支持模板类型: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"><![CDATA[ <%@page trimDirectiveWhitespaces="true"%> <%@page import="java.util.*"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="gen" uri="http://help.jspgen.com/taglib/jstl" %> ]]></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 jspgen@163.com
     * @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 jspgen@163.com
     * @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 boolean begin() {
    
           // 先处理父级方法。再处理本类定义
           boolean isflag = super.begin();
           if (!isflag) return isflag;;
    
           // --------------------------
    
           // 本类定义
           return true<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
        }
    
        
        /**
         * 结束
         */
        @Override
        protectedvoid end() {
    
           // 本类定义
    
           // --------------------------
           // 先处理本类定义。再处理父级方法
           super.end();
        }
    
        // -----------------------------------------------------------
    
        /**
         * 默认方法
         */
        @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="gen" uri="http://help.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、进行測试

     

     技术交流QQ群:12349848

  • 相关阅读:
    如何判断两个数组是否相等?
    正则表达式
    开发板 Linux驱动视频 驱动是什么
    关于模型的评估
    Python画图参数设置
    Python图片的横坐标汉字
    矩阵的点成和叉乘
    svd 奇异值分解
    Python的主成分分析PCA算法
    论文参考文献格式
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6859897.html
Copyright © 2011-2022 走看看