:: JSP는 HTML태그 + 자바 -> 액션태그 -> 표현언어 and JSTL 로 발전


[ 표현 언어 ]


- 자바 코드가 들어가는 표현식을 좀 더 편리하게 사용하기 위해 도입된 데이터 출력 기능

- 표현식은 자바 변수나 여러 가지 자바 코드로 된 식을 사용하기에 이를 대체하기 위한 언어


<특징>


* 기존 표현식보다 편리하게 값을  출력

* 변수와 여러 가지 연산자를 포함할 수 있음

* JSP의 내장 객체에 저장된 속성 및 자바의 빈 속성도 표현 언어에서 출력 가능

* 표현 언어 자체 내장 객체도 제공

* JSP 페이지 생성 시 기본 설정은 표현 언어를 사용할 수 없음

* 페이지 디렉티브 태그에서 반드시 isELIgnored=false로 설정해야 함


= 숫자형 문자열과 실제 숫자를 더하면 문자열을 자동으로 숫자로 변환하여 더함

= null과 숫자를 더하면 null을 0으로 인식

= 문자열끼리 더할 수 없다

= 문자열과 숫자는 더할 수 없다.


1
${표현식 or 값}


:: 맨 앞에 \를 붙이면 일반 문자열처럼 출력이됨



< 표현 언어에서 사용되는 자료형과 연산자 >

자료형 

설명 

boolean 

true와 false 값을 가짐 

정수

0~9로 이루어진 값을 가지고 음수인 경우 마이너스(-)가 붙음 

실수 

소수점(.)을 사용할 수 있고, 1.4e5와 같이 지수형으로 표현 가능 

문자열 

따옴표('hello'나 "hello")와 같이 사용 

NULL 

null을 가진다 


< 표현 언어의 여러 가지 연산자 >

연산자 종류 

연산자 

설명 

산술 연산자 

덧셈 

뺼셈 

곱셈 

/ or div 

나눗셈 

% or mod 

나머지 

비교 연산자 

== or eq 

두 값이 같은지 비교 

!= or ne

두 값이 다른지 비교 

< or lt 

값이 다른 값보다 작은지 비교 

> or gt 

값이 다른 값보다 큰지 비교 

<= or le 

값이 다른 값보다 작거나 같은지 비교 

>= or ge 

값이 다른 값보다 크거나 같은지 비교 

논리 연산자 

&& or and 

논리곱 연산 

|| or OR 

논리합 연산 

! or not 

부정 연산 

 empty연산자

empty<값> 

<값>이 null이거나 빈 문자열이면 true를 반환 

* 문자열에 대해 false반환

* null은 true 반환

* 빈 문자열은 true 반환

조건 연산자 

<수식>?<값1>:<값2> 

<수식>의 결과값이 true면 <값1>을 반환하고, false면 <값2>를 반환 


< 표현 언어 내장 객체(내장 변수) >

구분 

내장 객체 

설명 

스코프 

pageScope 

JSP의 page와 같은 기능을 하고 page 영역에 바인딩된 객체를 참조 

requestScope 

JSP의 request와 같은 기능을 하고 request에 바인딩된 객체를 참조 

sessionScope 

JSP의 session과 같은 기능을 하고 session에 바인딩된 객체를 참조 

applicationScope 

JSP의 application과 같은 기능을 하고 application에 바인딩된 객체를 참조 

요청 매개변수

param 

request.getParameter() 메서드를 호출한 것과 같으며 한 개의 값을 전달하는 요청 매개변수를 처리 

paramValues 

request.getParameterValues() 메서드를 호출한 것과 같으며 여러 개의 값을 전달하는 요청 매개변수를 처리 

헤더 값 

header 

request.getHeader() 메서드를 호출한 것과 같으며 요청 헤더 이름의 정보를 단일 값으로 반환 

headerValues 

request.getHeader() 메서드를 호출한 것과 같으며 요청 헤더 이름의 정보를 배열로 반환 

쿠키 값 

Cookies 

쿠키 이름의 값을 반환 

JSP 내용 

pageContext 

pageContext 객체를 참조할 때 사용 

초기 매개변수 

initParam 

컨텍스트의 초기화 매개변수 이름의 값을 반환 



< 빈 사용 >


@ 빈의 속성에 접근할 때

1
${빈이름.속성이름}




< Collection 객체 사용>


@ Collection 객체에 접근하는 법

