[웹] - JSP

yeom yaloo·2023년 12월 26일
0

FISA

목록 보기
27/61
post-thumbnail

JSP

[용어]

1. server side script 언어

2. client side script 언어

3. 파란색은 jsp, 빨간색은 html 코드

  • jsp는 톰캣에서 실행을 하고 나머지 html 파일은 브라우저에서 실행한다.
  • jsp를 실행함에 있어서 서버 톰캣이 없으면 안 된다.
  • html은 브라우저가 이를 해석하고 랜더링 한다.

[JSP의 주 목적]

  • 브라우저에 java 데이터 출력을 위한 개발 편의성이 고려된 스펙이다.

[개발 구조]

  • tag 위주의 개발
  • view 로직 위주로 개발
  • tag 종류
    • html
    • jsp
      • jsp script
      • jsp action
      • EL 중요
      • JSTL 중요

[특징]

1. servlet 자동 변환

  • 개발은 jsp로 진행하지만 클라이언트 측에서 최초로 요청하면 자동으로 web container(servlet engine)가 servlet으로 자동 변환시켜준다.

2. 버그 발생

  • 버그 발생시 jsp 코드상에서 에러가 발생되기도 한다.

3. 쉬운 개발

  • 내장 객체를 지원한다 세션, 요청, 응답 등
  • 변수 선언 없이 사용이 가능하다.
  • tag 위주로 개발을 한다.

[tag 학습]

1. scription tag(5가지)

  • jsp 파일 선언 <%@ page %>
  • 주석 <%-- --%> : 중요~ 많이 씀 ~~~
  • 멤버 변수와 메서드 구현 <%!-- -->
  • 브라우저 출력 <%= %>
  • 순수 자바 코드 구현 <% %> 비추

2. JSP action tag

  • sun에서 제시한 표준 tag
  • <jsp:? > 즉 <jsp: 으로 시작되는 tag들

3. EL

  • Expression Language
  • ${변수등}
  • 자바 코드의 데이터를 함축해서 브라우저에 출력
  • 요청 객체 - requestScope/ 세션 객체 - sessionScope로 표현한다.
    • 이때 ${sessionScope.cust1.name}라는 코드가 있을때 .name으로 접근하고 있는 것을 확인할 수 있는데 getName() 메서드가 있어야 문제가 생기지 않는다.
    • 이는 직접 멤버 변수에 접근하는 것이 아닌 getName()이 있어서 이를 호출함을 알수 있다.

      JSP에서 .name으로 접근하는 경우, 해당 코드는 자바 빈(Java Bean)의 속성을 참조하는 것일 수 있습니다. Java Bean 규약에 따르면, 속성에 대한 getter와 setter 메서드가 정의되어 있습니다.
      예를 들어, getName()과 setName() 메서드가 있다면, JSP에서 ${bean.name}과 같은 표현으로 .name을 사용할 수 있습니다. JSP는 서블릿으로 변환되고, 서블릿은 이러한 표현을 실제 getter 메서드(getName())를 호출하는 코드로 변환합니다.
      이러한 코드를 실행하는 과정에서 JSP 컨테이너 또는 서블릿 컨테이너가 해당 속성의 getter 메서드를 호출하여 속성 값을 가져옵니다. JSP는 이를 통해 웹 페이지를 생성하고, getter 메서드는 실제 값에 접근하여 값을 반환합니다.
      따라서 JSP에서 .name으로 접근하는 것은 내부적으로 해당 속성에 대한 getter 메서드를 호출하여 값에 접근하는 것입니다. 이를 통해 Java Bean 규약을 따르는 객체의 속성 값을 JSP에서 편리하게 사용할 수 있습니다.

  • 쿠키 데이터 착출 및 브라우저 출력
    • ${cookie.key.value}

4. JSTL

  • JSP standard tag library
  • java 코드를 tag화 해서 개발
  • 필수 tag
    • 조건, 반복
  • 선행 조건
    • jstl tag를 지원하는 librayr를 세팅
    • 버전 호환성 문제등으로 사용하는 서버에서 샘플 예제에 포함된 것 사용 권장

5. 참고

  • tag 지원하는 언어는 다수 존재한다.
  • 조건 tag 등도 다수 제공한다.
  • 구분이 필요하다
  • 별칭을 tag에 부여한다.
  • 전세계적으로 자원을 고유하게 구분하는 방식은 URI(URL)이다.

[EL 학습 코드]

1. 기초 EL 학습 코드


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- jsp 주석 : 브라우저에서 은닉되는 주석 --%>
<!-- html 주석 : 브라우저에서 볼수 있는 주석 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>step01EL.jsp</title>
</head>
<body>

	<h3>1. EL 학습</h3>

	<table>
		<tr>
			<td>2+3</td>
			<td>${2+3}</td>
		</tr>		
		
		<tr>
			<td>2<3</td>
			<td>${2<3}</td>
		</tr>	
			
		<tr>
			<td>'a'</td>
			<td>${'a'=='a'}</td>
		</tr>
		<tr>
			<td>'a'</td>
			<td>${'a'!='a'}</td>
		</tr>
	</table>
</body>
</html>

profile
즐겁고 괴로운 개발😎

0개의 댓글