サーブレット
目次
サーブレットã¨ã¯ï¼Ÿ
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");