본문 바로가기
인천일보아카데미/- 학습일지

[학습일지]JAVA교육일지 63일차 (SERVER)⭐

by w1z 2022. 7. 5.

1. JSP

2. JSP 기본 요소


1. JSP

[ 정의 ]

- Java Server Pages

- 자바를 사용해서 서버에서 페이지를 만드는 기술이다.

- 클라이언트(브라우저)의 요청에 따라 서버에서 페이지를 동적으로 만드는 기술이다.

- Servlet 기술의 다음버전

 

[ JSP & Servlet 장,단점 비교 ]

  장점 단점
Servlet Java를 사용한다. 1. HTML, CSS, JS 작성이 힘들다. (모두 문자열 취급 )
2. Java 베이스 + 클라이언트 코드
3. 웹 요청이 불가능하다. (가상 주소 매핑(.*do) 필요)
JSP 1. HTML, CSS, JavaScript 작성이 쉽다.
2. HTML 베이스 + Java 코드 > 개발자 작업 편의성이 높다.
3. 웹 요청이 가능하다. (가상 주소 매핑이 불필요)
HTML 베이스라서 Java 작업이 불편하다.

 

[ Servlet/JSP 컨테이너 ]

- Servlet과 JSP를 해석하고 실행하는 프로그램

- Tomcat

- WAS(Web Application Server) : 서버에서 특정 언어(Java)를 처리하고 웹 사이트를 만드는 일을 하는 프로그램

- Web Application(웹 어플리케이션)과 Web Site(웹 사이트)는 동일한 단어 이다.

 

2. JSP 기본 요소

[ JSP 지시자(지시어), JSP Directive ]

- JSP 페이지를 실행하기 위해 JSP 컨테이너(실행기, Tomcat)에게 해당 JSP 페이지를 처리하기 위한 여러가지 환경 설정을 한다.

- <%@ 코드작성 @>

- 종류: page, include, tablib 지시자

 

[ 스크립트 요소, Scripting Elements ] 

- 자바를 사용할 수 있게 한다.

- 서블릿과 유사한 작업 환경을 만들어 준다.

- <% 코드작성 %>

- 종류: Scriptlet, Expreesion, Declaration

 

[ 액션 태그, Action Tags ]

- JSP에서 만들어낸 태그이다.

- HTML 태그: 정적, 표현이 목적인 태그

- JSP 태그: 동적, 프로그래밍 기능이 목적인 태그

- ex) if문을 뜻하는 <c:if>, for문을 뜻하는 <c:for>

- 종류: JSP 기본 액션 태그, JSTL 확장 액션 태그, 사용자 정의 액션 태그

 



1. JSP 지시자

2. 스크립트 요소 ( Scripting Elements )


1. JSP 지시자

- JSP 페이지를 실행하기 위해 JSP 컨테이너(실행기, Tomcat)에게 해당 JSP 페이지를 처리하기 위한 여러가지 환경 설정을 한다.

[ page 지시자 ]

- <%@ page %>

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

- jsp 파일 최상단에 위치한다.

- 의미

  1) laguage

  - JSP 페이지에서 프로그래밍 언어 지정

  2) contentType

  - 현재 페이지의 컨텐츠 기술에 대해 기술

  - text/html, text/plain, image/jpeg, image/gif, application/json, text/xml : MINE

  - contentType="text/html; charset=UTF-8"

  - UTF-8: 톰캣에게 현재 JSP 페이지가 UTF-8 인코딩으로 되어있다고 알려준다.

  3) pageEncoding

  - UTF-8: 브라우저에게 돌려줄 페이지의 인코딩을 지정

  4) import

  - 패키지 or 클래스 참조

  - 자바의 import와 동일한 역할

  5) errorPage

  - 에러 페이지로 사용할 페이지의 URL을 지정

 

[ page 지시자 예시 ]

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

<!-- import는 독립적으로 써도 되고, 맨위에 써도된다. -->
<%@ page import="java.util.Random" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
</body>
</html>

 

[ include 지시자 ] 

- <%@ include file="URL" %>

- 특정 JSP/HTML 페이지를 현재 JSP 페이지의 일부 영역에 삽입

