JSP

JSP


java에서 WEB과의 접근을 추상화 클래스한 것으로 Servlet이 있다.
Client한테 request를 받아 Servlet을 통해 HTML을 출력할 수 있다.

하지만 이렇게 사용하게 되면 연결부터 import와 같은 Servlet작성에 필요한 코드를 작성하는데 많은 시간을 투자해야 할 것이다.

java에서는 이러한 Servlet을 대체하는 JSP를 지원하게 되는데 Servlet은 java 안에 HTML이였다면,
JSP는 HTML안에 java라고 말 할 수 있다.

Servlet과 JSP의 코드 차이

Servlet Code

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setCharacterEncoding("EUC_KR");		
		res.setContentType("text/html;charset=euc_kr");
		PrintWriter out = res.getWriter();
		
		String id = req.getParameter("id");
		String pwd = req.getParameter("pwd");
		
		UserVO userVO = new UserVO(id,pwd);
		
		UserPoolDao userPoolDao = new UserPoolDao();
		userPoolDao.getUser(userVO);

        out.println("<html>");
		out.println("<head></head>");
		out.println("<body>");
		out.println("<h2>Login 화면</h2>");
		
		if(userVO.isActive()) {
			out.println(id+"님 환영합니다");
		}else {
			out.println("Login 실패 id,pwd를 확인하세요.");
		}
		out.println("<p><p><a href='/edu/jw04/login.html'>뒤로</a>");
		out.println("</body>");
		out.println("</html>");
}

Servlet은 위와 같이 html코드를 out.println()에 가두어 html코드를 작성한다.

JSP Code

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

<html>
<head></head>
<body>

	안녕하세요  html 시작<br/>
    buffer 전체 크기  : <%= out.getBufferSize() %><br/>
	buffer 잔여 크기  : <%= out.getRemaining() %><br/>
	
	<hr/>
	인위적 Exception 발생...

	<% int number=0; %>
	<% number = Integer.parseInt("a"); %>
	<%="number : "+number %>
	<hr/>
	
	안녕하세요  html 끝<br/>

</body>
</html>

JSP는 위와 같이 html에 java코드를 작성하여 Servlet과 같이 다이나믹한 html을 보여주게된다.
Servlet과는 달리 코드가 간략하며 java에 Servlet의 연결과 작성하는 방법을 알지 못하더라도 손쉽게 작성 할 수 있다.

JSP 작성

html은 를 쓰는데 JSP 작성 또한 tag를 사용한다.
크게 3가지로 볼 수 있는데

  • <% java~ %> ==> java 문법을 작성
  • <%= java~ %> ==> out.println(java);
  • <%! Field , method() %> ==> Field와 method를 선언 / 사용하지 않음

JSP는 8byte의 Buffer 방식(Default을 사용하는데 Buffer가 찻을 시 AutoFlush를 통해 출력한다.
만약 중간에 에러가 발생한다면 Buffer를 초기화하고 예외처리를 할 것이다.

만약 예외처리가 되지 않은 데이터를 출력하고 싶다면 <%@page buffer=”none” %> 을 선언하면 된다.

Categories:

Updated:

Leave a comment