Sirius

2011年4月1日(金) 20:44

apache-tomcat、MySQL、を USB メモリから起動する(サーブレット 編)

前回と同じ Test アプリケーションに追加します。
アプリケーションフォルダに WEB-INF フォルダを作成し、その下に web.xml ファイルを作成します。内容を次のようにします。
--------------------------------ここから----------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">  

  <display-name>MySQL Test</display-name>
  <description>
     MySQL Test
  </description>
  <servlet>
    <servlet-name>Testservret</servlet-name>
    <servlet-class>Testservret</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Testservret</servlet-name>
    <url-pattern>/MySQL</url-pattern>
  </servlet-mapping>
</web-app>
--------------------------------ここまで----------------------------------
WEB-INF の下に classes フォルダを作成し、Java のソースをおきます(Testservret.java)。内容を次のようにします。
utf8 で保存します。※
--------------------------------ここから----------------------------------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

public class Testservret extends HttpServlet {
  Connection con = null;
  Statement objSql= null;
  ResultSet rs = null;

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{

    response.setContentType("text/html; charset=utf8");
    PrintWriter out = response.getWriter();

    out.println("<html>");
    out.println("<head>");
    out.println("<meta http-equiv=¥"Content-Type¥" content=¥"text/html; charset=utf8¥">");
    out.println("<title>データベーステスト</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<table border=1>");

    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      // データベースへ接続
      con = DriverManager.getConnection("jdbc:mysql://localhost/local?characterEncoding=utf8","test_user","password");
      con.setReadOnly(true);
        // JDBC 問い合わせ SQL 作成
        objSql = con.createStatement();
        // SQL 問い合わせ
        rs = objSql.executeQuery("select * from test_table");
        while( rs.next() ) {
            out.println("<tr><td>"+rs.getString("no")+"</td>");
            out.println("<td>"+rs.getString("name")+"</td>");
            out.println("<td>"+rs.getInt("score")+"</td></tr>");
        }
        con.close();
    }catch (ClassNotFoundException e){
      out.println("ドライバのロードに失敗しました");
    }catch (Exception e){
      out.println(e.getMessage());
    }

    out.println("</table>");

    out.println("</body>");
    out.println("</html>");
  }
}
--------------------------------ここまで----------------------------------
コンパイルします。
USB のルートの下に compile.bat ファイルを作成します。内容を次のようにします。
--------------------------------ここから----------------------------------
@echo off
%~d0
cd "%~p0"
set JAVA_HOME=%cd%¥jdk1.6.0_24
set CLASSPATH=%CLASSPATH%;%cd%¥apache-tomcat-7.0.8¥lib¥servlet-api.jar;.
set PATH=%PATH%;%JAVA_HOME%¥bin
cd apache-tomcat-7.0.8¥webapps
cmd.exe
--------------------------------ここまで----------------------------------
ダブルクリックしてコマンドプロンプトを起動して、
> cd Test¥WEB-INF¥classes
> javac -encoding utf8 Testservret.java
でコンパイルします。

http://localhost:8080/Test/MySQL をブラウザで開いてみてください。
テーブルが表示されれば OK です。

※エンコードについて
最近の web は utf8 が多いので、これから作る分は utf8 がよいと思いますが、Windows で作成する場合、メモ帳から utf8 で保存すると Java のコンパイルでエラーになります。Windows 版の Java のデフォルトエンコードは Shift-jis なので、-encoding オプションで明示的にエンコードを utf8 にする必要があります。さらに、メモ帳は utf8 で保存するさい、ファイルの先頭に BOM を付けます。Java は、この BOM に対応していないようです。ソースはメモ帳以外の、BOM を付加しないエディタで保存する必要があります。

Windows のみを使用するのであれば、Java のソースコードについては Shift-jis で保存し、デフォルトエンコードでコンパイルして問題ありません。出力する web ページが utf8 でも正しく表示できます。

written by sirius [その他] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Sirius

MySketch 2.7.2 written by 夕雨