JSP

원종서·2021년 9월 22일
0

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);
	 
}
}

request 저장소란.

  • forword를 통해서 두개의 서브릿에다가 값을 공유함

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}

    List, Array의 값을 El로 사용하기

    ${anyListOrArray[0]}

    Map 값 사용하기

    ${anyMap.keyName}

    Param , header 정보 사용하기

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

IE 우선순위

만약 key 값이 겹친다면

  1. pageContext
  2. request
  3. session
  4. application

저장소 순위로 value를 가져온다.

단 임의로 저장소의 key 값을 가져오려면

sessionScope.anyKey{sessionScope.anyKey}{requestScope.anyKey}

0개의 댓글