JSP 수업 #03 JSP 기초

sookyoung.k·2022년 12월 15일
0

JSP

목록 보기
3/8

이미 학원에서는 응용...으로 쭉쭉 나아가고 있는데... 그래서 오늘은 정리 조금만 하고 PPT와 이클립스 수업 내용을 되짚어보는 방향으로 공부를 하려고 한다. 음... 그리고 배고파서 빨리 잘 거다... 건강검진이 내일이라 금식 시작했는데 벌써 배가 고프다. 눈물이가 나요...


😀 JSP의 장단점

😎 장점

HTML에서 자바 기술을 사용할 수 있다!

내가 자바를 알고, 잘 사용할 수 있다면 비교적 쉬운 프로그래밍이라고 한다. 그래서 스프링을 배우기 전에 알아두면 좋다고 하는데, 저는 어려워요...

서블릿으로 변환이 되어 실행된다 = 서블릿의 장점을 가지고 있음

서블릿을 JSP인줄 알고 배웠던 나 ㅋㅋㅋ 음... 근데 서블릿의 장점이 뭘까? 나는 아직 서블릿을 잘 활용하지 못해서 장점이 뭔지 잘 모르겠어서 찾아봤다.
1. 쓰레드 기반으로 하기 때문에 웹 애플리케이션 운용에 효율적
2. 자바 기반 → 자바 API를 모두 사용할 수 있다!
3. 자바 기반이라는 점은 다양한 서버 환경에서도 실행이 가능하다는 장점을 가지기도 한다. (운영 체제나 하드웨어에 영향을 받지 않기 때문에)

사실 지난 수업을 하면서 장점보다는 이미 지난 기술, 단점에 대한 이야기를 많이 들었다고 생각했는데 이런 장점들이 있다고 한다. 우리 나라에서는 자바/스프링을 많이 사용한다고 하니까 확실히 내가 이 기술을 알고 있다면 활용도가 높을 것 같다.

MVC패턴, 스프링 프레임워크 등 잘 설게된 구조를 적용할 수 있어 생산성과 성능을 보장함

MVC 패턴 오늘 배웠던 것 같은데... 디지게 어려움. 눈물나요.

모든 개발이 서버를 통해 이뤄지기 때문에 개발의 집중화를 통한 효율!

☹ 단점

화면 구성요소를 변경하면 'JSP → 자바 → 클래스 → 서블릿' 실행 과정을 거쳐야 하기 때문에... 불편! 개발 과정에서 사소한 UI 변경이라도 매번 확인해야 한다는 단점

개발자와 디자이너 간 역할 분담에 제약 (JSP 파일의 화면 디자인 확인에도 반드시 서블릿 컨테이너의 실행이 필요)

JSP의 문제라기 보다는 백엔드 웹 개발 구조의 특성상 발생할 수 밖에 없는 단점들이다.


🦴 지시어

그렇다면 우리는 JSP를 어떻게 사용해야 할까? JSP 파일의 속성을 기술하는 요소를 지시어라고 한다. 해당 JSP 페이지를 어떻게 처리해야 하는지 (로직을?) 알려주는데 외워야 할 것이 꽤 많습니다...

지시어의 기본 형식

<%@ 지시어 속성="값" %>

정말... 처음보는 형식의... 특이한... %를 이렇게 많이 사용하게 될 날이 올 줄 몰랐다. 살면서 몇 번 안 써본 자판인데...

지시어는 크게 page, include, taglib로 나뉜다.

이러한 기본적인 사항에 대한 이해도와 암기가 떨어지니 이후 수업을 듣고 이해하는 속도가 더 더뎌지는 느낌이... 들어요... 잘 확인하고 갑시다!

PAGE 지시어

현재 JSP 페이지를 컨테이너에서 처리하는데 필요한 각종 속성을 기술하기 위해서 사용함

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" errorPage="error.jsp"%>

속성값은 모두 큰따옴표("") 안에 써주어야 한다. 그렇지 않으면 속성을 찾지 못해 페이지를 띄우지 못하고 오류가 생긴다. (아까 경험함...)

하나하나 짚어보자면 !

  • language: 현재 페이지의 스트립트 언어를 지정
  • contentType: 현재 페이지의 파일 형식을 지정하는 속성.
  • pageEncoding: JSP 파일을 컨테이너가 처리할 때 사용하는 캐릭터 인코딩 지정
  • import: JSP 파일 내에서 자바 코드를 직접 사용할 경우! 클래스에 대한 import를 해주어야 한다.
  • errorPage: 현재 페이지에서 에러가 발생하는 경우 에러를 처리하기 위한 페이지

include 지시어

영단어 뜻 그대로! 다른 파일을 포함하기 위한 지시어다.

컨테이너에서는 포함된 파일을 하나로 처리해 자바 코드를 생성한 뒤 서블릿으로 컴파일을 해준다.

그러므로! include에 사용된 파일의 내용을 모두 포함한 하나의 서블릿 코드로 생성되어 컴파일!!

