!!!基本形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
検索結果
検索結果:
Web.xml
test
SearchTelServlet
test
/search
!jsp ファイルに直接アクセスさせない
Jsp Security
Protected Area
*.jsp
DELETE
GET
POST
PUT
を web.xml に追記する
!!!基本形2
Servlet 3.0 以降
アノテーションを使うことで、web.xml を書かなくても良くなった
!!ディレクトリ構成
[プロジェクトルート]
│
├─src
│
├─jspファイル
│
└─WEB-INF
│ web.xml(なくてもよい)
│
└─classes(コンパイル後の実行体)
!!servlet
{{code Java,
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("");
writer.println(" ");
writer.println(" HelloServlet");
writer.println(" ");
writer.println(" ");
writer.println(" Hello Servlet
");
writer.println(" GET Request.
");
writer.println(" 日本語のテスト
");
writer.println(" ");
writer.println("");
}
}
}}
!!コンパイル
javac -cp /usr/share/java/servlet.jar src/TestServlet.java -d WEB-INF/classes/
!!web.xml
なくても動くけど、一応作る
Test Application
!!!基本形3
jspだけで作ってしまう。
http://d.hatena.ne.jp/nowokay/20131108
!!ディレクトリ構成
[プロジェクトルート]
│
├─src
│
├─jspファイル
│
└─WEB-INF
│ web.xml(なくてもよい)
│
└─classes(コンパイル後の実行体)
!!ロジック
{{code Java,
package servlet;
public class CalcLogic {
public int add(int left, int right){
return left + right;
}
}
}}
!!ビュー
{{code HTML,
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="servlet.*" %>
<% CalcLogic calcLogic = new CalcLogic(); %>
JSP Page
Hello World!
2と3を足すと<%=calcLogic.add(2, 3)%>
}}
{{category2 プログラミング言語,Servlet & Struts}}