サーブレット

サーブレットã¨ã¯ï¼Ÿ

SunMicrosoftãŒé–‹ç™ºã—ãŸãƒã‚¹ãƒˆCGI技術
プロセスを生æˆã›ãšã«å®Ÿè¡Œã•れるJAVAプログラム
WEBコンテナã«ãƒ­ãƒ¼ãƒ‰ã•れã¦å¾…機ã—ã€ãƒ–ラウザã‹ã‚‰ã¯éžåŒæœŸã§å‘¼ã³å‡ºã•れる為ã€é«˜é€Ÿã«å‹•作ã™ã‚‹ã€‚
クッキーもã—ãã¯URLã«ã‚»ãƒƒã‚·ãƒ§ãƒ³IDを埋ã‚込む事ã§ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’ç¶­æŒã—ãŸã¾ã¾ã€
å˜ä¸€ã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’èµ·å‹•ã—ãŸã¾ã¾è¤‡æ•°ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å¯¾å¿œã™ã‚‹æ©Ÿèƒ½ã‚’æŒã¤ã€‚

サーブレット基本構文

※testServlet.java
package testPackage;
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(
  urlPatterns = { "/com/office/yone/index" },
  loadOnStartup = 1,
  initParams = {
    @WebInitParam(name = "prm1", value= "value1"),
    @WebInitParam(name = "prm2", value= "value2")
  }
)
public class testServlet extends HttpServlet {
 @Override
 protected void doGet(
  HttpServletRequest req,
  HttpServletResponse res)
  throws ServletException, IOException {
   
   フォワード
   RequestDispatcher dispatch = request.getRequestDispatcher("/test");
   dispatch.forward(req, res);
   
   リダイレクト
   res.sendRedirect("/test");
   
   クライアントã¸ç›´æŽ¥htmlã‚’é€ä¿¡
   PrintWriter out = res.getWriter();
   out.println("<~>");
 }
 
 @Override
 protected void doPost(
   HttpServletRequest req,
   HttpServletResponse res)
   throws ServletException, IOException
 {
  ~
 }
}

サーブレット登録

サーブレットã®ãƒ‘ス(URL)を定義
方法①:Tomcat7.0以é™
@WebServlet("/(アプリケーションルート)")
public class (アプリケーションルート) extends HttpServlet {
 ~
}

方法②:Tomcat7.0以å‰
web.xmlã¸ç™»éŒ²
「Tomcat/デプロイメントディスクリプタã€å‚ç…§

暗黙オブジェクト

JSP内ã§å®£è¨€ç„¡ã—ã«ä½¿ç”¨ã§ãるオブジェクト(組ã¿è¾¼ã¿ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹)
サーブレットã§ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã™ã‚‹å¿…è¦ãŒã‚ã‚‹

一覧

ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆå æ¦‚è¦
out コンテンツを出力
request リクエスト情報
response レスãƒãƒ³ã‚¹æƒ…å ±
session セッション内ã§ã®å…±æœ‰æƒ…å ±
application ユーザー間ã§ã®å…±æœ‰æƒ…å ±(コンテナå˜ä½ã«ç”Ÿæˆ)
exception JSPページ内ã§ç™ºç”Ÿã—ãŸä¾‹å¤–情報
config åˆæœŸåŒ–パラメータ情報
page JSPページãã®ã‚‚ã®
pageContext 儿š—黙オブジェクト
ServletContext

package ~;
import ~;
@WebServlet(~)
public class MyServlet extends HttpServlet
{
 
 @Override
 protected void doPost(
   HttpServletRequest req,
   HttpServletResponse res)
   throws ServletException, IOException
 {
  ServletContext application = this.getServletContext();
  String info = application.getServerInfo();
  String contextPath = application.getContextPath();
  String realPath = application.getRealPath(".");
  String prm = application.getInitParameter("prm");
  String attribute = (String) application.getAttribute("att");
 }
}

ServletConfig

package ~;
import ~;
@WebServlet(~)
public class MyServlet extends HttpServlet
{
 
 @Override
 protected void doPost(
   HttpServletRequest req,
   HttpServletResponse res)
   throws ServletException, IOException
 {
  ServletConfig config = this.getServletConfig();
  String prm = config.getInitParameter("prm");
  
  ServletContext context = config.getServletContext();
 }
}

HttpSession

package ~;
import ~;
@WebServlet(~)
public class MyServlet extends HttpServlet
{
 
 @Override
 protected void doPost(
   HttpServletRequest req,
   HttpServletResponse res)
   throws ServletException, IOException
 {
  HttpSession session = req.getSession();
  
  String prm1 = (String)session.getAttribute("prm1");
  String prm2 = (String)session.getAttribute("prm2");
  
  session.setAttribute("prm1", "value1");
  session.setAttribute("prm2", "value2");
 }
}

サーブレット実行方法

・javaファイルをコンパイル
・classファイルをデプロイ
webapps :公開ディレクトリ
 └ testApplication
   ├ testPackage
   |  └ testJsp.jsp
   └ WEB-INF
     └ classes:プログラムä¿å­˜å ´æ‰€
        └ testPackage
           └ testServlet.class

ディスパッãƒãƒ£

Dispatcher
サーブレットã‹ã‚‰ä»–ã®ã‚µãƒ¼ãƒ–レットやJSPãªã©ã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’転é€ã—ã¦å‡¦ç†ã‚’委託ã™ã‚‹ã“ã¨
例:画é¢â†’サーブレット→ディスパッãƒãƒ£â†’JSP
RequestDispatcher dp = context.getRequestDispatcher("/test.jsp");
JSPã«ãŠã‘る処ç†ã¯ã€ŒJSP ディスパッãƒã€å‚ç…§

インクルード

dp.include(request, response);

フォワード

dp.forward(request, response);

リダイレクト

response.sendRedirect("/test.jsp");

Follow me!

次ã®è¨˜äº‹

JavaBeans