<%@ include file="파일 위치" %>

include 된 파일을 포함해서 화면을 구성해준다는 이야기겠죠!!! 합쳐주는 거라고 생각하면 될 것 같다.

예를 들면 main.jsp가 화면을 구성할 때 include를 하면 각각 다른 jsp 파일(header.jsp + body.jsp + footer.jsp)들을 합쳐서 화면을 구성할 수 있다는 이야기.

taglib 지시어

JSP의 태그 확장 매커니즘인 커스텀 태그(뒤에 배움)을 사용하기 위한 지시어

아하... 오늘 수업 때 초면인 줄 알았는데 이미 배웠던 것임에 충격... 저는 뭣도 모르고 이게 뭐람, 하면서 사용했던 거였군요...

<%@ taglib (url="태그 라이브러리 경로" 혹은 tagdir="태그 파일 경로") prefix="태그 접두어" %>
  • url: 태그 라이브러리 위치로 태그를 정의하고 있는 .tld 파일 경로를 나타난대...
  • tagdir: 태그 파일로 태그를 구현한 경우 태그 파일 경로를 나타낸다...
  • prefix: 해당 태그를 구분해서 사용하기 위한 접두어

사실 오늘꺼 복습을 하면서 같이 봐야 내용 이해가 될 것 같다. 머라는겨...


😶 스크립트 요소

JSP는 HTML과 자바 코드를 섞어 사용할 수 있다! 그래도 구분이 필요하겠죠? 냅다 갑자기 HTML 파일에 자바 코드를 작성해봐야 컴퓨터는 알아들을 수 없을테니... 그래서 이 때 사용되는 자바 코드를 '스크립트 요소'라고 한다고 한다. 스크립트... 왜 이런 이름을 지었을까? 궁금한데 안찾아볼래 이건...

현재는 JSP파일에서 직접적인 자바 코드를 거의 사용하지 않는다고 한다. 하지만 기본적인 내용은 이해를 하고 있어야 한다고 하네요... 네...

<%! %> : 선언 태그

멤버 변수나 메서드 선언이 필요할 때 사용한다는데 권장하지 않는다고 함. 왤까? 뭐... 요새 잘 사용하지 않아서 그렇다는 거겠지? 흠.

<%= %> : 표현 태그

out.println()으로 출력 가능한 모든 자바 코드가 가능하다고 한다.
= 이라는 연산자가 보이는 것처럼 사칙연산이나 메소드 호출, 변수값 출력에 사용된다.

<h2> <%= member.getUserName() %> </h2>
현재 날짜와 시간: <%= java.time.LocalDateTime.now() %>

이런 식으로 코드를 작성해주면 된다.

<% %> : 스크립트릿 태그

사실 처음에 쌤이 오타 내신 줄 알았다. (오타를 잘 내시는 편이기 때문에...) 하지만 아니었음. 어라라라. 여기에는 모든 자바 코드 사용이 가능하다. HTML과 스크립트릿을 중간에 섞어서 사용할 수도 있다.

<% 
	Date date = new Date(); 
    out.println("Current Time: " + date); 
%>

이러한 결과를 얻을 수 있다.

주석 달기

<h3>
1.JSP 주석
<!-- HTML주석 : 화면에서는 안 보이고 소스 보기에는 보임 -->
<%-- JSP주석: 화면과 소스 보기에서 보이지 않음 -->
</h3>

플러스 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- 자바 라이브러리 임포트해서 사용 가능 --%>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.Math" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 종합</title>
</head>
<body>
	<h2>jsp 종합에제</h2>
	<hr>
	<!-- html용 주석 -->
	<%-- 선언태그: 멤버변수, 메소드 선언 --%>
	<%!
		String[] members= {"김하서", "김길동", "김사랑", "박사랑"};
		int num1 = 10;
		
		int calc(int num2) {
			return num1 + num2;
		}
	%>
	<%-- 표현태그: 사칙연산, 메소드 호출, 변수값 --%>
	<h3>
		1. calc(10) 메소드 실행 결과: <%=calc(10) %>
		<br /> 	
		2. num1 변수 출력: <%=num1 %>
		<br />
		3. 연산 출력: <%=num1 +1 %>
	</h3>	
	<hr>
	<%-- 스크립트릿 태그: 모든 자바 코드 --%>
	<ul>
		<% for(String name: members) { %>
			<li><%=name%></li>
		<%} %>
	</ul>	
	<hr>
	<ul>
		<% 
		for(String name: members) {
			out.println("<li>" + name + "</li>");	
		} 
		%>
	</ul>
	<hr>
	<%@ include file="../hello.jsp" %>
	<hr>
	<% Date day = new Date(); %>
	현재 날짜: <%= day %> 
	5의 제곱: <%=Math.pow(5,2) %> <%--pow(): 제곱 생성하는 메소드 --%>
	
</body>
</html>

실행 결과

profile
영차영차 😎

0개의 댓글