1
2
${Collection객체이름[index].속성이름}
<!-- index는 Collection에 저장된 순서를 의미 -->



< HashMap 사용 >

1
${HashMap객체이름.키이름}



< has-a 관계 빈 사용 >


- 객체가 다른 객체를 속성으로 가지는 경우를 말함

1
${부모빈이름.자식속성이름.속성이름}








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

JSP 커스텀 태그(feat.JSTL)  (0) 2020.02.26
<a> 태그를 이용한 서블릿,JSP 요청 방법  (0) 2020.02.25
JSP 액션태그  (0) 2020.02.25
JSP 에러 처리 페이지  (0) 2020.02.24
JSP 내장 객체(and 스코프)  (0) 2020.02.24


[ 액션 태그 ]


- 디자이너가 자바 코드를 사용하지 않고 쉽게 화면을 구성하게 하는 것이 JSP의 등장 배경인데, 화면이 점차 복잡해지면서 디자이너들은 상황에 따라 HTML 태그에 자바 코드를 같이 써야 하는 문제가 있다. 이것을 스크립트릿의 자바 코드를 제거하고 더 쉽고 편리하게 작업할 수 있는 태그 형태로 기능을 제공하는 것이 액션태그


이름 

형식 

설명 

인클루드 액션태그 

<jsp:include> 

이미 있는 JSP를 현재 JSP에 포함하는 태그 

포워드 액션 태그 

<jsp:forward> 

서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그 

유즈빈 액션 태그 

<jsp:useBean> 

객체를 생성하기 위한 new 연산자를 대신하는 태그 

셋프로퍼티 액션 태그 

<jsp:setProperty> 

setter를 대신하는 태그 

겟프로퍼티 액션 태그 

<jsp:getProperty> 

getter를 대신하는 태그 


[ 인클루드 액션 태그와 인클루드 디렉티브 태그 비교 ]


항목 

인클루드 액션 태그 

인클루드 디렉티브 태그 

기능 

JSP 레이아웃 모듈화 

JSP 레이아웃 모듈화 

처리 시간 

요청 시간에 처리 

JSP를 자바 코드로 변환 시 처리 

데이터 처리 방법 

param 액션 태그를 이용해 동적 처리 가능 

정적 처리만 가능 

포함된 JSP 자바 파일 변환 여부 

포함되는 JSP가 각각 자바 파일로 생성 

포함되는 JSP가 포함하는 JSP에 합쳐진 후 한개의 자바 파일로 생성 


[ 인클루드 액션 태그 ]


1
2
3
<jsp:include page="jsp페이지" flush="true or false">
    ....
</jsp:include>



[ 포워드 액션 태그 ]


- RequestDispatcher를 사용하지 않고 자바 코드 없이 포워딩 할 수 있는 액션 태그


1
2
3
4
5
6
7
<jsp:forward page="포워딩할 JSP 페이지">
    ...
</jsp:forward>
 
 
<!-- 태그 안에 param 태그를 사용하여 에러 메시지등의 값을 표현할 수 있다.
    <jsp:param name="aaa" value="<%=aaa%>" />




[ useBean ]


- 자바 코드로 이루어진 자바 빈을 자주 사용하면 화면이 복잡해지기에 이런 단점을 보완하기 위해 탄생

- 자바 코드를 사용하지 않고 JSP 페이지에서 처리할 수 있기에 효율적임


1
2
3
<jsp:useBean id = "빈 이름" class="패키지 이름을 자바 빈 클래스" scope = "접근범위"  />
 
<!-- scope의 기본값은 page 범위는(page, request, session, application 을 가진다)





[ setProperty / getProperty ]


이름 

정의 

형식 

setProperty 

useBean의 속성에 값을 설정하는 태그 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<jsp:setProperty name="자바빈 이름"    
                 property="속성 이름" 
                 value="값"
                 param = "파라미터 전달 이름"
/>
                 
 
name: <jsp:useBean>액션 태그의 id 속성에 지정한 이름
property : 값을 설정할 속성 이름(*로 받아오기 가능)
value : 속성에 설정할 속성
param : form 태그에서 전달된 매개변수 이름과 속성 이름이 
        같으면 같은 이름으로 값을 설정
 



getProperty 

useBean의 속성 값을 얻는 태그 

 

1
2
3
4
5
<jsp:getProperty name="자바빈 이름"
                 property = "속성 이름" />
 
