[JSP/Servlet] JSP 동적 부분
- BACKEND/Servlet&JSP
- 2017. 5. 15. 11:39
JSP 동적 부분 담당
o 스트립트 - <% %>
1. 지시자(Directive) 태그 -> 서블릿을 JSP로 web container가 변환 할떄 web container에게 지시할 내용을 기술
ex) <%@ 지시어 속성="값" [속성="값"] %>
● page -> import(패키지 import), contentType 지정
ex) <%@page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8"%> --> response.setContentType("text/html;charset=utf-8")
● inclued
● taglib
2. 표현식(Expression) 태그 -> 출력 태그
ex) <%=출력할 내용 %> = Java -> out.print(출력할 내용);
3. 스크립트릿(Scriptlet) 태그 -> JSP에 동적인 처리(Java실행문)를 넣는 코드
-HTML과 함께 _jspService()의 실행문으로 들어갈 java 코드를 넣는다
ex) <% java 코드 %>
4. 선언자(Declaration) 태그 -> JSP가 서블릿으로 변환될때 서블릿 클래스의 member 변수나 member 메소드를 선언할 때 사용
- <%
member변수
member메소드 (jsp lifecycle 메소드 오버라이딩)
%>
o Action Tag - JSP 내에서 Java 코드를 줄이기 위한 방법으로 제안된 태그들
+ 동작(동적 코드)를 태그화함
+ 스트립트 릿 태그의 Java 코드를 태그로 대신하기 위한 방법
-종류
+표준 Action Tag : JSP 스펙에서 제공하는 기본 액션 태그
- prefix로 jsp를 사용한다.
<jsp:태그명>
- 주요태그
+ 빈 객체(VO)와 연동하기 위한 태그 = (request, session, application scope)의 속성을 사용하기 위한 태그
+ useBean, setProperty, getProperty
- 수행을 이동시키는 태그(RequestDispatcher를 이용해)
+ forward, include, param(forward, include의 하위태그)
+Custom Tag : 사용자 정의 태그
- 구문
<prefix:태그명 속성="값" [속성="값]>
+ prefix : 태그 구분자
+ 기본 문법은 xml 태그 문법과 동일
- 대소문자를 가린다
- 속성의 값은 반드시 따옴표로 감싼다
- 태그는 반드시 닫아야 한다(내용이 없어도 닫아야 한다)
ex) <c:forEaxh begin="1" end='10'>
내용
</c:forEach>
<jsp:useBean id="cust" class="vo.Customer"/>
※ Markup Language 특징 -> 속성="값"이 여러개 일때는 공백으로 구분한다.
JSP에서 주석
1. HTML 주석 : <!-- 주석 -->
2. JSP script 주석 : <%-- 주석 --%>
3. Java 주석 : //한줄, /*블럭주석*/ -> 스크립트릿, 선언자 태그 안에 넣을 수 있다.
o JSP 내장 객체
- JSP (scriptlet 태그, expression 태그) 내에서 변수 선언 및 객체 생성 없이 사용할 수 있도록 기본적으로 제공되는 변수 및 객체
- request => HttpServletRequest
- response => HttpServletResponse
- out => JspWriter (PrintWriter out = response.getWriter())
- session => HttpSession
- application => ServletContext
- config => ServletConfig
- page => this
- exception => Throwable (지시자 태크고 JSP가 errorPage로 선언된 경우 생김)
- pageContext => PageContext (다른 내장객체를 생성하는 메소드 제공)
o Composite View 패턴
- action tag -> include (요청 디스패치 방식)
ex) <jsp:include page="url"/>
- 지시자 tag -> 지시어 : include (Copy&Paste)
ex) <%@include file="url"%>
※ 포함될 page는 포함된 내용만 구현해야한다.
일반적 출력
<%@page import="vo.Member"%> //import
<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>조회결과</h1>
<%
Member member = (Member) request.getAttribute("result");
%>
id : <%=member.getId() %><br>
패스워드 : <%=member.getPassword() %><br>
이름 : <%=member.getName() %><br>
이메일 : <%=member.getEmail() %><br>
포인트 : <%=member.getPoint() %>
</body>
</html>
usebean 사용
<%@ page contentType="text/html;charset=UTF-8"%>
<jsp:useBean scope="request" id="result" class="vo.Member"/>
<%--
vo.Member result = (vo.Member)request.getAttribute("result")
if(result==null){
result = new vo.Member();
request.setAttribute("result", result);
}
useBean : 속성영역에서 속성객체(VO)를 가져오는 태그 없으면 만들어서 넣어준다
태그의 속성
- scope : 속성영역지정 - page(기본값), request, session, application
- id : 속성명지정, 가져온 속성객체의 식별자
- class : 속성의 클래스 명을 지정, 패키지명을 포함해서 설정해야함
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ID : <jsp:getProperty property="id" name="result"/><br>
이름 : <jsp:getProperty property="name" name="result"/>
</body>
</html>
태그 구성
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.Date, java.util.ArrayList, java.text.SimpleDateFormat" %>
<%! //선언자 태그 - servlet의 member변수/메소드 를 선언 및 정의(구현)
int counter =0; //instance변수
//JSP lifecycle 메소드 : jspInit() : init(), jspDestroy() : destroy(),
// _jspService() : service() => 오버라이딩 하면 안됨
public void jspInit(){
System.out.println("counter.jsp의 jspInit()");
}
public void jspDestroy(){
System.out.println("counter.jsp의 jspdestroy()");
}
%>
<%//int counter = 0; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//현재시간 저장
Date d = new Date(); //java.util
ArrayList list = new ArrayList();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 HH시 mm분 ss초");
String current = sdf.format(d);
int size = (int)(Math.random()*6)+1; //1~6
%>
현재 시간 : <%=current %><br>
<font size="<%=size%>"><%=size %></font><p>
카운터 : <%=++counter %>
<!-- HTML 주석 : Web Browser -->
<%--JSP 주석 : Web Container --%>
</body>
</html>
JSP usebean을 이용해 요청 파라미터값을 받아서 Servlet에 전달하기
request.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/myjsp/findById" method="post">
조회할 ID <input type="text" name="id">
<input type="submit" value="검색">
</form>
<h1>등록</h1>
<form action="/myjsp/actiontag/forward.jsp" method="post">
ID : <input type="text" name="id"><br>
패스워드 : <input type="password" name="password"><br>
이름 : <input type="text" name="name"><br>
이메일 : <input type="text" name="email"><br>
포인트 : <input type="text" name="point"><br>
<input type="submit" value="등록">
</form>
</body>
</html>
RegisterServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import vo.Member;
public class RegisterServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Member member = (Member)req.getAttribute("member");
System.out.println("요청파라미터 : "+member);
//비지니스 로직 - memberService.addMember(member)
//req.getRequestDispatcher("/actiontag/response3.jsp").forward(req, resp);
resp.sendRedirect("/myjsp/actiontag/response3.jsp");
}
}
response3.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
등록되었습니다.
</body>
</html>
'BACKEND > Servlet&JSP' 카테고리의 다른 글
[JSP/Servlet] JSTL (0) | 2017.05.17 |
---|---|
[JSP/Servlet] Expression Language 정의 및 간단한 확인 예제 (0) | 2017.05.16 |
[JSP/Servlet] Cookie 기본 예제 (0) | 2017.05.11 |
[JSP/Servlet] Cookie 예제 -숫자 누적처리 (0) | 2017.05.11 |
[JSP/Servlet] Listener 및 ServletContext/ServletConfig 예제 (0) | 2017.05.10 |