跟阿根一起学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
演示样例项目获取: Id=8">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
跟阿根一起学Java Web开发一:开发环境搭建及JSPGen基础配置的更多相关文章
- 跟阿根一起学Java Web开发二:使用Ajax技术及XML与JSON实现输出
如今B/S结构的系统使用Ajax技术是再平常只是的了.今天我们就来探讨下在JSPGenSDF第四版中:怎样使用Ajax技术.怎样输出XML文件及JSON格式数据输出. 怎样搭建一个最基础的JSPGen ...
- JAVA WEB快速入门之环境搭建
前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...
- 【JAVA WEB教程】jsp环境搭建+部署网站(eclipse+tomcat)【详细+图文】
下载tomcat7.X 下载地址为:http://tomcat.apache.org/download-70.cgi 下载完成之后就开始安装 Next I Agree 选中所有的复选框 ...
- 【JAVA WEB教程】jsp环境搭建(eclipse)【详细+图文】
下载JDK(如果你的系统是64位的,那么就下载64位版本的) 然后安装,点击下一步 再点击下一步 安装成功 下载针对JAVA EE的Eclipse(如果你的系统是64位的,那么就下载6 ...
- 实战突击: Java Web项目整合开发(PDF)
实战突击: Java Web项目整合开发(PDF)
- SpringBoot系列教程web篇之Freemaker环境搭建
现在的开发现状比较流行前后端分离,使用springboot搭建一个提供rest接口的后端服务特别简单,引入spring-boot-starter-web依赖即可.那么在不分离的场景下,比如要开发一个后 ...
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
- Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...
- SpringBoot系列教程web篇之Beetl环境搭建
前面两篇分别介绍了目前流行的模板引擎Freemaker和Thymeleaf构建web应用的方式,接下来我们看一下号称性能最好的国产模板引擎Beetl,如何搭建web环境 本文主要来自官方文档,如有疑问 ...
随机推荐
- 经典DP问题--poj1088滑雪
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- Django中的tags,母版和继承,组件,静态文件相关,自定义simpletag和自定义inclusion_tag
Tags for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} &l ...
- Hibernate框架的主键生成策略
在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符,也就是主键.Hibernate框架中定义了许多主键生成策略类,也叫生成器类.所有的生成器类 ...
- x86实模式到保护模式 李忠 王晓波
x86实模式到保护模式 李忠 王晓波 第3到4章 各个进制间的转换省略 实验环境 编译器 nasm 虚拟机 virtual box 小程序 hexview 观察编译后的机器代码 fixvhd ...
- Leetcode 392.判断子序列
判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 ...
- 【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...
- MySQL 子查询优化案例
开发人员给了一个sql ,结构如下delete from B where ID in (select NID from H where guid='xxx'); 内部sql满足条件的结果集只有一条,但 ...
- RAC+单节点搭建DG
primary RAC to single standby 参考文献:RAC+单实例DATAGUARD 配置 http://blog.csdn.net/miyatang/article/detai ...
- web.xml不同的头文件
<转自:http://blog.csdn.net/qq_16313365/article/details/53783288> 1. Servlet 3.1 Java EE 7 XML sc ...
- [luoguP2219] [HAOI2007]修筑绿化带(单调队列)
传送门 需要n*m的算法,考虑单调队列 可以预处理出来 a[i][j]表示以i,j为右下角的绿化带+花坛的和 b[i][j]表示以i,j为右下角的花坛的和 那么我们可以单调队列跑出来在A-C-1,B- ...