JSP


jspには内蔵オブジェクトがあります.
コードブロックでは使用できません.
response
request
pageContext
session
application
config
out

MVC

  • jspを使ってjavaコードとHTMLコードを一緒に使うとパスタのように複雑なパスタコードになります.
    これは毒性も維持も難しい.
    だからMVCを使う
  • M : Model
  • V : View
  • C : Controller
  • Spag.java

    
    package com.jongseo.web;
    
    import java.io.IOException;
    
    import javax.servlet.RequestDispatcher;
    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("/spag")
    public class Spag extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    	 int num = 0;
    	 String num_ = req.getParameter("n");
    	 
    	 if(num_ != null && !num_.equals("")) {
    		 num = Integer.parseInt(num_);
    	 }
    	 
    	 // model
    	 String result =""; 
    	 
    	 if(num % 2 == 0) {
    		 result = "짝수";
    	 }
    	 else {
    		 result ="홀수";	 
    	 }
    	 
    	//Spag.java -> spag.jsp 로 model 전
    	
    	 // result 저장하기.
    	 req.setAttribute("result", result);
    	 
    	// express 의 middleware 같다.
    	 RequestDispatcher dispatcher =  req.getRequestDispatcher("spag.jsp");
    	 
    	 dispatcher.forward(req, resp);
    	 
    }
    }
    

    ストレージ領域を要求します。

  • forwardによって2つのサブボード上で値
  • を共有する

    spag.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%=request.getAttribute("result") %>
    </body>
    </html>
    

    Express Language


  • jsp方式
    <%=request.getAttribute("result") %>
    -EL式
    ${result}

    ELとしてList、Arrayの値を使用


    ${anyListOrArray[0]}

    Map値の使用


    ${anyMap.keyName}

    Param、ヘッダ情報の使用


  • param.something{param.something}param.something{header.host{

    IE優先度


    キー値が重なる場合
  • pageContext
  • request
  • session
  • application
  • リポジトリランキング別にvalueをインポートします.
    ただし、リポジトリ内のキー値をランダムに取得するには、次の手順に従います.
    sessionScope.anyKey{sessionScope.anyKey}sessionScope.anyKey{requestScope.anyKey}