とりあえずTomcat
eclipseのpleiadesパックをインストールするとjreとかtomcatとかも全部入ってて便利。
Tomcatを使うときは別にそれ単体を別にインストールする必要はない。全部eclipseの内部でできる。
動的WEBプロジェクトを作成して、その中にサーブレット、JSP、web.xmlを追加して改変していけばいい。
package foo.bar; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //抽象クラスHttpServletを継承 public class EchoServlet extends HttpServlet { //GET 要求を処理する際にdoGetメソッドが呼び出される お決まりのパターン //できたインスタンス変数名を使って色々処理する。 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println(msg); } }
<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> <title>Insert title here</title> </head> <body> <h2>EchoServletの入力</h2> <% request.setCharacterEncoding("Windows-31J"); %> //getContextPath()を使うと、クラス名を指定できる <form action="<%= request.getContextPath() %>/EchoServlet"> <input type="text" name="message"> <input type="submit"> </form> </body> </html>
web.xml
<?xml version="1.0" encoding="Windows-31J"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>EchoServlet</display-name> <servlet> <description> </description> <display-name>EchoServlet</display-name> <servlet-name>EchoServlet</servlet-name> <servlet-class> foo.bar.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/EchoServlet</url-pattern> </servlet-mapping> //ウェルカムファイルをjspに設定しておく <welcome-file-list> <welcome-file>echo.jsp</welcome-file> </welcome-file-list> </web-app>
これ作ったはいいけどマネごとだし、URLエンコーディングできてないんだな。
追記:例によってGETが文字化けするという状況だったが、eclipse内に設定したサーバーの中にあるserver.xmlを編集してuseBodyEncodingForURI="true"と追記すれば解決した。再実行する際にはプロジェクトのクリーンを行っておかなければならない。