1. JSP 태그
JSP는 HTML코드에 java언어를 삽입하여 동적 문서를 만들 수 있다.
JSP 태그의 종류
- 주석 : <%-- --%>
- 선언 : <%! %> (reload 해도 변하지 않음)
- 지시자(페이지 속성, ex) page, include, taglib) : <%@ %>
- 표현식(결과값 출력) : <%= %>
- Scriptlet(JAVA 코드, 문장 뒤 세미콜론) : <% %>
- Javabean 연결 : <jsp:action> </jsp:action>
선언 태그에서 선언 -> 전역
Scriptlet 에서 선언 -> 지역
* 지시자 속성 종류
1) page : 해당 페이지의 전체적인 속성 지정
2) include : 별도의 페이지를 현재 페이지에 삽입
3) taglib : 사용자가 만든 tag들을 태그 라이브러리라고 하는데, 이러한 태그 라이브러리를 사용하기 위해 사용하는 지시자. uri(태그 라이브러리의 위치값) 및 prefix(태그를 가리키는 이름 값) 속성이 있다.
* action 태그 : JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그 - 예) URL 이동, Page include 등
1) <jsp:forward page=페이지 파일/> : 특정 페이지로 이동, 이전 페이지는 지워지고, 이전 페이지의 URL은 유지
2) <jsp:include page=페이지 파일 flush="false/> : 특정 페이지를 삽입, flush는 일반적으로 false로 설정함. flush는 출력 버퍼를 비울지 결정하는 속성, true로 지정한다면 출력 버퍼가 비워지고 모든 헤더 정보를 웹 브라우저에 전송하게 되는데, 이렇게 되면 나중에 헤더정보를 추가하게 되어도 반영이 안된다.
3) <jsp:param name=이름 vaule=값 /> : forward나 include 태그에 데이터 전달을 목적으로 사용되는 태그
( JSP 태그 예제 1 - Scriptlet ) 1~10까지 출력하기
JSP태그가 서로 떨어져 있더라도 JAVA 코드가 공유되는 모습,
JAVA 코드와 HTML 코드를 같이 쓸 수 있는 모습(<br>) 을 확인 할 수 있다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i=0;
while(true){
i++;
out.println("("+i+"/10)"+"<br>");
%>
============ <br>
<%
if(i>=10) break;
}
%>
</body>
</html>
( JSP 태그 예제 2 - 선언, 표현식 ) 변수, 메소드 선언하기
첫 번째 선언 태그에서는 두 변수 a,b 를 선언하고,
두 번째 선언 태그에서는 두 변수 a,b 를 더한 것을 반환해주는 메소드를 선언하고,
표현식 태그에서는 세미콜론 없이 add() 를 호출한 모습을 볼 수 있다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%!
int a = 3;
int b = 7;
%>
<%!
public int add() {
return a+b;
}
%>
<%=
add()
%>
</body>
</html>
( JSP 태그 예제 3 - 지시자 ) 언어 지정, Arrays import 하기
1~3줄에서 해당 페이지의 전체적인 속성을 지정해준 모습을 볼 수 있다.
import도 아래와 같은 방법으로 진행하면 된다.
<%@ page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int[] arr = {1,2,3,4,5};
%>
<%=
Arrays.toString(arr)
%>
</body>
</html>
( JSP 태그 예제 4 - 지시자2, include ) test2.jsp 파일 삽입하기
test1.jsp의 두 <h1> 태그 사이에 test2.jsp 페이지를 삽입한 모습을 볼 수 있다.
test2.jsp는 submit 버튼을 포함한다.
<test1.jsp>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1> 1 </h1>
<%@ include file="test2.jsp" %>
<h1> 2 </h1>
</body>
</html>
<test2.jsp>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<input type="submit" value="새치기 버튼"></input>
</body>
</html>
( JSP 태그 예제 5 - 주석 ) 주석 걸기
주석을 사용하면 컴파일 되지 않고 화면상에 출력되지 않는다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%--
이것이 출력 된다면 취두부를 먹겠습니다.
--%>
</body>
</html>
아무것도 출력되지 않음
( JSP 태그 예제 6 - action 태그 ) 과일 값 데이터 전송하기
jsp:param 태그 데이터들을 jsp:forward 태그에 실어 test2.jsp로 전송한다.
test2.jsp에서는 getParameter() 메소드로 value값을 반환받았으며,
forward 태그 특성상 URL은 이전 페이지의 URL을 유지한 모습을 볼 수 있다.
<test1.jsp>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<jsp:forward page="test2.jsp">
<jsp:param name="apple" value="1350" />
<jsp:param name="banana" value="650" />
</jsp:forward>
</body>
</html>
<test2.jsp>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%!
int apple_cost;
int banana_cost;
%>
<%
String coststr1 = request.getParameter("apple");
int cost1 = Integer.parseInt(coststr1);
String coststr2 = request.getParameter("banana");
int cost2 = Integer.parseInt(coststr2);
%>
Apple : <%= cost1 %>Won<br>
Banana : <%= cost2 %>Won
</body>
</html>
2. JSP 동작 원리
사용자가 jsp 파일을 요청하게 되면 JSP 컨테이너가 JSP파일을 Servlet 파일(.java)로 변환한다. 이 과정에 JSP 내부 객체도 생성 된다.
그리고 이 Servlet 파일은 컴파일 된 후 클래스 파일(.class)로 변환되고, 요청한 사용자에게 html파일 형태로 응답 해준다.
.jsp -> .java -> .class
첫 요청시에는 .java, .class가 최초로 생성되고, 그 이후부터는 재활용되는 식이다.
* JSP 내부 객체 : 개발자가 객체를 생성하지 않고 사용할 수 있는 객체
JSP 내부 객체 종류
- 입출력 객체 : request, response, out
- 서블릿 객체 : page, config
- 세션 객체 : session
- 예외 객체 : exception
'Spring 사전 준비 > JSP Servlet' 카테고리의 다른 글
[JSP Servlet] 예외 페이지 / javabean / JDBC 기초 (0) | 2020.12.02 |
---|---|
[JSP Servlet] 요청, 응답 관련 메소드 / 쿠키 / 세션 (0) | 2020.11.30 |
[JSP Servlet] 초기화 파라미터 / 데이터 공유 / Listener (0) | 2020.11.26 |
[JSP Servlet] doGet / doPost / Servlet 기본 원리 / 한글 처리 (2) | 2020.11.25 |
[JSP Servlet] Servlet 문서 작성법 (0) | 2020.11.24 |
댓글