Servlet / JSP Tips
Tomcat(など)の環境構築さえ済めばけっこう楽です。
二年ぶりにインストール!
J2EEが巨大化してて意味分からないけど、 /opt/SUNWappserver/jdk/がJAVA_HOMEらしい。
Tomcatのページからcore, adminとかめぼしいtar.gzを全部落として、上から順に解凍、/usr/local/apache-tomcat-5.5.20に配置。
/etc/profileにJAVA_HOMEとCATALINA_HOME書いちゃって、$TOMCAT_HOME/conf/tomcat-users.xmlにroleがadminなユーザーを作って、localhost:8080/adminにアクセス。適当にコンテクストを追加。
JSP
-
エンコーディング。ファイルはeuc,出力はutf8に。
<%@ page pageEncoding="euc-jp" contentType="text/html; charset=UTF-8"%>
-
request.getParamaterの文字化けをアドホックに解消。
if((keyword = request.getParameter("keyword")) != null) {
keyword = new String(keyword.getBytes("iso-8859-1"), "utf-8");
}
Tips
-
サーブレットの超基本。doGetにGetの処理、doPostにPostの処理を書く。
おきまりのHelloを出力するプログラム。
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
ServletContext context;
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html; charset=euc-jp");
PrintWriter out = response.getWriter();
out.println("Hello!");
}
}
ブラウザでの表示結果
Hello!
-
次はjspに処理を渡してみる。さっきのファイルのdoGetを変更。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
/* ここにpostの処理 */
/* 例えばindex.jspに処理を飛ばしてみる */
String name = "kei";
request.setAttribute("name_a", name);
context.getRequestDispatcher("/index.jsp").forward(request, response);
}
飛ばす先のjspファイル。(index.jsp)
<%@ page contentType="text/html; charset=euc-jp" %>
<% String name = (String)request.getAttribute("name_a"); %>
<html><body>
Hi, I'm <%= name %> !
</body></html>
ブラウザでの表示結果
Hi, I'm kei!
-
URL転送。ただしpostのデータは転送できない
response.sendRedirect("http://www.sodan.ecc.u-tokyo.ac.jp/~kei/perl/simple.cgi");