:: 모델2 패턴에서 DAO클래스는 Model 기능을 수행하고 있다. 하지만 실제로는 Service클래스를 만들어

  DAO클래스를 가기전 Service클래스를 거치도록 구현한다. 그 이유는 DAO클래스는 데이터베이스에 접근하는 기능을 수행하고

  Service클래스는 실제 프로그램을 업무에 적용하는 사용자 입장에서 업무 단위(단위 기능, 하나의 논리적인 기능), 즉 트랜잭션으로 작업을 수행한다.


:: 유지보수나 시스템의 확장성 면에서 유리하다.


[ 단위 기능 ]


- 게시판 글 조회 시 해당 글을 조회하는 기능과 조회 수를 갱신하는 기능

- 쇼핑몰에서 상품 주문 시 주문 상품을 테이블에 등록 후 주문자의 포인트를 갱신하는 기능

- 은행에서 송금 시 송금자의 잔고를 갱신하는 기능과 수신자의 잔고를 갱신하는 기능


* 단위기능 하나는 DAO의 n개의 sql문을 묶어 하나의 단위기능을 수행 할 수 있다.



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

JSP DAO작성(Model)  (0) 2020.03.05
JSP 모델1과 모델2  (0) 2020.03.04
HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28

[ 작성 예시 ]


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MemberDAO {
    private DataSource dataFactory;
    private Connection conn;
    private PreparedStatement pstmt;
 
    public MemberDAO() {
        try {
            Context ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:/comp/env");
            dataFactory = (DataSource) envContext.lookup("jdbc/mariadb");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public List<MemberVO> listMembers() {
        List<MemberVO> membersList = new ArrayList();
        try {
            conn = dataFactory.getConnection();
            String query = "select * from  member order by joinDate desc";
            System.out.println(query);
            pstmt = conn.prepareStatement(query);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String id = rs.getString("id");
                String pwd = rs.getString("pwd");
                String name = rs.getString("name");
                String email = rs.getString("email");
                Date joinDate = rs.getDate("joinDate");
                MemberVO memberVO = new MemberVO(id, pwd, name, email, joinDate);
                membersList.add(memberVO);
            }
            rs.close();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return membersList;
    }
}



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

JSP Service클래스를 두는 이유  (0) 2020.03.05
JSP 모델1과 모델2  (0) 2020.03.04
HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28

[ 모델1 ]


- 데이터베이스 연동과 같은 비즈니스 로직 작업과 그 작업 결과를 나타내주는 작업을 동일한 JSP에서 수행

- 모든 클라이언트 요청과 비즈니스 로직 처리를 JSP가 담당하는 구조

- 기능 구현이 쉽다.

- 화면 기능과 비즈니스 로직 기능이 섞이면서 유지보수에 문제가 생긴다.


[ 모델2 ]


- 웹 애플리케이션의 각 기능(클라이언트의 요청 처리, 응답 처리, 비즈니스 로직 처리) 을 분리해서 구현

- 각각의 기능을 모듈화해서 개발

- 개발자가 전체 기능을 알지 못해도 각 기능이 모듈화가 되어 있어 자신이 맡은 부분만 개발하면 되기에 개발 효율성이 높다.

- 유지보수가 편하고 개발한 모듈은 비슷한 프로그램을 만들 때 사용할 수 있어 코드 재사용성이 높다.

- 디자이너와 개발자의 작업 분업화하여 개발이 쉽다.

- 현재 모든 웹 프로그램은 모델2 방식


< MVC 디자인 패턴 >


- Model-View-Controller 의 약자로 일반 PC 프로그램 개발에 사용되는 디자인 패턴을 웹 애플리케이션에 도입한 것

- 각 기능이 분리되어 있어 개발 및 유지보수 편함

- 각 기능의 재사용성이 높아짐

- 디자이너와 개발자의 작업을 분업화해 쉽게 개발 가능


* Model 

- 비즈니스 로직 처리

- 데이터베이스 연동과 같은 비즈니스 로직 수행

- 일반적으로 DAO와 VO 클래스로 이루어져 있음

* View

- 사용자에게 보여줄 화면 담당

- JSP가 화면 기능 담당

- Model에서 처리한 결과를 화면에 표시

* Controller

- 사용자의 요청 및 흐름 제어 담당

- 서블릿이 컨트롤러의 역할을 함

- 클라이언트의 요청을 분석

- 요청에 대해 필요한 모델 호출

- Model에서 처리한 결과를 보여주기 위해 JSP 선택



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

JSP Service클래스를 두는 이유  (0) 2020.03.05
JSP DAO작성(Model)  (0) 2020.03.05
HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28

[ HTML5 ]


- 기존 html4에서는 지원하지 않는 동영상, 오디오, 지리 위치 정보 등을 지원

- 플러그인을 따로 설치하지 않아도 화려한 그래픽 효과를 구현할 수 있다.

- 운영체제에 관계없이 스마트폰, 태블릿 같은 모바일 환경에서도 기능을 구현할 수 있다.


< HTML5 기능 >

기능 

설명 

Web Form 

입력 형태를 보다 다양하게 제공 

Video 

동영상 재생을 위한 API 제공 

Audio 

음악 재생을 위한 API를 제공 

Offline Web 

인터넷 연결이 되지 않은 상태에서도 정상적인 기능을 지원하는 API 제공 

Web DataBase 

표준 SQL을 사용해 데이터를 저장할 수 있는 기능을 제공 

Web Storage 

웹 애플리케이션에서 데이터를 저장할 수 있는 기능을 제공 

Canvas 

2차원 그래픽 그리기 및 객체에 대한 각종 효과를 주는 기능을 제공 

SVG 

XML 기반 2차원 벡터 그래픽을 표현하기 위한 SVG 언어를 지원 

Geolocation 

디바이스의 지리적 위치 정보를 가져오는 기능 제공 

Web Worker 

웹 애플리케이션을 위한 스레드 기능 제공 

Web Socket 

웹 애플리케이션과 서버 간의 양방향 통신 기능을 제공 

CSS3 

웹 애플리케이션의 다양한 스타일 및 효과를 나타내기 위한 CSS3 제공 



< HTML5 구조 관련 태그 >

태그 

설명 

<header> 

머리말을 나타내는 태그 

<hgroup> 

제목과 부제목을 묶는 태그 

<nav> 

메뉴 부분을 나타내는 태그 

<section> 

제목별로 나눌 수 있는 태그 

<article> 

개별 콘텐츠를 나타내는 태그 

<aside> 

왼쪽 또는 오른쪽에 위치하는 사이드 바를 나타내는 태그 

<footer> 

하단의 정보를 표시하는 태그 



< HTML4 화면 레이아웃 구성  -> HTML5 화면 레이아웃 구성 >


1
2
3
4
5
6
7
8
9
 <div class="header"> -> <header>
 
 <div class="aside"> -> <aside>
 
 <div class="section"> -> <section>
 
 <div class="article"> -> <article>
 
 <div class="footer"> -> <footer>




[ 제이쿼리 ]


- 화면의 동적 기능을 자바스크립트보다 좀 더 쉽고 편리하게 개발할 수 있게 해주는 자바스크립트 기반 라이브러리

- 여러 효과, 이벤트 등을 간단한 함수 호출만으로 빠르게 개발할 수 있어 유용함


< 특징 >

- CSS 선택자를 사용해 각 HTML 태그에 접근해서 작업하기 때문에 명료하면서 읽기 쉬운 형태로 표현 가능

- 메서드 체인 방식으로 수행하기에 여러 개의 동작(기능)이 한 줄로 나열되어 코드가 불필요하기 반복되는 것을 피할 수 있음

- 많은 플러그인을 제공하기에 이미 개발된 많은 플러그인을 쉽고 빠르게 이용할 수 있음

- 크로스 브라우징을 제공해 브라우저 종류에 상관 없이 동일하기 기능을 수행


< 사용 방법 >

1. www.jquery.com에서 라이브러리를 다운받아 사용하는 방법


2. 네트워크로 CDN 호스트를 설정해서 사용하는 방법


* HTML, JSP에서 제이쿼리 CDN 호스트를 설정하는 방법

1
2
3
4
<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
<!-- 지정한 버전의 제이쿼리 사용 -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script
<!-- 가장 최신 버전의 제이쿼리 사용 -->



< 기능 >

선택자 종류 

선택자 표현 방법 

설명 

All selector 

$("*") 

모든 DOM을 선택 

ID selector 

$("#id") 

해당되는 id를 가지는 DOM을 선택 

Element selector 

$("elementName") 

해당되는 이름을 가지는 DOM을 선택 

class selector 

$(".className")

 CSS 중 해당되는 클래스 이름을 가지는 DOM을 선택

Multiple selector 

 $("selector1,selector2,selector3,......selectorN")

 해당되는 선택자를 가지는 모든 DOM을 선택



[ 제이쿼리 Ajax ]


:: 클라이언트 측의 작업과는 상관 없이 비동기적으로 서버와 작업을 수행할 때 Ajax(Asynchronous Javascript + XML) 기능을 사용

:: 자바 스크립트를 사용한 비동기 통신으로 클라이언트와 서버간의 XML,JSON 데이터를 주고받는 기술

:: 페이지 이동 없이 데이터 처리가 가능

:: 서버의 처리를 기다리지 않고 비동기 요청 가능


< 사용 방법 >

- $ 기호 다음에 ajax라고 명명하고 속성에 대한 값을 설정


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
function fn_test(){
 
    $.ajax({
        type: "post 또는 get",
        async: "true 또는 false",
        url: "요청할 URL",
        data: {서버로 전송할 데이터},
        dataType: "서버에서 전송받을 데이터 형식",
        success: { //정상 요청, 응답시 처리 },
        error: function(xhr,status,error){//오류 발생 시 처리}
        complete: function(data,textStatux){//작업 완료 후 처리}
    });
</script>    




< 속성 >

속성 

설명 

type 

통신 타입을 설정( post 또는 get 방식으로 선택) 

url 

요청할 url을 설정 

async 

비동기식으로 처리할지의 여부를 설정(false인 경우 비동기로 처리) 

data 

서버에 요청할 때 보낼 매개변수 설정 

dataType 

응답 받을 데이터 타입을 설정(XML,TEXT,HTML,JSON 등) 

success 

요청 및 응답에 성공했을 때 처리 구문을 설정 

error 

요청 및 응답에 실패했을 때 처리 구문 설정 

complete 

모든 작업을 마친 후 처리 구문 설정 



< JSON(Javascript Object Notation) 사용하기 >


- name/value 쌍으로 이루어진 데이터 객체를 전단하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 데이터 형식

- XML을 대체하는 데이터 전송 형식 중 하나

(Ajax는 연동할 때 XML 형식으로 데이터를 주고받는다. 하지만 내부적으로 여러 단계의 처리 과정을 거치게 되기에 자원이 열약한 환경에서는 속도 

면에서 불리하기 때문에 XML형식보다 단순한 JSON형식으로 데이터를 주고 받음.)

- 자바스크립트에서 파생되어 자바스크립트 구문 형식을 따르지만 프로그래밍 언어나 플랫폼에 독립적기에 쉽게 사용가능

- https://code.google.com/archive/p/json-simple/downloads에서 json-simple-1.1.1.jar 다운

- servlet에서 jsonObject와 jsonArray클래스를 이용하여 데이터를 저장하고 PrintWriter로  Object전달


* 자료형

자료형 

종류 

예 

수(Number) 

정수 

128, 65 ,77, -50, -194 

 

실수(고정 소수점)

7.12, -4.563, 98.34 

 

실수(부동 소수점)

2e4, 3.6e34, 5.59e-7, 6.78E-4 

문자열

문자열 

"1004"

"true"

"Hello"

"안녕"

"\"CSS"\"

 

제어 문자

\b( 백스페이스 )

\f ( 폼 피드 )

\n ( 개행 ) 

\r ( 캐리지 반환 )

\t ( 탭 )

\" ( 따옴표 )

\/ ( 슬래시 )

\\ ( 역슬래시 )

배열 

배열은 대괄호[]로 나타냄

배열의 각 요소는 기본 자료형이거나 배열, 객체

각 요소들은 콤마(,)로 구별 

"name":["한국","김치","최고"]

// 대괄호 안에 배열 요소를 콤마(,)로 구분해서 나열 

객체

JSON 객체는 중괄호 {}로 둘러싸서 표현

콤마(,)를 사용해 여러 프로퍼티를 포함할 수 있음

{

   "name":"한국",

   "age":2020,

   "weight":70

}

// 중괄호 안에 name/value 쌍을 콤마(,)로 구분해서 나열

 




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

JSP DAO작성(Model)  (0) 2020.03.05
JSP 모델1과 모델2  (0) 2020.03.04
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28
JSP 포매팅 태그 라이브러리  (0) 2020.02.27

:: JSP는 대부분의 기능을 오픈소스로 제공하는데 대표적인 기능이 파일 업로드, 파일 다운로드 기능이며 이 외에 이메일 등 수많은 오픈소스 라이브러리를     제공하고 있음


[ 라이브러리 설치 ]


http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi 접속 commons-fileupload-버전.jar 확인

- zip 파일을 클릭해 다운로드

- 압축풀기

- 압축을 푼 폴더의 commons-fileupload-버전jar 파일을 복사하여 web-inf/lib 폴더에 붙여 넣기

http://commons.apache.org/proper/commons-io/download_io.cgi 에 접속하여 commons-io-버전.jar 파일 확인

- zip 파일을 클릭해 다운로드

- 압축풀기

- 압축을 푼 폴더의 commons-io-버전.jar 파일을 복사해 web-inf/lib 폴더에 붙여넣기


[ 파일 업로드 관련 API ]


< DiskFileItemFactory 클래스가 제공하는 메서드 >

메서드 

기능 

setRepository() 

파일을 저장할 디렉터리 설정 

setSizeThreadhold() 

최대 업로드 가능한 파일 크기를 설정 



< ServletFileUpload 클래스가 제공하는 메서드 >

메서드 

기능 

parseRequest() 

전송된 매개변수를 List 객체로 얻음 

getItemIterator() 

전송된 매개변수를 Iterator  






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

JSP 모델1과 모델2  (0) 2020.03.04
HTML5와 제이쿼리  (0) 2020.03.03
JSP 문자열 처리 함수  (0) 2020.02.28
JSP 포매팅 태그 라이브러리  (0) 2020.02.27
JSP 다국어 태그 라이브러리  (0) 2020.02.27


:: JAVA에서 문자열을 처리할 때 사용하는 문자열 관련 기능을 JSTL에서 제공하는 함수를 이용해 JSP에서 사용할 수 있다.

:: taglib 디렉티브 태그를 선언(functions)


< JSTL에서 제공하는 문자열 함수 >

함수 

반환 

설명 

fn:contains(A,B) 

boolean 

문자열 A에 문자열 B가 포함되어 있는지 확인 

fn:endWith(A,B) 

boolean 

문자열 A의 끝이 B로 끝나는지 확인 

fn:indexOf(A,B) 

int 

문자열 A에서 B가 처음으로 위치하는 인덱스를 반환 

fn:length(A) 

int 

문자열 A의 전체 길이를 반환 

fn:replace(A,B,C) 

String 

문자열 A에서 B까지 해당되는 문자를 찾아 C로 변환 

fn:toLowerCase(A) 

String 

A를 모두 소문자로 변환 

fn:toUpperCase(A) 

String 

A를 모두 대문자로 변환 

fn::substring(A,B,C) 

String 

A에서 인덱스 번호 B에서 C까지 해당하는 문자열을 반환 

fn:split(A,B) 

String[] 

A에서 B에서 지정한 문자열로 나누어 배열로 반환 

fn:trim(A) 

String 

문자열 A에서 앞뒤 공백을 제거 



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

HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 포매팅 태그 라이브러리  (0) 2020.02.27
JSP 다국어 태그 라이브러리  (0) 2020.02.27
JSP 커스텀 태그(feat.JSTL)  (0) 2020.02.26


< 포매팅 태그 라이브러리 종류 >

분류 

태그 

설명 

포매팅 

<fmt:timeZone> 

둘 다 지정한 국가의 시간을 지정하는 태그.

그러나 <fmt:timeZone> 태그의 경우 태그를 열고 닫는 영역 안에서만 적용된다는 차이점을 가지고 있다.

<fmt:setTimeZone> 

<fmt:formatNumber> 

표시할 숫자의 형식을 지정 

<fmt:formatDate> 

지정한 형식의 날짜를 표시 


< formatNumber 태그의 여러 속성 >

속성 

설명 

value 

출력될 숫자를 지정 

type 

출력된 타입을 지정.

percent인 경우 %, number인 경우 숫자, currency인 경우 통화 형식으로 출력 

dateStyle 

날짜의 출력 형식을 지정

DateFormat 클래스의 full, long, medium, short 등이 지정되어 있음 

groupingUsed 

콤마(,)등 기호로 구분 여부를 지정 

이 속성이 true이면 50000이 50,000으로 표시됨

기본값은 true

currencyCode 

통화 코드를 지정

한국 원화는 KRW 

currentSimbol 

통화를 표시할 때 사용할 기호를 표시 

var 

<formatNumber>태글 결과를 저장할 변수의 이름을 지정 

scope 

변수의 접근 범위를 지정 

pattern 

숫자가 출력될 양식을 지정

자바의 DecimalFormat 클래스에 정의된 형식을 따름 



< formatDate 태그의 여러 속성 >

속성 

설명 

value 

포맷될 날짜를 지정 

type 

포매팅할 타입을 지정

date인 경우 날짜만, time인 경우 시간만, both인 경우 모두 지정 

dateStyle

날짜의 출력 형식을 지정

DateFormat 클래스의 full, long, medium, short 등이 지정되어 있음 

timeStyle

시간 출력 형식을 지정

자바 클래스 DateFormat에 정의된 형식을 사용

pattern 

직접 출력 형식을 지정

자바 클래스 SimpleDateFormat에 지정된 패턴을 사용 

timeZone 

특정 나라 시간대로 시간을 설정 






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

JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28
JSP 다국어 태그 라이브러리  (0) 2020.02.27
JSP 커스텀 태그(feat.JSTL)  (0) 2020.02.26
<a> 태그를 이용한 서블릿,JSP 요청 방법  (0) 2020.02.25

:: 다국어 태그 라이브러리를 사용하면 다국어 기능을 쉽게 구현할 수 있음

:: 다국어 기능을 사용하려면 미리 한글을 아스키 코드로 변환한 형태로 저장하고 있다가 요청 시 아스키 코드를 다시 한글로 변환해서 표시


분류 

태그 

설명 

 다국어

<fmt:setLocale> 

Locale(언어)을 지정 

<fmt:message> 

지정한 언어에 해당하는 언어를 표시 

<fmt:setBundle> 

사용할 번들을 지정 

<fmt:setParam> 

전달할 매개변수를 지정 

<fmt:requestEncoding> 

요청 매개변수의 문자 인코딩을 지정 


< 한글을 아스키 코드로 변환 >


* Properties Editor설치


- 이클립스 상단 help -> install New SoftWare

- add 클릭 후 name은 Properties Editor, Location은 http://propedit.sourceforge.jp/eclipse/updates 입력후 add

- PropertiesEditor 선택 후 Next

- Install Details 화면이 나타나면 Next 클릭

- 라이센스 정책 동의 후 Finish 클릭

- Restart Now 클릭


* 실습


- src 폴더에 패키지 생성후 other -> genaral -> file -> 파일이름.properties 생성

- 키/값 쌍으로 값을 한글로 작성

ex) member.name = 단아한

- 작성한 정보를 마우스로 드래그한 후 마우스 우클릭하여 Unicode표시 선택

- 변환된 아스키 코드 전체를 마우스 드래그 후 atrl+c를 눌러 복사

- 따로 작성한 한글용 properties파일에 붙여넣는다.


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

JSP 문자열 처리 함수  (0) 2020.02.28
JSP 포매팅 태그 라이브러리  (0) 2020.02.27
JSP 커스텀 태그(feat.JSTL)  (0) 2020.02.26
<a> 태그를 이용한 서블릿,JSP 요청 방법  (0) 2020.02.25
표현 언어  (0) 2020.02.25


[ 커스텀 태그 ]

- 액션 태그나 표현 언어를 사용해도 조건식이나 반복문은 자바코드로 작성을 했는데 이 자바코드를 제거하기 위해

   JSTL이나 커스텀 태그가 등장하게 됨


- JSP에서는 개발자가 필요할 때 태그를 만들어 사용할 수 있지만 스트러츠나 스프링 프레임워크에서는 프레임워크 기능과

  편리하게 연동할 수 있도록 미리 태그를 만들어서 제공하기도 한다.



* 개발자가 만든 커스텀 태그

:: 개발자가 필요에 의해 만든 태그로, 스트러츠나 스프링 프레임워크에서 미리 만들어서 제공


[ JSTL ]


- JSP Standard Tag Library

- JSP 페이지에서 가장 많이 사용하는 태그로 제공하며, JSTL 라이브러리를 따로 설치해서 사용

- 커스텀 태그 중 가장 많이 사용되는 태그를 표준화하여 라이브러리로 제공하는 것

- JSP 2.0 규약부터 추가된 기능으로 현재의 톰캣에서 기본으로 제공되지 않음

   ( http://tomcat.apache.org/download-taglibs.cgi 에서 4개의 jar파일 다운)


라이브러리 

세부 기능 

접두어  

관련 URI 

코어 

변수 지원, 흐름 제어, 반복문 처리, URL 

http://java.sun.com/jsp/jstl/core 

국제화 

지역, 메시지 형식, 숫자 및 날짜 형식

fmt 

http://java.sun.com/jsp/jstl/fmt 

XML 

XML코어, 흐름 제어, XML변환 

http://java.sun.com/jsp/jstl/xml 

데이터베이스 

SQL 

sql 

http://java.sun.com/jsp/jstl/sql 

함수 

컬렉션 처리, 문자열 처리 

fn 

http://java.sun.com/jsp/jstl/functions 


< Core 태그 라이브러리 >


- 변수 선언, 조건식, 반복문 기능을 태그로 작성할 수 있음

- 자바의 import문처럼 코어 태그 라이브러리를 사용하려면 JSP 페이지 상단에 taglib 디렉티브 태그를 추가


1
<%@ taglib prefix = "c"    uri="http://java.sun.com/jsp/jstl/core" %>



기능 

태그 

설명 

변수 지원 

<c:set> 


JSP 페이지에서 변수 지정

 

1
<c:set var="변수 이름" value="변수 값" [scope="scope 속성 중 하나"] />



<c:remove> 


지정된 변수를 제거 


1
<c:remove var="변수명" />



흐름 제어 

<c:if> 


조건문 사용 


1
2
3
<c:if test="${조건식}" var="변수이름" [scope="scope속성 중 하나"] />
    .....
</c:if>



<c:choose> 


switch문 사용 


1
2
3
4
5
6
<c:choose>
    <c:when test="조건식1">내용1</c:when>
    <c:when test="조건식2">내용2</c:when>
    ...
    <c:otherwise>내용n</c:otherwise>
</c:choose>



<c:forEach> 


반복문 사용 


1
2
3
4
5
<c:forEach var="변수이름" items="반복할 객체 이름" 
           begin="시작값" end="마지막 값"
           step="증가값" varStatus="반복상태변수이름">
    ....
</c:forEach>




<c:forTokens> 


구분자로 분리된 각각의 토큰을 처리할 때 사용 


1
2
3
4
5
<c:forTokens var="변수 이름" 
             items="${ set태그에서 선언한 변수명}" 
             delims=",(각 문자열을 구분할 기호)" >
    .....
</c:forTokens>



URL 처리 

<c:import> 

URL을 이용해 다른 자원을 JSP 페이지에 추가 

<jsp:include>와 같은 기능을 수행


<c:redirect> 


response.sendRedirect() 기능을 수행 


1
2
3
4
<c:redirect url="리다이렉트할 페이지" >
    <c:param name="매개변수이름" value="전달할 매개변수 값" />
    ......
</c:redirect>



<c:url> 


요청 매개변수로부터 URL 생성


1
2
3
4
<c:url var="변수이름" value="URL경로" [scope="scope 속성중 하나"]
    [ <c:param name="매개변수 이름" value="전달값" />
    .....
</c:url>


 

기타 태그 

<c:catch> 

예외 처리에 사용 

<c:out> 


JspWriter에 내용을 처리한 후 출력

화면에 지정한 값을 출력해 주는 태그 


1
<c:out value="출력 값" default="기본 값" [escapeXml="boolean값"] />
escapeXml의 기본값은 true





< varStatus 속성 >

속성 

값 

설명 

index

int

items에서 정의한 항목을 가리키는 index 번호

0부터 시작 

count 

int 

몇 번째 반복인지 나타냄

1부터 시작 

first 

boolean 

첫 번째 반복인지 나타냄 

last 

boolean 

마지막 반복인지 나타냄 


< escapeXml이 false일 때 변환되는 문자>

특수 문자 

변환된 문자 

&lt; 

&gt; 

&amp; 

&#039;

&#034; 

... 

... 







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

JSP 포매팅 태그 라이브러리  (0) 2020.02.27
JSP 다국어 태그 라이브러리  (0) 2020.02.27
<a> 태그를 이용한 서블릿,JSP 요청 방법  (0) 2020.02.25
표현 언어  (0) 2020.02.25
JSP 액션태그  (0) 2020.02.25


1. 직접 입력


1
<a href = "/project01/test01/login.jsp">로그인 하기</a>



2. request.getContextPath() 메서드 이용


1
<a href = "<%=request.getContextPath() %>/project01/test01/login.jsp">로그인 하기</a>




3. 표현언어 pageContext 객체 속성인 request의 contextPath 속성을 이용


1
<a href = "${pageContext.request.contextPath}/project01/test01/login.jsp">로그인 하기</a>





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

JSP 다국어 태그 라이브러리  (0) 2020.02.27
JSP 커스텀 태그(feat.JSTL)  (0) 2020.02.26
표현 언어  (0) 2020.02.25
JSP 액션태그  (0) 2020.02.25
JSP 에러 처리 페이지  (0) 2020.02.24

+ Recent posts