name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름
property : 값을 얻을 속성 이름








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

<a> 태그를 이용한 서블릿,JSP 요청 방법  (0) 2020.02.25
표현 언어  (0) 2020.02.25
JSP 에러 처리 페이지  (0) 2020.02.24
JSP 내장 객체(and 스코프)  (0) 2020.02.24
JSP 주석  (0) 2020.02.23

[방법]


● JSP의 디렉티브 속성의 isErrorPage, errorPage 속성을 이용하여 Error페이지 설정을 해주는 방법


- 결과가 나오는 jsp파일에 errorPage 속성으로 에러 페이지 출력하는 jsp를 명시


1
2
3
4
<%@ page language = "java" contentType="text/html; charset=utf-8"
         pageEncoding = "utf-8" 
         errorPage = "에러처리jsp"
%>



- 에러 페이지 jsp는 isErrorPage 속성을 true로 해주고 예외처리 코드를 작성


1
2
3
4
<%@ page language = "java" contentType="text/html; charset=utf-8"
         pageEncoding = "utf-8" 
         isErrorPage = "true"
%>



● Web.xml에 xml로 각각의 에러 코드에 대한 예외 처리 페이지를 지정하는 방법


1
2
3
4
5
6
7
8
9
<error-page>
    <error-code>에러코드1</error-code>
    <location>에러 페이지 jsp파일</location>
</error-page>
 
<error-page>
    <error-code>에러코드2</error-code>
    <location>에러 페이지 jsp파일</location>
</error-page>




한개의 JSP페이지에서 페이지 디렉티브 errorPage 속성과 web.xml이 같이 지정되어 있으면 페이지 디렉티브의 errorPage가 우선적으로 나타남

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

표현 언어  (0) 2020.02.25
JSP 액션태그  (0) 2020.02.25
JSP 내장 객체(and 스코프)  (0) 2020.02.24
JSP 주석  (0) 2020.02.23
JSP 스크립트 요소  (0) 2020.02.23

[ 내장 객체(내장 변수) ]


- JSP가 서블릿으로 변환될 때 컨테이너가 자동으로 생성시키는 멤버 변수

- 서블릿으로 구현 시 자주 사용했던 객체를 개발자가 일일이 만드는 것이 아니라 서블릿으로 변환 시 컨테이너가

  자동으로 생성하여 사용하게끔 제공하는 것.


< 내장 객체 >

내장 객체 

서블릿 타입 

설명 

request 

javax.servlet.http.HttpServletRequest 

클라이언트의 요청 정보를 저장 

response 

javax.servlet.http.HttpServletResponse 

응답 정보를 저장 

out 

javax.servlet.jsp.JspWriter 

JSP 페이지에서 결과를 출력 

session 

javax.servlet.http.HttpSession 

세션 정보를 저장 

application 

javax.servlet.ServletContext 

컨텍스트 정보를 저장 

pageContext 

javax.servlet.jsp.PageContext 

JSP 페이지에 대한 정보를 저장 

page 

java.lang.Object 

JSP 페이지의 서블릿 인스턴스를 저장 

config 

javax.servlet.ServletConfig 

JSP 페이지에 대한 설정 정보 저장 

exception 

java.lang.Exception 

예외 발생 시 예외 처리 


< 내장 객체 스코프 >

내장 객체 

서블릿 

스코프 

page 

this 

한 번의 요청에 대해 하나의 JSP 페이지를 공유 

request 

HttpServletRequest 

한 번의 요청에 대해 같은 요청을 공유하는 JSP 페이지를 공유 

session 

HttpSession 

같은 브라우저에서 공유 

application 

ServletContext 

같은 애플리케이션에서 공유 


※ 내장객체 스코프의 우선순위는 page > request > session > application


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

JSP 액션태그  (0) 2020.02.25
JSP 에러 처리 페이지  (0) 2020.02.24
JSP 주석  (0) 2020.02.23
JSP 스크립트 요소  (0) 2020.02.23
JSP 디렉티브  (0) 2020.02.23


[ HTML 주석 ]


1
<!-- html 주석문 -->



[ JAVA 주석 ]


1
<%  /* java주석문 */   %>



[ JSP 주석 ]


1
<%-- JSP 주석문  --%>















































[출처] 이병승, 자바 웹을 다루는 기술, 길벗, 2019년 1월 7일 421~422Page 인용

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

