FreeMarker设计指南(4)
4、杂项(1)用户定义指令 宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用macro指令定义,而变换器是在模板外由程序定义,这里只介绍宏 基本用法Ø 宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子:<#macro greet> <font size="+2">Hello Joe!</font></#macro> Ø 作为用户定义指令使用宏变量时,使用@替代FTL标记中的#<@greet></@greet>Ø 如果没有
FreeMarker设计指南(3)
3、模板(1)整体结构 模板使用FTL(FreeMarker模板语言)编写,是下面各部分的一个组合:Ø 文本:直接输出Ø Interpolation:由${和},或#{和}来限定,计算值替代输出Ø FTL标记:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出Ø 注释:由<#--和-->限定,不会输出 下面是以一个具体模板例子:<html><head> <title>Welcome!</title></head><body> <#-- Greet the user with his/her name -->
FreeMarker设计指南(2)
2、数据模型(1)基础 在快速入门中介绍了在模板中使用的三种基本对象类型:scalars、hashes 和sequences,其实还可以有其它更多的能力:Ø scalars:存储单值Ø hashes:充当其它对象的容器,每个都关联一个唯一的查询名字Ø sequences:充当其它对象的容器,按次序访问Ø 方法:通过传递的参数进行计算,以新对象返回结果Ø 用户自定义FTL标记:宏和变换器 通常每个变量只具有上述的一种能力,但一个变量可以具有多个上述能力,如下面的例子:(ro
FreeMarker设计指南(1)
http://www.chinascripts.com/tech/java/opensource/template/2006-10-30/9a8a44c04a09d111.html1、快速入门(1)模板 + 数据模型 = 输出 FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念 他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据 经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的 在这里,你可以在HTML(或其它要输出的文本)中加入一些
Log4j配置过程
在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。 Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。下面我们介绍使用Java特性文件做为配置文件的方法 具体如下: 1、配置根Logger,其语法为: log4j.rootLogger = [ level ] , appenderName1, appenderName2, … level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议
实战Struts-Menu
实战Struts-Menu一、简介Struts-Menu是一组从基于XML的配置文件中生成多种样式的菜单的JSP Tags,并且可以结合API开发通过数据库生成的动态菜单。Struts-Menu支持国际化和多种权限控制。 二、运行环境Windows 2000 ProfessionalJDK 1.4.2_03Eclipse 3.1Tomcat 5.0.28Tomcat Plugin 3.1BetaStruts 1.2.7Commons-Lang 2.1Commons-Collections 3.1Struts-Menu 2.3MySQL 4.1.10a-nt 三、下载与安装1:从http://java.sun.com下载J2SDK,当前1.4.x系列的最新版本为1.4.2_082:从http://www.eclipse.org下载Eclipse,当前最新版本为3.1正式版3:从
jsp 做http验证
<%@ page contentType="text/html;charset=GBK"%><%String pass="Basic YWRtaW46MTIzNDU2";//这是base64加密后的,此表示为:用户:admin 密码:123456//这里有个加密工具: http://e345.com.ru/tt/tools/other/base64.php if(request.getHeader("Authorization")==null){ response.setStatus(401); response.setHeader("WWW-authenticate","Basic realm="请输入管理员密码""); } else if( !(request.getHeader("Authorization").equals(pass))){ resp
c#与java的区别
C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Microsoft用来替代Java的产品。事实是否是这样的呢? 本文的比较结果表明,C#不止是Java的同胞那么简单。如果你是一个Java开发者,想要学习C#或者了解更多有关C#的知识,那么本文就是你必须把最初10分钟投入于其中的所在。 [@more@]一、C#、C++和Java C#的语言规范由Microsoft的Anders Hejlsberg与Scott Wiltamuth 编写。在当前Microsoft天花乱坠的宣传中,对C#和C++、Java作一
JDK6.0的新特性之一:Desktop和SystemTray类
在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.下面代码演示了Desktop和SystemTray的用法./** * * @author chinajash */public class DesktopTray { private static Desktop desktop; private static SystemTray st; private static PopupMenu pm; public static void main(String[] a
JDK6.0的新特性之二:使用JAXB2来实现对象与XML之间的映射
JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JA
JDK6.0的新特性之三:理解StAX
StAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一种处理XML文档的APIStAX的来历 在JAXP1.3(JSR 206)有两种处理XML文档的方法:DOM(Document Object Model)和SAX(Simple API for XML).由于JDK6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都会用到StAX所以Sun决定把StAX加入到JAXP家族当中来,并将JAXP的版本升级到1.4(JAXP1.4是JAXP1.3的维护版本). JDK6里面JAXP的版本就是1.4.StAX简介StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API.StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xm
JDK6.0的新特性之四:使用Compiler API
现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以用Compiler API来实现动态编译JSP文件,当然,现在的JSP Web Server也是支持JSP热部署的,现在的JSP Web Server通过在运行期间通过Runtime.exec或ProcessBuilder来调用javac来编译代码,这种方式需要
JDK6.0的新特性之五:轻量级Http Server
JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给HttpHandler实现类的回调方法.下面代码演示了怎样创建自己的Http Server/** * Created by IntelliJ IDEA. * User: Chinajas
JDK6.0的新特性之六:插入式注解处理API(Pluggable Annotation Processing API)
作者: 飞翼 发表日期: 2007-01-03 20:10 插入式注解处理API(JSR 269)提供一套标准API来处理Annotations(JSR 175),实际上JSR 269不仅仅用来处理Annotation,我觉得更强大的功能是它建立了Java 语言本身的一个模型,它把method, package, constructor, type, variable, enum, annotation等Java语言元素映射为Types和Elements(两者有什么区别?), 从而将Java语言的语义映射成为对象, 我们可以在javax.lang.model包下面可以看到这些类. 所以我们可以利用JSR 269提供的API来构建一个功能丰富的元编程(metaprogramming)环境. JSR 269用Annotat