본문 바로가기

프로그래밍/웹

jsp 개념 및 문법정리

반응형


분류 

용어/속성 

설명/예제

JSP Model

Model1


Browser <-> JSP <-> javaBean <-> DB


Model2 

- JSP 모델2 = MVC (Model-View-Controller)

- Browser <-> Servlet(Controller) <-> JSP(View) <-> JavaBean <-> DB

- 순수 자바코드로만 되어있는 서블릿. 

프론트엔드 분리 가능한게 이점이다.

  JSP 페이지 

디렉티브

language

(기본 : java)

스크립트가 사용할 언어를 지정한다.

import

사용할 자바 클래스를 지정한다.

session

(기본 : true)

HttpSession 사용 여부를 지정한다.

buffer
(기본 : 8kb)

출력 버퍼 크기를 지정한다.

autoflush

(기본 : true)

출력 버퍼가 가득 찬 경우 저장되어있는 데이터를 내보낸다.

isErrorPage

(기본 : false)

해당 페이지를 에러페이지로 지정한다.

errorPage="occ_error.jsp 

pageEncoding

 (기본: ISO-8859-1)

페이지의 문자 인코딩을 지정한다.

스크립트 

요소

스크립트릿

<% 자바 소스코드 %>

  JSP에서 자바코드를 사용한다.

선언문 

 <%! 멤버선언 %>

  멤버 변수/ 멤버 메서드를 선언한다.

표현식

<%=값 또는 변수 %>

  서블릿의 out.println() 메서드와 유사하다. 

  데이터를 출력할 때 사용한다.

주석문
<%-- 주석 내용 --%>

  소스코드를 설명한다.

 include 디렉티브

<%@ 파일 주소 %>

포함될 파일의 이름을 명시한다.

<%@include file="top.jsp"%>

내장객체

request

웹 브라우저 요청 정보를 저장한다.

response

웹 브라우저 응답 정보를 저장한다.

out

페이지의 출력 내용을 가진 출력 스트림이다. 

session

세션 정보를 저장한다.

exception

예외 발생을 처리한다. 

액션 태그

include

다른 페이지 실행 결과를 현재 페이지에 포함한다.

라미터를 넘길 수 있다는 점에서 include 디렉티브와 다르다.

<jsp:include page="Top.jsp">

<jsp:param value="admin" name="id" />

</jsp:include>

forward

 다른 페이지로 넘어가도 파라미터 데이터를 유지한다.

<jsp:forward page="Redirect.jsp"/> 

useBean

DB 연동 시 자주 사용되는 자바 클래스로서 

jsp와 db간 반복되는 데이터 읽기/저장을 효율적으로 할 수 있다. 

 - 패키지 생 Eclipse > Java Resources > New > Package

 - 클래스 생성 Package > New > Class

 - 클래스 작성 규칙 : 폼의 입력 필드와 자바 변수명을 동일하게 매핑한다.

Login.jsp - <input type="password" name="pass_chk">

Javabean - package test; public javabean_class { private String pass_chk; }

 - 프로퍼티 생성

Eclipse > Source > Generate Getters and Setteres > Select All > OK

setProperty

폼으로부터 전달된 데이터를 자바빈 객체에 저장하고, 읽어온다.

Login_Proc.jsp 

      javabean_class bean = new javabean_class();

      <jsp:useBean id="bean" class="test.javabean_class" >

         <jsp:setProperty name="bean" property="*"/>  <!-- *은 모두 매핑 -->

      </jsp:useBean>

      <jsp:getProperty property="pass_chk" name="bean" />

getProperty

DB 연동

오라클 DB 연결

ojdbc.jar를 다운받은 뒤 tomcat\lib 폴더로 이동시킨다. 

 String dbID = "system"; 

String dbPassword = "123456";

String dbURL = "jdbc:oracle:thin:@localhost:1521:XE";


try{ 

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn = DriverManager.getConnection(dbURL, dbID, dbPassword);

} catch(Exception e) { e.printStackTrace(); } }

커넥션 풀

server.xml 파일에 Resource auth 코드를 추가한다.

 <Context docBase="test1" path="/test1" reloadable="true" source="org.eclipse.jst.jee.server:test1">

      <Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" loginTimeout="10" maxWait="5000" name="jdbc/pool" password="123456" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:xe" username="system"/>

      </Context>

 try{ Context initctx = new InitialContext();

 Context envctx = (Context)initctx.lookup("java:comp/env");

 DataSource ds =  (DataSource)envctx.lookup("jdbc/pool");

conn =ds.getConnection(); 

}catch(Exception e){ e.printStackTrace(); }

 DB Data 

제어

DTO

(Data Transfer Object)

데이터 임시 저장 객체로서 DAO 프로퍼티를 주고 받을  사용한다.

...중략

public class MemberBean{ 

private String name; private String id;

     

public String getName() { return name; }

public void setName(String name) { this.name = name; } }

... 중략

DAO

(Data Access Object)

DB 접근  데이터 추가,삭제,수정 작업을 하는 객체로서

유지보수의 편이성과 코드의 모듈화를 위해 사용한다.

... db connection ...

public class MemberBeanDAO{

public Vector<MemberBean> allSelectMember(){

Vector<MemberBean> v = new Vector<>();

pstmt = conn.prepareStatement("SELECT * FROM MEMBER");

rs = pstmt.executeQuery();

while(rs.next()){

MemberBean bean = new MemberBean(); 

bean.setName(rs.getName(1));

bean.setId(rs.getId(2));

v.add(bean); 

return v; } }

VIEW

<% MemberBeanDAO mDAO = new MemberBeanDAO();

mDAO.allSelectMember();

Vector<MemberBean> vec = mDAO.allSelectMember(); 


for(int i = 0 ; i<vec.size();i++){ MemberBean bean = vec.get(i); }  %>




반응형

'프로그래밍 > ' 카테고리의 다른 글

HTML Application - hta  (0) 2020.12.24
ajax 개념  (0) 2020.12.20
이클립스 설치 및 톰캣 연동  (1) 2020.11.14
웹 크롤링 환경 구축 및 예제  (0) 2020.07.23
textarea 크기 자동 조절  (0) 2020.07.12