- <iframe> 유사

- 페이지의 일부로 삽입되기 때문에, 부모 페이지와 중첩되면 안되는 코드가 있는지 항상 확인한다!!! ( <html>, <body>.... )

 

[ include 지시자 예시 ]

  1) include.jsp 파일

<body>

	<h1>include 예제</h1>
	
	<div><%@ include file="inc/test1.jsp" %></div>
	<div><%@ include file="inc/test2.html" %>저작권</div>
	
</body>

 

  2) test1.jsp 파일

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<h1>테스트입니다~</h1>

 

  3) test2.html 파일

<div style="font-weight:bold;">html test</div>

 

- 결과

include.jsp 실행결과

 

 

2. 스크립트 요소 ( Scripting Elements )

- 자바를 사용할 수 있게 한다. ( Servlet과 유사한 작업환경을 만들어 준다.)

[ 스크립틀릿 (Scriptlet) ]

- Script + Applet(웹 페이지에 삽입되는 프로그램, ActiveX, Flash)

- <% %>

- 이 영역은 자바 영역이다 ( *.java 파일이라고 생각하고 코딩하면 된다. )

- 역할: 주로 비지니스(업무) 코드 작업

    1) 데이터 처리

    2) 동적 HTML(CSS, JavaScript) 처리

- 사용 빈도가 굉장히 높다.

 

[ 스크립틀릿 (Scriptlet) 예시 ]

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

<% 
	// 자바 영역 (HTML 영역이 아니다.) 
	// - 출력과 상관없는 업무 코드만 작성
	// - 출력과 상관없는 코드는 HTML 코드와 분리시켜서 이렇게 최상단이나 최하단에 배치시킨다.

	int a = 10;
	int b = 20;
	int c = 30;
	
	String color = "blue";
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	div { color: <%= color %>; }
</style>
</head>
<body>
	
	<h1>Scriptlet</h1>
	
	<div><%= 100 %></div>
	<div><%= 3.14 %></div>
	<div><%= "홍길동" %></div>
	<div><%= true %></div>
	<div><%= 10 + 10 %></div>
	<div><%= Math.random() %></div>
	<div><%= "<input type='text'>" %></div>
	
	<hr>
    
	<div>a: <%= a %></div>
	<div>a + b: <%= a + b %></div>

</body>
</html>

 

- 결과

<% %>를 이용한 웹 페이지

 

[ 익스프레션 (Expression) ]

- <%= 값 %>

- 값: 상수, 변수, 메소드 반환값 등....

- 자바의 System.out.print()와 비슷한 역할이다.

- 출력목적: 화면에 무언가를 보이게 하기 위해서가 아니라, HTML 소스의 일부를 작성하기 위해서이다.

 

[ 익스프레션 (Expression) 예시 - 구구단 만들기 ]

<%@page import="com.test.jsp.Ex05"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Random"%>

<%
	// 1 ~ 9 랜덤 수
	Random rnd = new Random();
	int dan = rnd.nextInt(9) + 1;
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h1>구구단 <small><%= dan %>단</small></h1>
	
	<% for (int i=1; i<=9; i++) { %> <!-- for문을 분리 시킨다. -->
    
	<div><%= dan %> x <%= i %> = <%= dan * i %></div>
    
	<% } %>
	
</body>
</html>

 

- 결과

 

[ 선언부 (Declaration) ]

- 현재 JSP 페이지에서 사용할 멤버 변수와 멤버 메소드를 선언하는 영역

- 잘 사용 안함 > 대신 사용하는 방법이 따로 있음

- <%! %>

 

[ 선언부 (Declaration) 예시 ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
	// Declaration  (선언부)
	// 로컬 메소드 - 현재 페이지에서 사용이 가능한 메소드
	public int sum(int a, int b) {
		return a + b;
	}
%>

<%
	int a = 10;
	int b = 20;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<h1>선언문</h1>
	
	<p>10 + 20 = 30</p>
	<p><%= a %> + <%= b %> = <%= a + b %> (a + b)</p>
	<p><%= a %> + <%= b %> = <%= sum(a,b) %> (sum(a, b))</p>
	
</body>
</html>

 

- 결과