「Java/Tomcat/サーブレットを作ってみる」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
ハローワールド的な、ブラウザからサーブレットにアクセスして「Hello!! MyServlet!!」と表示するだけのサンプルです。
* 目次
+ &link_anchor(サーブレット作成){サーブレット作成}
+ &link_anchor(web.xml編集){web.xml編集}
+ &link_anchor(ブラウザで確認){ブラウザで確認}
* ■&anchor(サーブレット作成,option=nolink){サーブレット作成} - MyServlet.java
#highlight(java){{
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println(" <head>");
out.println(" <title>Hello!! MyServlet!!</title>");
out.println(" </head>");
out.println(" <body>");
out.println(" Hello!! MyServlet!!");
out.println(" </body>");
out.println("</html>");
out.flush();
}
}
}}
** サンプルサーブレットの解説
■ポイント1 - 継承
#highlight(java){{public class MyServlet extends HttpServlet}}
- サーブレットは上のように「HttpServlet」を継承して作ります。
-- 「HttpServlet」はその名の通り、HTTPプロトコルに対応したサーブレットです。
--- ※HTTPプロトコル=ブラウザでwebサイトを見る時に通常使われるプロトコル
■ポイント2 - HTTPメソッド
#highlight(java){{@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws}}
- このサンプルは、HTTPのGETメソッドに対応しています。。
-- GETメソッド=ブラウザにURLを入力したり、リンクをクリックしたり、method="GET"になっているフォームを送信した時に使われるアクセス方法です。
- ブラウザからサーブレットにアクセスすると、doGetメソッドが実行され、「Hello!! MyServlet!!」が表示されます。
- その他のHTTPメソッドと、サーブレットのメソッドの関係は以下のようになります。
GETメソッド → doGet
POSTメソッド → doPost
DELETEメソッド → doDelete
PUTメソッド → doPut
HEADメソッド → doHead
OPTIONSメソッド → doOption
TRACEメソッド → doTrace
- 色々ありますが、普通はdoGetとdoPostしか使わないです。
■ポイント3 - HTML出力
- このサンプルは、サーブレットの中から直接HTMLを出力しています。
- サーブレットから直接HTMLを出力するのは推奨されないのですが、まずはサーブレットだけで完結するサンプルということで直接出力してみました。
#highlight(java){{PrintWriter out = resp.getWriter();}}
- このコードでHttpServletResponseからPrintWriterを取得しています。
#highlight(java){{out.println("<html>");
// 省略
}}
- PrintWriterに対して「println」メソッドを使ってHTMLを出力しています。
* ■&anchor(web.xml編集,option=nolink){web.xml編集}
* web.xml - からっぽ
#highlight(){{
<?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">
</web-app>
}}
- まずは空のweb.xmlです。Tomcatインストールディレクトリの「conf/web.xml」をコピーしてきて、<web-app>タグの間を全部消しました。
- これを以下のように、Tomcatプロジェクトの「WEB-INF/web.xml」に配置します。
&ref(tomcat02-01.png)
* web.xml - サーブレットの宣言とマッピング追加
#highlight(){{
<?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">
<!-- サーブレットの宣言 -->
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<!-- サーブレットとurlのマッピング -->
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
}}
- <web-app>タグの間に、サーブレットの宣言と、urlのマッピングを追加します。
- サーブレットの宣言
-- <servlet-class>には、サーブレットのクラス名をパス名も含めた完全な名前で設定します。
-- <servlet-name>には、サーブレットに名前を設定します。ここで設定した名前が、urlマッピングで使用されます。
- サーブレットとurlのマッピング
-- <servlet-name>、サーブレットの宣言で付けたサーブレットの名前を設定します。
-- <url-pattern>には、サーブレットにアクセスするためのURLを設定します。
--- 「/hogehoge」と設定すると、「http://サーバー名/コンテキスト名/hogehoge」にブラウザでアクセスするとサーブレットにアクセスできます。
--- ※コンテキスト名:Tomcatプロジェクト名=コンテキスト名と設定することが多いですが、設定で別の名前にすることも出来ます。
- サーブレットは作っただけではアクセス出来ないので、サーブレットを作る度に宣言とマッピングをする必要があります。
* ■&anchor(ブラウザで確認,option=nolink){ブラウザで確認}
- 「http://localhost:8080/Tomcat7Test/myservlet」にブラウザからアクセスして、以下のような画面が表示されれば成功です。
&ref(tomcat02-02.png)
#inc(Java/Tomcat/サンプル)
* コメント
#pcomment(reply)
ハローワールド的な、ブラウザからサーブレットにアクセスして「Hello!! MyServlet!!」と表示するだけのサンプルです。
* 目次
#contents(fromhere=true)
* サーブレット作成 - MyServlet.java
#highlight(java){{
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println(" <head>");
out.println(" <title>Hello!! MyServlet!!</title>");
out.println(" </head>");
out.println(" <body>");
out.println(" Hello!! MyServlet!!");
out.println(" </body>");
out.println("</html>");
out.flush();
}
}
}}
** サンプルサーブレットの解説
■ポイント1 - 継承
#highlight(java){{public class MyServlet extends HttpServlet}}
- サーブレットは上のように「HttpServlet」を継承して作ります。
-- 「HttpServlet」はその名の通り、HTTPプロトコルに対応したサーブレットです。
--- ※HTTPプロトコル=ブラウザでwebサイトを見る時に通常使われるプロトコル
■ポイント2 - HTTPメソッド
#highlight(java){{@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws}}
- このサンプルは、HTTPのGETメソッドに対応しています。。
-- GETメソッド=ブラウザにURLを入力したり、リンクをクリックしたり、method="GET"になっているフォームを送信した時に使われるアクセス方法です。
- ブラウザからサーブレットにアクセスすると、doGetメソッドが実行され、「Hello!! MyServlet!!」が表示されます。
- その他のHTTPメソッドと、サーブレットのメソッドの関係は以下のようになります。
GETメソッド → doGet
POSTメソッド → doPost
DELETEメソッド → doDelete
PUTメソッド → doPut
HEADメソッド → doHead
OPTIONSメソッド → doOption
TRACEメソッド → doTrace
- 色々ありますが、普通はdoGetとdoPostしか使わないです。
■ポイント3 - HTML出力
- このサンプルは、サーブレットの中から直接HTMLを出力しています。
- サーブレットから直接HTMLを出力するのは推奨されないのですが、まずはサーブレットだけで完結するサンプルということで直接出力してみました。
#highlight(java){{PrintWriter out = resp.getWriter();}}
- このコードでHttpServletResponseからPrintWriterを取得しています。
#highlight(java){{out.println("<html>");
// 省略
}}
- PrintWriterに対して「println」メソッドを使ってHTMLを出力しています。
* web.xml編集
web.xml - からっぽ
#highlight(){{
<?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">
</web-app>
}}
- まずは空のweb.xmlです。Tomcatインストールディレクトリの「conf/web.xml」をコピーしてきて、<web-app>タグの間を全部消しました。
- これを以下のように、Tomcatプロジェクトの「WEB-INF/web.xml」に配置します。
&ref(tomcat02-01.png)
** web.xml - サーブレットの宣言とマッピング追加
#highlight(){{
<?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">
<!-- サーブレットの宣言 -->
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<!-- サーブレットとurlのマッピング -->
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
}}
- <web-app>タグの間に、サーブレットの宣言と、urlのマッピングを追加します。
- サーブレットの宣言
-- <servlet-class>には、サーブレットのクラス名をパス名も含めた完全な名前で設定します。
-- <servlet-name>には、サーブレットに名前を設定します。ここで設定した名前が、urlマッピングで使用されます。
- サーブレットとurlのマッピング
-- <servlet-name>、サーブレットの宣言で付けたサーブレットの名前を設定します。
-- <url-pattern>には、サーブレットにアクセスするためのURLを設定します。
--- 「/hogehoge」と設定すると、「http://サーバー名/コンテキスト名/hogehoge」にブラウザでアクセスするとサーブレットにアクセスできます。
--- ※コンテキスト名:Tomcatプロジェクト名=コンテキスト名と設定することが多いですが、設定で別の名前にすることも出来ます。
- サーブレットは作っただけではアクセス出来ないので、サーブレットを作る度に宣言とマッピングをする必要があります。
* ブラウザで確認
- 「http://localhost:8080/Tomcat7Test/myservlet」にブラウザからアクセスして、以下のような画面が表示されれば成功です。
&ref(tomcat02-02.png)
その他の#inc(Java/Tomcat/サンプル)
* コメント
#pcomment(reply)