トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Servlet 基本形

基本形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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
2
3
4
5
6
7
package servlet;

public class CalcLogic {
    public int add(int left, int right){
        return left + right;
    }
}

 ビュー

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@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]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2015年10月17日 22時07分54秒