-
Hello, Django World!
Posted on 2月 24th, 2012 by cx20
Django
Django は Python で実装された Web アプリケーションフレームワークである。名前の由来は作者の好きなミュージシャンから。
元々はアメリカのある新聞社の社内ツールとして開発された。現在はオープンソースで、Google App Engine でも採用されている。
Django には独自のテンプレートエンジン、O/R マッパー、正規表現を用いた URLディスパッチャーなどの機能が含まれる。
ここでは主要な機能のテンプレートエンジンを使用したサンプルを記載する。
ソースコード(テンプレート)
Content-Type: text/html <html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, {{message}} World!</p> </body> </html>ソースコード(CGIコード)
#!/usr/bin/env python from django.conf import settings from django.template import Context from django.template.loader import get_template settings.configure(TEMPLATE_DIRS=('/Applications/MAMP/cgi-bin/python',)) tmpl = get_template('template.html') print tmpl.render(Context({'message' : 'Django' }))
実行方法
1. CGI用フォルダ(cgi-bin等)に配置 2. 実行権限の付与 $ chmod +x hello.py 3. ブラウザで表示 http://localhost/cgi-bin/hello.py
実行結果
Hello, Django World!
-
Hello, Cheetah World!
Posted on 2月 23rd, 2012 by cx20
Cheetah
Cheetah は Python 用の汎用テンプレートエンジンである。名前の由来は動物のチータから。
ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, $message World!</p> </body> </html>ソースコード(CGIコード)
#!/usr/bin/env python from Cheetah.Template import Template tpl = Template(file='hello.tpl') tpl.message = 'Cheetah' print "Content-Type: text/htmlnn" print tpl
実行方法
1. CGI用フォルダ(cgi-bin等)に配置 2. 実行権限の付与 $ chmod +x hello.py 3. ブラウザで表示 http://localhost/cgi-bin/hello.py
実行結果
Hello, Cheetah World!
-
Hello, Template Toolkit World!
Posted on 2月 22nd, 2012 by cx20
Template Toolkit
Template Toolkit は Perl 用のテンプレートエンジンの一つである。TT または TT2 と呼ばれている。
ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, [% message %] World!</p> </body> </html>ソースコード(CGIコード)
#!/usr/bin/perl use Template; my $template = Template->new(); my $message = 'Template'; my $result; my $vars = { 'message' => $message }; $template->process('template.tt', $vars, $result); print "Content-Type: text/htmlnn"; print $result;
実行方法
1. CGI用フォルダ(cgi-bin等)に配置 2. 実行権限の付与 $ chmod +x hello.pl 3. ブラウザで表示 http://localhost/cgi-bin/hello.pl
実行結果
Hello, Template Toolkit World!
-
Hello, HTML::Template World!
Posted on 2月 21st, 2012 by cx20
HTML::Template
HTML::Template は Perl 用の HTML テンプレートモジュールである。
ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, <TMPL_VAR NAME=MESSAGE> World!</p> </body> </html>ソースコード(CGIコード)
#!/usr/bin/perl use HTML::Template; my $template = HTML::Template->new(filename => 'hello.tmpl'); $template->param(MESSAGE => "HTML::Template"); print "Content-Type: text/htmlnn"; print $template->output;
実行方法
1. CGI用フォルダ(cgi-bin等)に配置 2. 実行権限の付与 $ chmod +x hello.pl 3. ブラウザで表示 http://localhost/cgi-bin/hello.pl
実行結果
Hello, HTML::Template World!
-
Hello, Smarty World!
Posted on 2月 20th, 2012 by cx20
Smarty
Smarty は PHP 用のテンプレートエンジンである。名前の由来は「スマート(smart)」から。
ページにアクセスするとテンプレートはコンパイルされ PHP スクリプトに展開される。
ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, {$message} World!</p> </body> </html>ソースコード(PHP)
<?php require_once 'libs/Smarty.class.php'; $smarty = new Smarty(); $smarty->template_dir = 'templates/'; $smarty->compile_dir = 'templates_c/'; $smarty->assign('message', 'Smarty'); $smarty->display('template.html'); ?>
上記の PHP コードならびにテンプレートは実行時に以下の PHP スクリプトに展開される。
コンパイル結果(PHP)
<?php /* Smarty version Smarty-3.1.7, created on 2012-01-31 00:10:09 compiled from "templates/template.html" */ ?> <?php /*%%SmartyHeaderCode:10960230224f26b28ceec5c3-38524326%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed'); $_valid = $_smarty_tpl->decodeProperties(array ( 'file_dependency' => array ( '41d3b4a4b71afe0c223778e57c23244caee1baec' => array ( 0 => 'templates/template.html', 1 => 1327936205, 2 => 'file', ), ), 'nocache_hash' => '10960230224f26b28ceec5c3-38524326', 'function' => array ( ), 'version' => 'Smarty-3.1.7', 'unifunc' => 'content_4f26b28d05af0', 'variables' => array ( 'message' => 0, ), 'has_nocache_code' => false, ),false); /*/%%SmartyHeaderCode%%*/?> <?php if ($_valid && !is_callable('content_4f26b28d05af0')) {function content_4f26b28d05af0($_smarty_tpl) {?><html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, <?php echo $_smarty_tpl->tpl_vars['message']->value;?> World!</p> </body> </html> <?php }} ?>
実行方法
ディレクトリ構成 /doc … 公開用フォルダ /libs … ライブラリ配置場所 /templates … テンプレート配置場所 /templates_c … テンプレートコンパイル結果配置場所 1. ライブラリ(Smarty.class.php)を libs に配置 2. テンプレート(template.html)を templates に配置 3. ソース(hello.php)を公開フォルダに配置 4. ブラウザで表示 http://localhost/doc/hello.php実行結果
Hello, Smarty World!
-
Hello, Velocity World!
Posted on 2月 19th, 2012 by cx20
Velocity
Velocity は Java 用のテンプレートエンジンである。英語で「速さ」を意味する。
テンプレートファイルは VTL(Velocity Template Language)と呼ばれるテンプレート言語が用いられる。ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, $message World!</p> </body> </html>ソースコード(Java)
import org.apache.velocity.Template; import org.apache.velocity.servlet.VelocityServlet; import org.apache.velocity.app.Velocity; import org.apache.velocity.context.Context; import javax.servlet.http.*; public class Hello extends VelocityServlet { public Template handleRequest( HttpServletRequest request, HttpServletResponse response, Context context ) { Template template = null; try { context.put("message", "Velocity"); template = Velocity.getTemplate("hello.vm"); } catch( Exception e ) { System.err.println("Exception: " + e.getMessage()); } return template; } }
実行方法
ディレクトリ構成 /hello … 公開用フォルダ /WEB-INF … アプリケーション設定ファイル配置場所 /classes … クラスファイル配置場所 /templates … テンプレート配置場所 1. モジュールのコンパイル javac -cp $CATALINA_HOME/lib/velocity-1.7.jar:$CATALINA_HOME/lib/servlet-api.jar:. Hello.java 2. モジュールの配置 WEB-INF/classes 3. テンプレートの配置 WEB-INF/templates 4. WEB-INF/velocity.properties の記載resource.loader = file file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader file.resource.loader.path = /usr/local/tomcat/current/webapps/hello/WEB-INF/templates file.resource.loader.cache = true file.resource.loader.modificationCheckInterval = 2
5. WEB-INF/web.xml の記載
<?xml version="1.0"?> <web-app> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>Hello</servlet-class> <init-param> <param-name>properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/servlet/Hello</url-pattern> </servlet-mapping> </web-app>
6. ブラウザで表示 http://localhost:8080/hello/servlet/Hello
実行結果
Hello, Velocity World!
-
Hello, EL World!
Posted on 2月 18th, 2012 by cx20
EL
EL(Expression Language)は Java EE 周辺技術の一つで JSP 2.0 より導入された組み込み言語である。EL式または式言語と呼ばれている。
JSP から Java コード(スクリプトレット)を取り除き、コードの可読性を向上させる為に考案された。
${} の形式で式や変数を記述する。実際の変数はスコープに設定されている属性として扱われる。
JSP 2.1 より JSF の #{} の形式(遅延評価型)を取り入れた Unified EL が利用可能となっている。
なお、Java EE 周辺技術のバージョンは以下のような対応になっている。J2EE Servlet JSP EL JSTL JSF EJB J2EE 1.2 2.2 1.1 – – – 1.1 J2EE 1.3 2.3 1.2 – 1.0 – 2.0 J2EE 1.4 2.4 2.0 2.0 1.1 – 2.1 Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0 Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1 ソースコード(EL)
<%@ page contentType="text/html"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Hello, World!</title> </head> <body> <c:set var="message" value="EL" scope="page" /> <p>Hello, <c:out value="${message}"/> World!</p> </body> </html>
上記 JSTL コードは、以下の JSP コードに相当する。
ソースコード(JSP)
<html> <head> <title>Hello, World!</title> </head> <body> <% pageContext.setAttribute("message","EL"); %> <p>Hello, <%= pageContext.getAttribute("message") %> World!</p> </body> </html>実行方法
ディレクトリ構成 /hello … 公開用フォルダ /WEB-INF … アプリケーション設定ファイル配置場所 /lib … ライブラリ配置場所 1. WEB-INF/lib にライブラリを配置 jstl.jar standard.jar 2. Tomcat の公開フォルダに JSP ファイルを配置 3. ブラウザで表示 http://localhost:8080/hello/hello.jsp実行結果
Hello, JSTL World!
-
Hello, JSF World!
Posted on 2月 17th, 2012 by cx20
JSF
JSF(JavaServer Faces)は Java EE 周辺技術の一つで Java ベースの Web アプリケーションフレームワークである。
一般的な Web アプリケーションフレームワークが MVC の形式であるのに対して、JSF はコンポーネントベースとなっている。考え方は ASP.NET に近い。
なお、Java EE 周辺技術のバージョンは以下のような対応になっている。J2EE Servlet JSP EL JSTL JSF EJB J2EE 1.2 2.2 1.1 – – – 1.1 J2EE 1.3 2.3 1.2 – 1.0 – 2.0 J2EE 1.4 2.4 2.0 2.0 1.1 – 2.1 Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0 Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1 ソースコード(JSF)
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title>Hello, World!</title> </head> <body> <f:view> <h:outputText value="Hello, JSF World!" /> </f:view> </body> </html>
実行方法
ディレクトリ構成 /hello … 公開用フォルダ /WEB-INF … アプリケーション設定ファイル配置場所 /lib … ライブラリ配置場所 1. WEB-INF/lib にライブラリを配置 myfaces-api.jar myfaces-impl.jar 2. Tomcat の公開フォルダに JSP ファイルを配置 3. WEB-INF/web.xml の記載<?xml versino="1.0"?> <web-app> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> </web-app>
4. WEB-INF/faces-config.xml の記載
<?xml version="1.0"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> </faces-config>
5. ブラウザで表示 http://localhost:8080/hello/hello.jsf
実行結果
Hello, JSF World!
-
Hello, JSTL World!
Posted on 2月 16th, 2012 by cx20
JSTL
JSTL(JavaServer Pages Standard Tag Library)は、Jakarta プロジェクトにより開発された JSP の標準タグライブラリである。Java EE 5 より正式に標準仕様として取り入れられた。
タグライブラリは JSP 内の Java コードをカプセル化したものである。
なお、Java EE 周辺技術のバージョンは以下のような対応になっている。J2EE Servlet JSP EL JSTL JSF EJB J2EE 1.2 2.2 1.1 – – – 1.1 J2EE 1.3 2.3 1.2 – 1.0 – 2.0 J2EE 1.4 2.4 2.0 2.0 1.1 – 2.1 Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0 Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1 ソースコード(JSTL)
<%@ page contentType="text/html"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Hello, World!</title> </head> <body> <p><c:out value="Hello, JSTL World!"/></p> </body> </html>
上記 JSTL コードは、以下の JSP コードに相当する。
ソースコード(JSP)
<html> <head> <title>Hello, World!</title> </head> <body> <p><% out.print( "Hello, JSTL World!" ); %></p> </body> </html>実行方法
ディレクトリ構成 /hello … 公開用フォルダ /WEB-INF … アプリケーション設定ファイル配置場所 /lib … ライブラリ配置場所 1. WEB-INF/lib にライブラリを配置 jstl.jar standard.jar 2. Tomcat の公開フォルダに JSP ファイルを配置 3. ブラウザで表示 http://localhost:8080/hello/hello.jsp実行結果
Hello, JSTL World!
-
Hello, JSP World!
Posted on 2月 15th, 2012 by cx20
JSP
JSP(JavaServer Pages)は Java EE 周辺技術の一つで Web サーバーで Java プログラムを動作させる技術である。
JSP は HTML に Java コードを埋め込む形で記述する。実行時に Java Servlet のコードが生成されコンパイルされる。
実行環境としては Java Servlet と同様に Apache Tomcat が用いられることが多い。
JSP の類似技術としては、Java Servlet、PHP、ASP、ASP.NET 等がある。
なお、Java EE 周辺技術のバージョンは以下のような対応になっている。J2EE Servlet JSP EL JSTL JSF EJB J2EE 1.2 2.2 1.1 – – – 1.1 J2EE 1.3 2.3 1.2 – 1.0 – 2.0 J2EE 1.4 2.4 2.0 2.0 1.1 – 2.1 Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0 Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1 ソースコード
<html> <head> <title>Hello, World!</title> </head> <body> <p><% out.print( "Hello, JSP World!" ); %></p> </body> </html>上記 JSP コードは、以下の Java Servlet コードと同様である。実際には実行時に Java クラスファイルにコンパイルされ実行される。
ソースコード(Java)
package org.apache.jsp.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; } public void _jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); } public void _jspDestroy() { } public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("<html>rn"); out.write(" <head>rn"); out.write(" <title>Hello, World!</title>rn"); out.write(" </head>rn"); out.write(" <body>rn"); out.write(" <p>"); out.print( "Hello, JSP World!" ); out.write("</p>rn"); out.write(" </body>rn"); out.write("</html> "); } catch (java.lang.Throwable t) { if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) try { out.clearBuffer(); } catch (java.io.IOException e) {} if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } }
実行方法
1. Tomcat の公開フォルダ に配置 2. ブラウザで表示 http://localhost:8080/hello/hello.jsp
実行結果
Hello, JSP World!