基本形1
Servlet 2.5 までの基本的な形
ディレクトリ構成
[プロジェクトルート] │ ├─src │ ├─jspファイル │ └─WEB-INF │ web.xml │ └─classes(コンパイル後の実行体)
サンプルソース
参照
http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp05.html
Bean
package searchtel; import java.util.Vector; import java.sql.*; public class SearchTelBean { private String tel = null; /** 結果を取得するメソッド */ public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } /** 氏名から電話番号を検索するメソッド */ public void searchTels(String name) { String result = "XX-XXXX-XXXX"; //氏名から電話番号を検索し文字列resultをセット //するロジックを実装する setTel(result); } }
Servlet
package searchtel; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class SearchTelServlet extends HttpServlet { /**HTTP Get リクエストの処理*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); SearchTelBean searchTelBean = new SearchTelBean(); //電話番号を検索 searchTelBean.searchTels(name); //BeanをJSPに渡すためにHttpServletRequestオブジェクトにセット request.setAttribute("searchTelBean", searchTelBean); //ViewであるJSPを呼び出す RequestDispatcher rDispatcher = request.getRequestDispatcher("/result.jsp"); rDispatcher.forward(request, response); } }
JSP
<HTML> <HEAD> <jsp:useBean id="searchTelBean" scope="request" class="searchtel.SearchTelBean" /> <TITLE>検索結果</TITLE> <BODY> 検索結果:<jsp:getProperty name="searchTelBean" property="tel" /> </BODY> </HTML>
Web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <!-- (1)DTD宣言の設定 --> <web-app> <!-- (2)servletタグの設定 --> <servlet> <servlet-name>test</servlet-name> <servlet-class>SearchTelServlet</servlet-class> </servlet> <!-- (3)servlet-mappingタグの設定 --> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/search</url-pattern> </servlet-mapping> </web-app>
jsp ファイルに直接アクセスさせない
<security-constraint> <display-name>Jsp Security</display-name> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <url-pattern>*.jsp</url-pattern> <http-method>DELETE</http-method> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> </web-resource-collection> <auth-constraint> </auth-constraint> </security-constraint>
を web.xml に追記する
基本形2
Servlet 3.0 以降
アノテーションを使うことで、web.xml を書かなくても良くなった
ディレクトリ構成
[プロジェクトルート] │ ├─src │ ├─jspファイル │ └─WEB-INF │ web.xml(なくてもよい) │ └─classes(コンパイル後の実行体)
servlet
1 |
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * テストサーブレットクラス */ @WebServlet(description = "サーブレット テスト", urlPatterns = { "/HelloServlet" }) public class TestServlet extends HttpServlet { /** * GETリクエスト処理 */ protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // レスポンスヘッダの設定 response.setContentType("text/html; charset=UTF-8"); // ページの描画 PrintWriter writer = response.getWriter(); writer.println("<html>"); writer.println(" <head>"); writer.println(" <title>HelloServlet</title>"); writer.println(" </head>"); writer.println(" <body>"); writer.println(" <h1>Hello Servlet</h1>"); writer.println(" <p>GET Request.</p>"); writer.println(" <p>日本語のテスト</p>"); writer.println(" </body>"); writer.println("</html>"); } } |
コンパイル
javac -cp /usr/share/java/servlet.jar src/TestServlet.java -d WEB-INF/classes/
web.xml
なくても動くけど、一応作る
<?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"> <display-name>Test Application</display-name> </web-app>
基本形3
jspだけで作ってしまう。
http://d.hatena.ne.jp/nowokay/20131108
ディレクトリ構成
[プロジェクトルート] │ ├─src │ ├─jspファイル │ └─WEB-INF │ web.xml(なくてもよい) │ └─classes(コンパイル後の実行体)
ロジック
1 |
package servlet; public class CalcLogic { public int add(int left, int right){ return left + right; } } |
ビュー
1 |
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ page import="servlet.*" %> <% CalcLogic calcLogic = new CalcLogic(); %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> 2と3を足すと<%=calcLogic.add(2, 3)%><br/> </body> </html> |
[カテゴリ: プログラミング言語 > Servlet & Struts]
[通知用URL]
Tweet
最終更新時間:2015年10月17日 22時07分54秒