JSP, Servlet 스크립트 릿

강정우·2022년 7월 30일
0

JSP, Servlet, JDBC

목록 보기
3/19
post-thumbnail

복습

  • html에서 servlet으로 data가 넘어갈 때 parameter 방식으로 넘어간다.
  • 인코딩과 문서를 한번에 지정해 줄 수 있지만 다음과 같이 인코딩 따로 문서지정 따로 해줄 수 있다.

get vs posrt

  • get 방식은 1024byte 밖에 못 보낸다. 그렇다면 왜 데이터의 한계가 있고 보안에 취약한 get방식을 쓸까? 왜냐면 보안에 취약하다는 것은 공유가 편리하다는 장점이 있기 때문이다.
    post 방식이라면 url이 다 안 뜨기때문에 공유가 불가능하다.

JSP

왜 쓸까?

  • 기존에 우리는 servlet 파일을 생성하여 Business Logic과 Pregentation Logic을 한큐에 구현했었다.
  • 하지만 우리는 MVC pattern을 배웠고 한가지의 class는 한가지의 기능을 해야만 완전한 객체지향으로써 장점을 얻을 수 있다고 배웠다.
  • 또한 대형 project들은 개발자 뿐만 아니라 web disigner들도 함께 협업하는데 이때 수정이 힘들다.
  • 개다가 servlet 파일은 out.print 로 계속 HTML 태그들을 감싸줘야하는데 매우 비효율적이다.
  • 따라서 위와같은 이유들로 JSP가 필요하다.

장단점

JSP란?

  • 제일 밑에 빨간줄이 무슨 말이냐?
C:\Users\AI_school\Desktop\ServerStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSP\org\apache\jsp

여기에 들어가보면 이런 코드를 볼 수 있는데 jsp까지가 파일 이름인 것을 확인할 수 있다. 즉, jsp == servlet이다.

JSP 구성요소

1) 주석


총 3가지의 주석을 사용할 수 있다.
1. HTML : <!-- 내용 -->
2. JSP : <%-- 내용 --%>
3. JACA : <% //내용 %>

  • 하지만 개발자 툴(f12)에서 불 수 있는 주석은 HTML 뿐이다.

2) 선언문

  • 선언부에는 변수 선언이나, 메서드를 선언하여 사용한다.
  • 이때 변수와 메서드는 JSP 페이지로부터 변환된 servlet class의 멤버로 변환된다.
  • 즉, 선언부의 변수와 메서드는 클래스의 field 값으로 전역변수에 해당한다.

    <%! 내용 %> 과 같이 쓰며 실제 구동되는 파일을 보면 클래스 바로 밑 필드위치에 존재하는 것을 확인할 수 있다.

3) 스크립트 릿

  • JSP 파일내에서 JAVA코드를 사용할 수 있도록 해주는 것이다.
    <% 내용 %>

4) 표현식

  • method의 return 느낌으로 사용되며 스크립트 릿과는 달리 ;이 필요하지 않다.
    <%=변수 %>

5) 지시자

<%@ 내용 %> 과 같이 쓰이며 Web Container(Server와 외부 프로그램이 통신하기위해 정해놓은 규격)가 JSP page를 Servlet class로 변환할 때 필요한 정보를 기술하기 위해 사용한다.

Page 지시자

  • JSP 페이지의 전체적인 환경설정을 할 때 사용한다. 즉, ArrayList, Random 이런것들을 자동으로 로드해주는 기능을 한다.

  • 지시자의 종류

  • JSP 페이지가 Servlet 클래스로 변환될 때 contentType Attribute의 값은 setContentType method 호출문의 parameter가 된다.

즉, 우리가 따로 response.setContentType을 하지 않아도 또 PrintWriter의 객체를 생성하지 않아도 사용할 수 있는 이유가 지시자의 편리한 기능 때문이다.

Taglib 지시자

  • 추후 포스팅

Include 지시자

  • 현재페이지에 다른 파일의 내용을 삽입할 때 사용된다.

사진과 같이 만들어보기

<%@page import="java.io.PrintWriter"%>
<%@ 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>

	<table border="">
		<tr>
			<%
			for (int i = 1; i <= 10; i++) {
			%>
			<td><%=i%></td>
			<%
			}
			%>
		</tr>
	</table>

	<table border="1">
		<tr>
			<%
			for (int i = 1; i <= 10; i++) {
				out.print("<td>" + i + "</td>");
			}
			%>
		</tr>
	</table>

</body>
</html>
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글