JSP 에러 처리 페이지  (0) 2020.02.24
JSP 내장 객체(and 스코프)  (0) 2020.02.24
JSP 스크립트 요소  (0) 2020.02.23
JSP 디렉티브  (0) 2020.02.23
서블릿의 포워드 방법  (0) 2020.02.18


[ 스크립트 요소(Scripting Element) ]


- JSP 페이지에서 여러 동적인 처리를 제공하는 기능

- 브라우저로 전송되지 않고 브라우저로 전송되기 전에 컨테이너에서 서블릿 자바코드로 변환

- 선언문, 스크립트릿, 표현식


[ 선언문 ]


- JSP에서 변수나 메서드를 선언할 때 사용


1
<%! 멤버 변수 or 멤버 메서드 %>



[ 스크립트릿 ]


- 자바 코드를 이용해 화면의 동적인 기능을 구현

- 현재의 JSP에는 사용되지 않음


1
<% 자바 코드 %>



[ 표현식 ]


- JSP 페이지의 정한 위치에 값을 출력하는 기능

- 자바 변수나 자바식에는 ;(세미콜론)을 붙이지 않음


1
<%= 값 or 자바 변수 or 자바 식 %>




























[출처] 이병승, 자바 웹을 다루는 기술, 길벗, 2019년 1월 7일 412~421Page 인용






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

JSP 내장 객체(and 스코프)  (0) 2020.02.24
JSP 주석  (0) 2020.02.23
JSP 디렉티브  (0) 2020.02.23
서블릿의 포워드 방법  (0) 2020.02.18
MVC패턴  (0) 2019.04.11


[ 디렉티브 종류 ]


1. 페이지 디렉티브 태그( Page Directive Tag)

- JSP 페이지의 전반적인 정보를 설정할 때 사용


1
<%@ page 속성1="값" 속성2="값" 속성3="값".... %>



2. 인클루드 디렉티브 태그 ( Include Directive Tag)

- 공통으로 사용하는 JSP 페이지를 다른 JSP페이지에 추가할 때 사용


1
<%@ include file="공통기능.jsp" %>



3. 태그라이브 디렉티브 태그 ( Taglib Directive Tag)

- 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용



[ 페이지 디렉티브 ]


속성 

기본값 

설명 

info 

없음 

페이지를 설명해 주는 문자열 지정 

language 

"java" 

JSP 페이지에서 사용할 언어 지정 

contentType 

"text/html" 

JSP 페이지 출력 형식 지정 

import 

없음 

JSP 페이지에서 다른 패키지의 클래스를 import할 때 지정 

session 

"true" 

JSP 페이지에서 HttpSession 객체의 사용 여부를 지정 

buffer  

"8kb" 

JSP 페이지에서 출력 시 사용할 버퍼 크기를 지정 

autoFlush 

"true" 

JSP 페이지의 내용이 출력되기 전 버퍼가 다 채워질 경우 동작을 지정 

errorPage 

"false" 

JSP 페이지 처리 도중 예외가 발생할 경우 예외 처리 담당 JSP 페이지를 지정 

isErrorPage 

"false" 

현재 JSP가 예외 처리 담당 JSP 페이지인지를 지정 

pageEncoding 

"ISO-8859-1" 

JSP 페이지에서 사용하는 문자열 인코딩을 지정 

idELIgnored 

"true" 

JSP 2.0 버전에서 추가된 기능으로 EL 사용 유무를 지정 


[ 인클루드 디렉티브 ]


<특징> 

- 재사용성이 높다.

- JSP 페이지의 유지관리가 쉽다.

























[출처] 이병승, 자바 웹을 다루는 기술, 길벗, 2019년 1월 7일 398~409 Page 인용

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

JSP 주석  (0) 2020.02.23
JSP 스크립트 요소  (0) 2020.02.23
서블릿의 포워드 방법  (0) 2020.02.18
MVC패턴  (0) 2019.04.11
FrontController 패턴 & Command 패턴  (0) 2019.04.11


● Redirect 방법


- HttpServletResponse 객체의 senRedirect()메서드를 이용.

- 웹 브라우저에 재요청하는 방식


1
sendRedirect("포워드할 서블릿 or JSP");


 


● Refresh 방법


- HttpServletResponse 객체의 addHeader() 메서드 이용

- 웹 브라우저에 재요청하는 방식


