Archive for the ‘Servlet’ Category

  1. 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!
    
  2. 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!
  3. Hello, Java Servlet World!

    Posted on 2月 14th, 2012 by cx20

    Java Servlet

    Java Servlet は Java EE 周辺技術の一つで Web サーバーで Java プログラムを動作させる技術である。
    サーブレットの実行環境は Web コンテナまたはサーブレットコンテナと呼ばれ、Apache Tomcat が使われることが多い。Tomcat は雄猫を意味する。
    Java Servlet の類似技術としては、JSP(JavaServer Pages)、PHP、ASP、APS.NET 等がある。
    CGI が実行時にプロセスを起動するのに対して、Java Servlet はメモリに常駐して実行時に軽量スレッドとして動作する為、効率が良い。
    なお、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

    ソースコード(Java)

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    public class Hello extends HttpServlet {
        public void doGet( HttpServletRequest request, HttpServletResponse response )
            throws ServletException,IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println( "<html>" );
            out.println( "  <head>" );
            out.println( "    <title>Hello, World!</title>" );
            out.println( "  </head>" );
            out.println( "  <body>" );
            out.println( "    <p>Hello, Java Servlet World!</p>" );
            out.println( "  </body>" );
            out.println( "</html>" );
        }
    }

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /classes     … クラスファイル配置場所
     
    1. モジュールのコンパイル
        javac -cp $CATALINA_HOME/lib/servlet-api.jar:. Hello.java
    2. モジュールの配置
       WEB-INF/classes
    3. WEB-INF/web.xml の記載
    <?xml version="1.0"?>
    <web-app>
      <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>Hello</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/servlet/Hello</url-pattern>
      </servlet-mapping>
    </web-app>
    4. ブラウザで表示
       http://localhost/hello/servlet/Hello

    実行結果

    Hello, Java Servlet World!