| 5.doGetとHtml出力 |
| (1) doGet メソッドの構文 |
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, java.io.IOException
|
| (2) ブラウザからURL指定時の確認 |
// PortCheck.java
import java.io.*;
import java.net.*;
public class PortCheck{
public static void main(String argv[]) throws IOException{
String gyo;
ServerSocket ss = new ServerSocket(5555);
while(true){
Socket s = ss.accept();
BufferedReader br = new BufferedReader(
new InputStreamReader(s.getInputStream()));
PrintWriter pw =
new PrintWriter(s.getOutputStream(),true);
pw.println("<html><head></head><body>");
pw.println("Access port 5555!");
pw.println("</body></html>");
while(!(gyo = br.readLine()).equals("")){
System.out.println(gyo);
}
s.close();
}
}
}
|
C:\java_test>javac PortCheck.java
C:\java_test>java PortCheck
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/vnd.ms-
excel,application/msword,application/vnd.ms-powerpoint,*/*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent:Mozilla/4.0(compatible;MSIE 5.5;Windows NT 5.0)
Host: 127.0.0.1:5555
Connection: Keep-Alive
|
※Servletでは「GET」の要求があった時に、 doGetメソッドを呼び出すようです。
| (3) Html 文書の送出 |
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, java.io.IOException
引数 HttpServletResponse resp サーブレットで処理した結果
|
ServletResponseクラスのsetContentTypeメソッドを使ってMIMEタイプと文字符号化方法(Charset)を指定します。
構文 : public void setContentType(java.lang.String type) 引数 : type - a String specifying the MIME type of the content
例 : resp.setContentType("text/html; charset=Shift_JIS");
MIMEタイプとCharset には、次のような種類(一部)があります。
シフトジス "text/html;charset=Shift_JIS" 一般的なJIS "text/html;charset=ISO-2022-JP" EUC "text/html;charset=EUC-JP" テキスト形式 "text/plain" GIFイメージ形式 "image/gif"
次に実際にデータを書き出すためのWriterを取得します。文字を書きだすのであれば getWriter()メソッドを使ってPrintWriterを取得します。
構文 : public java.io.PrintWriter getWriter() throws java.io.IOException 引数 : なし 戻り値 : a PrintWriter object that can return character data to the client
例 : PrintWriter out = resp.getWriter();
画像などのバイナリを書き出すのであればgetOutputStream()を使ってServletOutputStreamを取得します。
この取得したPrintWriterなりServletOutputStreamなりに対してデータを書き出すことで、呼び出し元にデータを返すことができます。
HTML文書を返す場合には、先ほどのgetWriterメソッドで取得したPrintWriterに対して"println"メソッドでデータを書きだしてあげます。今までの説明を含めて、実際には次のようになります。
// 例 SanServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SanServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException{ resp.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<head><title>タイトル</title></head>"); out.println("<body>"); out.println("Hello World!"); : out.println("</body></html>"); out.close(); } }
書き出しが終わったら、PrintWriterをcloseします。
以上が基本的なdoGetが呼び出されたときにHTML文書を返す場合の手順となります。