1
1 response.addHeader("Refresh","경과시간(초);url=요청할 서블릿 or JSP"



● location 방법


- 자바스크립트 location객체의 href 속성을 이용

- 자바스크립트에서 재요청하는 방식


1
location.href='요청할 서블릿 or JSP';



● dispatch 방법


- 일반적으로 포워딩 기능을 지칭

- 서블릿이 직접 요청하는 방법

- RequestDispatcher 클래스의 forward()메서드를 이용


1
2
RequestDispatcher dis = request.getRequestDispatcher("포워딩할 서블릿 or JSP");
dis.forward(request,response);




redirect, refresh, location 방법은 서블릿이 웹 브라우저를 거쳐 다른 서블릿이나 JSP에게 요청하는 방법이고, dispatch 방법은 서블릿에서 클라이언트를 거치지 않고 바로 다른 서블릿에게 요청하는 방법.




[출처] 이병승, 자바 웹을 다루는 기술, 길벗, 2019년 1월 7일 263 Page 인용


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

JSP 스크립트 요소  (0) 2020.02.23
JSP 디렉티브  (0) 2020.02.23
MVC패턴  (0) 2019.04.11
FrontController 패턴 & Command 패턴  (0) 2019.04.11
EL(Expression Language)  (0) 2019.03.17

[ MVC패턴]

:: 프로젝트에서 가장 많이 쓰이는 패턴

:: model, view, controller의 용어를 뜻하며 개발 형태의 일종

:: 작업을 분할하여 유지보수를 원활하게 할 수 있다.


< model >

:: 데이터베이스와의 관계를 담당하며, 클라이언트의 요청에서 필요한 자료를 데이터베이스로부터 추출하거나 수정하여 Controller로 전달한다.

:: 주로 java파일로 운용


< view >

:: 사용자한테 보여지는 화면으로 주로 .jsp파일로 작성하며, Controller에서 어떤 View 컴포넌트를 보여줄지 결정한다.

:: 주로 .jsp로 만드는 이유는 html 코드안에 jsp태그가 틀어가기 때문에 화면구성이 쉽다.


< controller >

:: 클라이언트의 요청을 받아 적절한 Model에 지시를 내리고, Model에서 전달된 데이터를 적절한 View에 전달한다.

:: 주로 java파일로 운용




[ Model 1 ]

:: View와 Controller가 같이 있는 형태

:: 주로 유지보수가 많이 필요없고 소규모 프로젝트에 사용한다.



[ Model 2 ]

:: 가장 많이 사용하는 형태로 Model, View, Controller가 모두 모듈화 되어 있는 형태다.

:: 후에 유지보수하기에 좋다.



[ 전체적인 컴포넌트 설계 ]





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

JSP 디렉티브  (0) 2020.02.23
서블릿의 포워드 방법  (0) 2020.02.18
FrontController 패턴 & Command 패턴  (0) 2019.04.11
EL(Expression Language)  (0) 2019.03.17
파일 업로드  (0) 2019.03.17

[ url-pattern ]


< 디렉터리 패턴 >

:: 디렉터리 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조


☞ 예시

:: http://localhost:8888/jsp_21_1_ex1_memberex/Hello -------> /Hello 서블릿

:: http://localhost:8888/jsp_21_1_ex1_memberex/World -------> /World 서블릿 



< 확장자 패턴 >

:: 확장자 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조


☞ 예시

:: http://localhost:8888/jsp_21_1_ex1_memberex/hello.do   -------> *.do서블릿

:: http://localhost:8888/jsp_21_1_ex1_memberex/world.do  -------> *.do서블릿



[ FrontController 패턴 ]

:: 클라이언트의 다양한 요청을 한곳으로 집중시켜, 개발 및 유지보수에 효율성을 극대화 할 수 있다.


<기존 요청>

< FrontController 패턴의 요청>

[ Command 패턴 ]

:: 클라이언트로부터 받은 요청들에 대해, 서블릿이 작업을 직접 처리하지 않고 해당 클래스가 처리하도록 함


< FrontControoler 패턴 요청>

< Command 패턴 요청 >


 





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

서블릿의 포워드 방법  (0) 2020.02.18
MVC패턴  (0) 2019.04.11
EL(Expression Language)  (0) 2019.03.17
파일 업로드  (0) 2019.03.17
커넥션 풀  (0) 2019.03.13

+ Recent posts