Servlet/JSP 6일차

0

JSP MVC model1

  • MVC model1 방식은 코드 블럭을 최소화 시킴으로서 코드를 복잡하게하지 않기 위함이다.
  • 입력 코드와 출력 코드 부분으로 나눈다.
  • 입력과 제어를 담당 : Controller(Java)
  • 출력 담당 : View(HTML)
  • 출력 데이터 : Model
    --> MVC

JSP MVC model2

  • Controller와 View가 물리적으로 분리된 방식
  • Dispatcher를 집중화 한 후의 모델
  • Controller와 Model인 부분이 분리되어 있기에 미리 컴파일 시켜놓으면 속도가 개선될 수 있다.
  • 분리되어있기에 관리하기도 용이하다.

forwarding

  • 현재하는 내용을 이어갈 수 있도록 공유하는 부분이 있다.

redirect

  • 현재 하는 요청과 상관없이 새로운 요청을 하는 거
/*Java class*/
request.setAttribute("result", result);
//request.setAttribute("객체명", 객체);
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response);
		// 혼자 사용하는 저장소 : PageContext

request.getRequestDispatcher()
dispatcher.forward(request, response)

  • 현재 request에 담긴 정보를 저장하고 있다가 그 다음 페이지 그 다음 페이지에도 해당 정보를 볼 수 있게 계속 저장하는 기능
/*jsp 파일*/
<%=request.getAttribute("result")%>입니다.
//request.getAttribute("객체명")

View를 위한 데이터 추출 표현식 EL

  • EL(Expression Language) : 저장 객체에서 값을 추출해서 출력하는 표현식

  • 값 출력하기
    request.getAttribute("cnt")
    --> ${cnt} // 쉽게 출력할 수 있다.

  • List 출력하기
    ((List)request.getAttribute("list")).get(0)
    --> ${list[0]}

  • Map 출력하기
    ((Map)request.getAttribute("n")).get("title")
    --> ${n.(key이름)}

EL의 저장소

  • 저장 객체에서 값을 추출하는 순서
    page -> request -> session -> application
  • 일반적으로 %{} 출력을 사용하면 위의 순서대로 값을 찾아나간다.
  • 만약 page에도 내가 찾고자하는 값이 있고 request에도 그 값이 존재한다면 page에서 찾고 끝이 나는 것이다.
  • 여기서 사용할 수 있는 옵션이 아래에 있다.
    • pageScope
    • requestScope
    • sessionScope
    • applicationScope

EL의 연산자

  • [].
  • ()
  • not ! empty
    • empty : 넘겨진 문자열이 null이거나 빈 문자열이거나 참, 거짓 판단
    • 값이 넘겨지면 False
    • / div % mod
  • < > <= >= lt gt le ge
    • lt(less than), gt(great than), le(less equal), ge(great than)
    • HTML에서는 꺾음새 문자를 굉장히 많이 사용하기에 연산자로 쓰기에는 적합하지 않다.
  • == != eq ne
  • && and
  • || or
  • ? :
<%@ 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>
<%
pageContext.setAttribute("result", "hello");
%>
<body>
	${requestScope.result} 입니다.<br >
	${names[0] } <br >
	${notice.title }<br >
	${result}<br >
	${empty param.n?'값이 비어 있습니다.':param.n}<br >
	${header.accept}
</body>
</html> 

코드 블럭 4종류

<% %> : 한 줄에 자바 코드를 사용할 수 있지만 줄바꿈을 하지 못한다.
<%= %> : 출력을 위한 코드 블럭
<%! %> : 여러 줄에 걸쳐 자바 코드를 작성할 수 있다.
<%@ %> : 다른 설정자들보다 가장 먼저 동작한다.

45~51 강의
52 강의 부터는 JDBC가 필요하여 JDBC를 공부하고 다시 시작하려고 함

0개의 댓글