Back-end/기타 (BE)

뉴렉쳐 Servlet & JSP [41 ~ 50강]

philo0407 2020. 10. 3. 16:46

강의 41 - JSP의 코드 블록

out.write(); // 문자열을 출력해주는 전문 함수

out.print(); // 다양한 자료형 지원함

 

<%  %>

<%=  %> out.print 를 대신 써줘

<%!  %> service()가 아닌 클래스 밑으로

<%@  %>  page 지시자; 어떤 코드들 보다도 앞서서 서블릿 코드에 삽입

 

강의 42 - JSP의 내장객체 간단히 알아보기

page와 같은 변수는 jsp service 기본 변수와 겹침..

 

 

pageContext는 applicationContext (전역)와 다르게 page한정

out 출력을 위한 객체

page 현재 페이지를 참조하는 객체

 

jsp 통해 쓰니까, 직접 쓰지 않는게 좋아
set, get, 유지 시간이 중요

 

오오 RealPath

 

강의 43 - JSP로 만드는 Hello 서블릿

옛날에 만든 java파일을 jsp로 다시 만들자

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%
	response.setCharacterEncoding("UTF-8");
	response.setContentType("text/html; charset=UTF-8");
	
	String cnt_ = request.getParameter("cnt");
	
	int cnt = 0;
	
	if (cnt_ != null && !cnt_.equals("")) {
		cnt = Integer.parseInt(cnt_);
	}
	
	System.out.println("cnt_: " + cnt_);
	System.out.println("cnt: " + cnt);
%>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
	<% for(int i=0;i<cnt;i++){ %>
	hello ><
	<br>
	<% } %>
</body>
</html>

 

강의 44 - 스파게티 코드를 만드는 JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" %>
	
<%
	String num_ = request.getParameter("num");
	
	int num = 0;
	if(num_ != null && !num_.equals("")) {
		num = Integer.parseInt(num_);		
	}
	
%>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
  <% if(num % 2 == 0) { %>
  	짝수입니다. <br>
  <% } else { %>
 	 홀수입니다. <br>
  <% } %>
  </body>
</html>

 

강의 45 - JSP MVC model1

코드블럭의 형성 갯수를 최소화 하자.

 

입력코드의 결과물을 출력코드에 넘겨주는 것을 Model이라고 함!

 

 

구조를 갖추자!

 

출력을 제어 => 넘겨줄 데이터(model)를 제어

 

로직은 입력 코드에서,

결과는 출력 코드에서

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" %>
	
<%
	String num_ = request.getParameter("num");
	
	int num = 0;
	if(num_ != null && !num_.equals("")) {
		num = Integer.parseInt(num_);		
	}
	
	String model;
	if(num % 2 == 0)
		model = "짝수";
	else
		model = "홀수";
	
%>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
  	<%= model %> 입니다.
  </body>
</html>

 

강의 46 - JSP MVC model1을 model2 방식으로

 

Controller단

@WebServlet("/spagmvc2")
public class Spag extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String num_ = request.getParameter("num");
		
		int num = 0;
		if(num_ != null && !num_.equals("")) {
			num = Integer.parseInt(num_);		
		}
		
		String model;
		if(num % 2 == 0)
			model = "짝수";
		else
			model = "홀수";
		
		// model을 mm쨩으로 전송함
		request.setAttribute("mm", model);
		
		// url상 같은 directory에 있는 것으로 간주하기 때문에
		// 경로를 설정하지는 않았다.
		// redirect : 이전 작업 내용과 상관없이 클라단에게 현재 새로운 요청을 하라고 지시.
		// forward : 이전 작업한 내용을 이어갈 수 있도록, 공간을 공유
		RequestDispatcher dispatcher = request.getRequestDispatcher("spagMVC2.jsp");
		dispatcher.forward(request, response);
	}
}

 

View단

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" %>
	
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
	<%= request.getAttribute("mm") %> 입니다.
  </body>
</html>

 

서블릿/JSP 강의 47 - EL(Expression Language)