JSP 개념 정리

2016. 9. 26. 23:40Programming/JSP

시작하기 전에....


JavaServer Pages 의 약자. 
1) JAVA 언어 기반이므로 자바 기능 그대로 사용 가능
2) JDBC를 이용 가능(API나 데이터베이스와 연동 가능케 해줌)
3) 스프링 프레임워크와도 연동 가능





웹서버: 웹페이지가 돌아가는 서버를 말한다. 정확히 말하자면 HTML, CSS에 초점에 맞춰져있는 서버를 말하며 정적인 페이지를 주로 처리한다.

(ex. 아파치)


서블릿이나 JSP를 가지고는 동적인 페이지를 처리하는데

그 서블릿이나 JSP의 스크립트 번역하는 것이 어플리케이션 서버다(ex. 톰캣, JBoss)


서블릿: 웹 개발을 위해 만든 표준. JSP는 eclipse처럼 서블릿을 작성하기 쉽게 해주는 API.


1. 기본 표현방식

 

<%@ page ... %> 페이지 정보

<% ... %> JAVA 언어 사용

<%= sum %> JAVA 계산값

<%! public void method() %> 메서드 포함

 

request.getServerPort()

http://localhost:8080/chap03/requestInfo.jsp

request.getServerName() request.getRequestURI()

 

<GET방식 파라미터 전송법>

<a href=“a.jsp?name=김구&address=상해”>링크</a>

 

 


2. HTML 표현방식

 

 

<테이블 구성요소>

h1 ~ h6 : 각 섹션의 제목을 나타냄(계층 구조;h1의 등급이 가장 높음)

<tr> : 횡렬의 셀(table Row)로 정의

<th> : 종렬의 셀(table Horizon)으로 제목셀을 정의

<td> : cell (표안의 항목; table DataCell)로 데이터셀을 정의

 

 

2. 기본 메소드

 

 

<속성 관련>

getAttribute(String name): 이름이 name인 속성 값 구하기

setAttribute(String name, Object value): 이름이 name인 속성 값을 value로 지정

removeAttriute(String name): 이름이 name인 속성 삭제

getAttributeNames(): 속성의 이름 목록 구하기

 

 

*Attribute vs. Parameter

Attribute: 개발자가 설정하는 값

Parameter: 브라우저(사용자)에서 넘어오는 값


<이러한 속성의 4가지 쓰임새>

1) pageContext: JSP 내에서 공유될 값 저장

2) request: 한 요청 처리하는 JSP 간 정보 전달

3) session: 한 사용자 관련 정보 JSP 간 공유

4) application: 모든 사용자 관련해 공유할 정보(웹 어플리케이션 설정 정보 같은)

 

 

3. 흐름 제어

 

 

1) 페이지 삽입

<jsp:include page=“포함할 페이지” flush=“true” />

* jsp:include : for 중첩처럼 페이지 안에서 실행될 페이지 설정

** flush: 지정 JSP 실행 전 출력 버퍼 flush(흘려보낼지) 결정

 

 

2) 코드 삽입

<%@ include file=“포함할 파일(코드)” %>

 

 

3) 처리 넘기기(jsp:forward)




 

<jsp:forward page=“이동할 페이지” />

 

*상담원이 전화 넘기듯, 다른 jsp에서 요청에 응답하게 함

 

<활용 예제>

 

if(구입문의){

forwardPage=“구입URI”;

}else if(판매문의){

forwardPage=“판매URI”;

 

<jsp:forward page=“<%= forwardPage %>” />

 

 

4) request.속성을 이용해 값 전달하기





<From>

 

Calender cal = new Calender();

request.setAttribute(“time”, cal);

<jsp:forward page=“/to/viewTime.jsp”/>

 

 

<To>

 

Calender cal = (Calendar) request.getAttribute(“time”);

 

 

4. 에러 처리

 

<error-page>

<error=code>404(에러코드)</error-code>

<location>/error/error404.jsp(에러페이지 URI)</location>

</error-page>

 

*error404.jspcustomize(에러 내용, 해결 방법 등 기록)

**범용적 에러 코드는 web.xml(공통 페이지)에 에러 페이지 넣는다.

***별도 처리해야할 exception 타입은 web.xml<exception-type>을 넣는다.

 

 

 

5. <jsp:useBean>


JSP에서 일반적으로 데이터는 자바bean 클래스에 담아 보여줌.


1) 객체 생성하기(jsp 태그로)

<jsp:useBean id=“info”, class=“ch11.member.MemberInfo” scope=“[범위=request]” />

 

*범위로는 page(default), request, session, application 중 하나가 선택됨.
**다음과 같은 뜻

 

MemberInfo info = new MemberInfo();

request.setAttribute(“info”, info); //어느 속성에, 어떤 값을 넣는가

 

 

<활용 예제>

 

<From>

 

<jsp:useBean id=“member” class=“ch11.member.MemberInfo” scope=“request” />

<% member.setId(“crazy91”); %>

<% member.setName(“이광인“); %>

<jsp:forward page=“/useObject.jsp” /> 

 

<To>

 

<jsp:useBean id=“member” class=“ch11.member.MemberInfo” scope=“request” />

//이곳에서도 똑같이 bean 객체 만들어야함

<%=memeber.getName() %>

<%=member.getId() %>

 

 

6. DB에서 데이터 읽어오기




<To> viewMemberList.jsp


1) JDBC 드라이버 로딩(차장 준비)

Class.forName(“com.mysql.jdbc.Driver”); 드라이버 이름

 

2) DB Connection 생성(다음 역과 연락; 로그인 필요)

conn = DriverManager.getConnection(url, id, pw);

 

3) Statement 생성(열차 출발 명령)

stmt = conn.createStatement();

 

4) 쿼리 실행(승객 조회 실행)

rs = stmt.executeQuery(query)

 

5) 쿼리 출력(무임승차 빼냄)

while(rs.next()){

rs.getString(“NAME”)

 

6) rs, stmt, conn 순서대로 종료(close();)

 

 

*url 형식

jdbc:mysql://호스트 IP:포트번호/DB이름?[param=1&param2=2&...] +캐릭터set

 

 

 

7. PreparedStatement(=pstmt)


:query ?에 직접 값을 넣어줄 수 있게 해줌

 

 

<활용 예제>

 

PreparedStatement pstmt = null; //초기화

pstmt = conn.prepareStatement(“insert into MEMBER(ID, NAME) values (?, ?)”);

pstmt.setString(1, “crazy91”); //첫 번째 ? 값 지정

pstmt.setString(2, “이광인”); //두번째 ? 값 지정