WebProgramming/JSP
JSP 태그 개념 및 종류
ChrisMare
2018. 10. 17. 22:40
※ JSP 태그 개념
Servlet은 JAVA언어를 이용하여 문서를 작성하고, 출력객체( PrintWriter )를 이용하여 HTML 코드를 삽입하지만,
JSP는 Servlet과 반대로 HTML 코드에 JAVA언어를 삽입하여 동적 문서를 작성 할 수 있습니다.
HTML 코드안에 JAVA코드를 삽입하기 위해서는 JSP태그를 이용해야 합니다.
※ JSP 태그 종류
- 지시자 : JSP 페이지 처리에 필요한 정보나 다른 JSP 파일을 include할 때 사용한다.
즉, 전체적인 속성을 지정할 때 사용한다.
<%@ page %> : 해당 페이지의 전체적인 속성 지정. 주로 사용되는 언어 지정 및 import 문을 많이 사용.
<%@ include %> : 별도의 페이지를 현재 페이지에 삽입.
<%@ taglib %> : 태그라이브러리의 태그 사용. ( ... JSTL 등 사용 );
* 태그라이브러리? 사용자가 만든 tag들을 말한다. taglib지시자를 사용한다.
url 및 prefix 속성이 있다.
- url : 태그라이브러리의 위치 값
- prefix : 태그를 가르키는 이름 값
1 2 3 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@page import="java.util.Date"%> | cs |
* 별도의 페이지를 삽입 ( 페이지 반복성이 있을 때 활용가능 )
1 | <%@ include file="MemberList.jsp" %> | cs |
- 주석 : 소스보기 시 JSP 에서는 웹어플리케이션서버에서 응답을 다 받고 실행되기 때문에 즉, 서버에서 주석처리가 되었고 응답으로 HTML로 받기 때문에 브라우저상에서의 소스보기 시 보이지 않는다. ( HTML은 브라우저에서 실행되기 때문에 소스보기시 다 보입니다. )
1 | <!-- 클라이언트가 브라우저상에서는 확인 불가능합니다. --> | cs |
- 선언 : <%! String str = "Chrismare" %> 은 문서 전체에 사용되기 때문에 전역으로서 str을 사용할 수 있다. 또한 메소드 선언 역시 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%! String nickName = "ChrisMare"; String nick1 = "Chris"; String nick2 = "Mare"; %> <%! public String sum_Nick(String n1, String n2){ return n1 + n2; } %> <% out.println(nickName + "</br>"); out.println(sum_Nick(nick1, nick2) + "</br>"); %> | cs |
- 표현식 : <%= str %> 은 결과값을 출력하고 이것은 String 타입으로 브라우저상에 표현되어 나타납니다.
* ' ; ' 를 사용할 수 없다.
- 스크립트릿 : <% java 소스 %>를 넣고 가장 많이 사용할 태그입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <%@page import="java.io.PrintWriter"%> <%@ 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> <% //JAVA 코드 String str = "Chrismare"; for(int i=0;i<str.length();i++){ %> <hr> <!-- html 코드 --> <% out.println(str.charAt(i)); } %> <% out.println(str); %> </body> </html> | cs |
- 액션태그 : JSP 페이지 내에서 어떤 동작을 하도록 지시하는 태그이다. 예를 들어, 페이지 이동, 페이지 include, Bean과 관련된 태그 등 ( forward, include, param 태그 )
forward
: 현재의 페이지에서 다른 특정페이지로 전환할 때 사용. ( URL은 변경되지않는다! )
1 | <jsp:forward page="nextPage.jsp"/> | cs |
URL 주소는 현재 페이지로 유지되지만 페이지 내용은 설정 페이지로 전환된다.
include
: 현재 페이지에 다른 페이지를 삽입할 때 사용.
1 2 3 | <h1>main.jsp 페이지</h1> <jsp:include page="sub.jsp" flush="true"/> <h1>다시 main.jsp 페이지</h1> | cs |
현재페이지에서 설정 페이지로 갔다가 다시 현재페이지로 넘어오는 형태이다.
param
사용법)
1 2 3 | <jsp:forward page="보내는 "> <jsp:param value="" name=""/> </jsp:forward> | cs |
그리고 request.getParameter("name") 으로 받습니다.
ex)
forward_param.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>forward_param.jsp</title> </head> <body> <%! String id, pw; %> <% id = request.getParameter("id"); pw = request.getParameter("pw"); %> <h1>forward_param.jsp 페이지 입니다.</h1> 아이디 : <%= id %></br> 비밀번호 : <%= pw %></br> </body> </html> | cs |
main.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@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>main.jsp</title> </head> <body> <h1>main.jsp 페이지 입니다.</h1> <jsp:forward page="forward_param.jsp"> <jsp:param value="ChrisMare" name="id"/> <jsp:param value="1234" name="pw"/> </jsp:forward> </body> </html> | cs |
결과)
요약