Velocity练习:使用vm模板生成最简单的html页面_html/css_WEB-ITnose
这几天要用到Velocity模板引擎去做一些页面,所以学习了下这个工具。我的jdk版本为 1.8.0_25
需要做的准备工作有:
1、建立一个Java工程,需要引用Velocity相关的jar包,这些jar包可从apache.org下载到最新版本。 下载地址在:http://velocity.apache.org/download.cgi 。我下载的文件是velocity-tools-2.0.zip,将这些文件导入到项目中,就可以使用Velocity进行编码了。
2、安装Eclipse上的Velocity插件Veloedit。因为googlecode被gfw墙掉了,没有条件的朋友们可以安装网上下载到的离线安装版。这里还有一个需要注意,我的Eclipse版本为 Luna Service Release 1 (4.4.1),这个版本必须要先利用Eclipse自带的update功能,下载“Elipse Tests, Examples, and Extras”。
建立一个JavaProject,取名VelocityTool,里面新建两个java文件。
其中,VelocityHelper.java包含一个Velocity模板转换工具类,代码如下:
import java.io.File;import java.io.FileWriter;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;import org.apache.velocity.app.VelocityEngine;/** * * @文件名称 VelocityHelper.java * @文件作者 Tsybius2014 * @创建时间 2016年5月10日 下午2:14:01 */public class VelocityHelper { /** * * @param inputVmFilePath * @param outputHtmlFilePath * @param context * @throws Exception */ public static void generateHtml(String inputVmFilePath, String outputHtmlFilePath, VelocityContext context) throws Exception { try { Velocity.init(); VelocityEngine engine = new VelocityEngine(); Template template = engine.getTemplate(inputVmFilePath, "gbk"); File outputFile = new File(outputHtmlFilePath); FileWriter writer = new FileWriter(outputFile); template.merge(context, writer); writer.close(); } catch (Exception ex) { throw ex; } }}
VelocityTool.java中有main函数,代码如下:
import java.util.HashMap;import java.util.Vector;import org.apache.velocity.VelocityContext;/** * * @文件名称 VelocityTool.java * @文件作者 Tsybius2014 * @创建时间 2016年5月10日 上午10:03:59 */public class VelocityTool { public static void main(String[] args) { try { VelocityContext context= new VelocityContext(); context.put("name", "Kim Jung-un"); context.put("gender", "Male"); context.put("email", "XXX@XXX.gov"); context.put("job", "Chairman of the WPK"); context.put("company", "Workers' Party Of Korea (WPK)"); context.put("address", "XXXXXXXXX, Pyongyang, North Korea"); context.put("portraitPath", "file:///C:/Users/Tsybius/Desktop/kju.jpg"); HashMap<String, String> hashMapContact = new HashMap<String, String>(); hashMapContact.put("Tel", "XXX-XXXXXXXX"); hashMapContact.put("Fax", "XXX-XXXXXXXX"); hashMapContact.put("Mobile", "XXX-XXXX-XXXX"); context.put("contactItems", hashMapContact); Vector<String> vectorRemark = new Vector<String>(); vectorRemark.add("Kim Jong-un is the Chairman of the Workers' Party of Korea and supreme leader of the Democratic People's Republic of Korea (DPRK), commonly referred to as North Korea."); vectorRemark.add("Kim is the son of Kim Jong-il (1941–2011) and the grandson of Kim Il-sung (1912–1994)."); vectorRemark.add("Kim obtained two degrees, one in Physics at Kim Il-sung University, and another as an Army officer at the Kim Il-sung Military University."); vectorRemark.add("Kim was named the World's 46th Most Powerful Person by the Forbes list of The World's Most Powerful People in 2013"); context.put("remarks", vectorRemark); VelocityHelper.generateHtml( "velocity_test.vm", "C:\\Users\\Tsybius\\Desktop\\output.html", context); System.out.println("生成完毕"); } catch (Exception ex) { ex.printStackTrace(); } }}
模板velocity_test.vm是一个存储着人物通讯录的模板,代码如下:
#set($docDesc="VelocityTest")#set($docAuthor="Tsybius2014")#set($docDateTime="2016-05-10 14:29:04")#set($docRemark="none")<!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"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> </style> <head> <title>$!{name}</title> </head> <body> <table width="100%"> <tr> <!-- Title --> <td align="center"><b>Address Book - $!{name}</b></td> </tr> <tr> <!-- BaseInfo --> <td> <table width="100%" height="100%"> <tr> <td width="10%">Name:</td> <td width="30%">$!{name}</td> <td width="10%">Gender:</td> <td width="30%">$!{gender}</td> <td width="20%" rowspan="4"> <img src="/static/imghw/default1.png" data-src="$!{portraitPath}" class="lazy" style="max-width:90%" style="max-width:90%"/ alt="Velocity练习:使用vm模板生成最简单的html页面_html/css_WEB-ITnose" > </td> </tr> <tr> <td width="10%">E-mail:</td> <td width="30%">$!{email}</td> <td width="10%">Job:</td> <td width="30%">$!{job}</td> </tr> <tr> <td width="10%">Company:</td> <td width="70%" colspan="3">$!{company}</td> </tr> <tr> <td width="10%">Address:</td> <td width="70%" colspan="3">$!{address}</td> </tr> </table> </td> </tr> <tr> <!-- Contact --> <td> <table width="100%" height="100%" > <tr> <td width="10%" align="left" valign="top"> Contact: </td> <td> <table width="100%" height="100%" > <tr> <th></th> <th align="left">Contact Type</th> <th align="left">Contact Code</th> <th></th> </tr> #foreach($contactItem in $contactItems.entrySet()) <tr> <td align="left" width="5%">$velocityCount</td> <td align="left" width="20%">$contactItem.key</td> <td align="left" width="30%">$contactItem.value</td> <td></td> </tr> #end </table> </td> </tr> </table> </td> </tr> <tr> <!-- Remarks--> <td> <table width="100%" height="100%" > <tr> <td width="10%" align="left" valign="top"> Remark: </td> <td> <table width="100%" height="100%" > #foreach($remark in $remarks) <tr> <td>[$velocityCount] $remark</td> </tr> #end </table> </td> </tr> </table> </td> </tr> </table> </body></html>
以JavaApplication的方式运行本工程后,生成的HTML页面output.html如下:
<!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"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> </style> <head> <title>Kim Jung-un</title> </head> <body> <table width="100%"> <tr> <!-- Title --> <td align="center"><b>Address Book - Kim Jung-un</b></td> </tr> <tr> <!-- BaseInfo --> <td> <table width="100%" height="100%"> <tr> <td width="10%">Name:</td> <td width="30%">Kim Jung-un</td> <td width="10%">Gender:</td> <td width="30%">Male</td> <td width="20%" rowspan="4"> <img src="/static/imghw/default1.png" data-src="file:///C:/Users/Tsybius/Desktop/kju.jpg" class="lazy" style="max-width:90%" style="max-width:90%"/ alt="Velocity练习:使用vm模板生成最简单的html页面_html/css_WEB-ITnose" > </td> </tr> <tr> <td width="10%">E-mail:</td> <td width="30%">kim001@northkorea.gov</td> <td width="10%">Job:</td> <td width="30%">Chairman of the WPK</td> </tr> <tr> <td width="10%">Company:</td> <td width="70%" colspan="3">Workers' Party Of Korea (WPK)</td> </tr> <tr> <td width="10%">Address:</td> <td width="70%" colspan="3">The Dark Side Laboratory, Pyongyang, North Korea</td> </tr> </table> </td> </tr> <tr> <!-- Contact --> <td> <table width="100%" height="100%" > <tr> <td width="10%" align="left" valign="top"> Contact: </td> <td> <table width="100%" height="100%" > <tr> <th></th> <th align="left">Contact Type</th> <th align="left">Contact Code</th> <th></th> </tr> <tr> <td align="left" width="5%">1</td> <td align="left" width="20%">Tel</td> <td align="left" width="30%">XXX-XXXXXXXX</td> <td></td> </tr> <tr> <td align="left" width="5%">2</td> <td align="left" width="20%">Fax</td> <td align="left" width="30%">XXX-XXXXXXXX</td> <td></td> </tr> <tr> <td align="left" width="5%">3</td> <td align="left" width="20%">Mobile</td> <td align="left" width="30%">XXX-XXXX-XXXX</td> <td></td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <!-- Remarks--> <td> <table width="100%" height="100%" > <tr> <td width="10%" align="left" valign="top"> Remark: </td> <td> <table width="100%" height="100%" > <tr> <td>[1] Kim Jong-un is the Chairman of the Workers' Party of Korea and supreme leader of the Democratic People's Republic of Korea (DPRK), commonly referred to as North Korea.</td> </tr> <tr> <td>[2] Kim is the son of Kim Jong-il (1941–2011) and the grandson of Kim Il-sung (1912–1994).</td> </tr> <tr> <td>[3] Kim obtained two degrees, one in Physics at Kim Il-sung University, and another as an Army officer at the Kim Il-sung Military University.</td> </tr> <tr> <td>[4] Kim was named the World's 46th Most Powerful Person by the Forbes list of The World's Most Powerful People in 2013</td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </body></html>
使用 Firefox 46.0.1 打开此页面后效果图如下:
(部分内容摘自对应人物的维基百科页面)
END

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.
