디렉티브 태그
<%@ page 속성1 = "값1" 속성2 = "값2" ... %>
JSP 페이지의 전반적인 정보 설정
속성마다 한 번만 선언 가능 (import 속성 제외)
pro11/WebContent/hello2.jsp
<%@ page contentType="text/html;charset=utf-8"
import="java.util.*"
language="java"
session="true"
buffer="8kb"
autoFlush="true"
isThreadSafe="true"
info="(ShoppingMall................)"
isErrorPage="false"
errorPage="" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지 디렉티브 연습</title>
</head>
<body>
<h1>쇼핑몰 구현 중심 JSP입니다.!!!</h1>
</body>
</html>
<%@ include file = "공통기능.jsp" %>
공통 사용 페이지를 다른 페이지에 추가
높은 재사용성, 쉬운 유지관리
ex) 페이지마다 똑같이 들어가는 사이트 제목, 로고, 메뉴 등
pro11/WebContent/duke_image.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>duke_image</title>
</head>
<body>
<img src="./image/duke.png" /> <!-- 이미지 띄우기 -->
</body>
</html>
pro11/WebContent/include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인클루드 디렉티브</title>
</head>
<body>
<h1>쇼핑몰 중심 JSP 시작입니다!!! </h1><br>
<%@ include file="duke_image.jsp" %><br> <!-- include 디렉티브 태그 -->
<h1>쇼핑몰 중심 JSP 끝 부분입니다.!!!</h1>
</body>
</html>
프레임워크에서 제공하는 태그 사용
<% %> - 명칭: 스크립틀릿
스크립트 요소
JSP 페이지 내 여러가지 동적 처리 제공
서블릿 자바 코드로 변환되어 실행 (브라우저로 직접 전송 X)
<%! 멤버 변수/메소드 %>
JSP 페이지에서 사용할 멤버 변수/메소드 선언
선언문에서 선언된 변수는 어디서든 접근 가능
<% 자바 코드 %>
자바 코드를 이용해 화면의 동적 기능 구현
현재 사용 X
<%= 값/변수/식 %>
값 출력
변환된 서블릿 코드: out.print(작성한 값);
세미콜론 포함 시 오류 발생
pro12/WebContent/hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%!
<!-- 선언문 -->
String name = "이순신";
public String getName(){ return name;}
%>
<!-- 스크립틀릿 -->
<% String age=request.getParameter("age"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트릿 연습</title>
</head>
<body>
<!-- 표현식 -->
<h1>안녕하세요 <%=name %>님!!</h1>
<h1>나이는 <%=age %>살입니다!!</h1>’
<h1>나이+10은 <%=Integer.parseInt(age)+10 %>살입니다!!</h1>
</body>
</html>
JSP 페이지에 사용되는 주석
<!-- HTML 주석 -->/* 자바 주석 */<%-- JSP 주석 --%>JSP 주석 시 서블릿 코드로 변환 안됨
pro12/WebContent/hello4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% /* [자바 주석] String age=request.getParameter("age"); */ %>
<!DOCTYPE html>
<!-- [HTML 주석] -->
<html>
<head>
<title>주석문 연습</title>
</head>
<body>
<h1>주석문 예제입니다!!</h1>
<%-- [JSP 주석] <%=Integer.parseInt(age)+10%> --%>
</body>
</html>
내장 변수
JSP에서 서블릿으로 변환 시 컨테이너가 자동으로 생성시키는 서블릿 멤버 변수
자주 사용하는 객체의 자동 생성 가능
pro12/src/sec01/ex01/SessionTest.java
package sec01.ex01;
...
@WebServlet("/sess")
public class SessionTest extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
/* session 객체에 데이터1 바인딩 */
HttpSession session = request.getSession();
session.setAttribute("name", "이순신");
pw.println("<html><body>");
pw.println("<h1>세션에 이름을 바인딩합니다.</h1>");
pw.println("<a href='/pro12/test01/session1.jsp'>첫 번째 페이지로 이동하기 </a>");
pw.println("</body></html>");
}
}
pro12/WebContent/test01/session1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
/* 세션에 바인딩된 데이터1 가져온 후 데이터2 바인딩 */
String name=(String)session.getAttribute("name");
session.setAttribute("address","서울시 강남구");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session 내장 객체 테스트2</title>
</head>
<body>
이름은 <%=name %>입니다. <br>
<a href=session3.jsp>두 번째 페이지로 이동</a>
</body>
</html>
pro12/WebContent/test01/session2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
/* 세션에 바인딩된 데이터1,2 가져오기 */
String name = (String)session.getAttribute("name");
String address = (String)session.getAttribute(“address”);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session 내장 객체 테스트3</title>
</head>
<body>
이름은 <%=name %>입니다.<br>
주소는 <%=address %>입니다. <br>
</body>
</html>
pro12/WebContent/test01/appTest1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
/* application 객체에 데이터 바인딩 */
application.setAttribute("name","이순신");
application.setAttribute("address","서울시 성동구");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 application</title>
</head>
<body>
<h1>이름과 주소를 저장합니다.</h1>
<a href=appTest2.jsp>두 번째 웹 페이지로 이동</a>
</body>
</html>
pro12/WebContent/test01/appTest2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
/* application 객체에 바인딩된 데이터 가져오기 */
String name=(String)application.getAttribute("name");
String address=(String)application.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 application 2</title>
</head>
<body>
<h1>이름은 <%=name %>입니다.</h1>
<h1>주소는 <%=address %>입니다.</h1>
</body>
</html>
pro12/WebContent/request1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" import="javax.servlet.RequestDispatcher" pageEncoding="UTF-8" %>
<%
/* request 객체에 데이터 바인딩 */
request.setAttribute("name","이순신");
request.setAttribute("address","서울시 강남구");
%>
<!DOCTYPE html>
<html>
<head>…</head>
<body>
<!-- request 객체를 다른 JSP로 포워딩 -->
<% RequestDispatcher dispatch = request.getRequestDispatcher("request2.jsp");
dispatch.forward(request, response); %>
</body>
</html>
pro12/WebContent/request2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
/* 포워딩된 request 객체에 바인딩된 데이터 가져오기 */
String name=(String)request.getAttribute("name");
String address=(String )request.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>…</head>
<body>
<h1>이름은 <%=name %>입니다.</h1>
<h1>주소는 <%=address %>입니다.</h1>
</body>
</html>
pro12/WebContent/test01/out1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>…</head>
<body>
<!-- 다른 JSP로 데이터 전송 -->
<form method="post" action="out2.jsp">
이름:<input type="text" name="name"><br>
나이: <input type="text" name="age"><br>
<input type ="submit" value="전송">
</form>
</body>
</html>
pro12/WebContent/test01/out2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding( "utf-8" );
String name=request.getParameter("name");
String age=request.getParameter("age");
%>
<!DOCTYPE html>
<html>
<head>…</head>
<body>
<% if(name!=null || name.length()!=0){ %>
<h1> <!-- 표현식으로 출력 --> <%=name %>, <%=age %> </h1>
<% }else{ %>
<h1>이름을 입력하세요</h1>
<% } %>
<% if(name!=null ||name.length()!=0) { %>
<h1> <!-- out 내장객체로 출력 --> <% out.println(name+", "+age); %> </h1>
<% }else{ %>
<h1>이름을 입력하세요</h1>
<% } %>
</body>
</html>
*자바 웹을 다루는 기술