본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 59일차(이어서 표현언어(요청파라미터 처리, null, 비교연산자, 정수형, 내장객체 접근, MVC Model, JTSL))

[표현언어로 요청 파라미터 처리하기]

1. 표현 언어에서 요청 파라미터 관련 내장 객체

내장 객체 설명
param JSP의 내장 객체인 request의 getParameteR()와 동일한 역할인
파라미터 값을 알려줌
paramValues 동일한 이름으로 전달되는 파라미터값들을 배열형태로 얻어오는데
사용하는 request의 getParameterValues()와 동일한 역할

${param.id} == ${param["pwd"]

<c:forEach items="${paramValues.season}" var="season">

${season}

</c:forEach>

loginForm

testLogin,

[null 값 처리 비교]

EL식은 null 이 아니라, " " 로 보여주고 있다.

[ == 비교 연산자]

1. 자바

1) 수치형 데이터 : 값을 비교

2) 객체 : 주소값 비교

3) 객체의 값을 비교하기 위해서는 equals() 메소드 사용

2. JSP EL

1) 객체에 저장된 값을 비교

연산자 사용결과문은 주소가 서로 달라서 false이고

equals() 사용 결과는 값이 같아서 true이나, id를 입력하지 않으면 null이다. 그래서 오류가 났다.

이렇게 고치면 오류가 안난다.

EL식 연산자 사용결과

[정수형 입력 파라미터 처리]

EL이 간단하다.

[표현 언어로 내장객체 접근하기]

Category 내장 객체 설명
범위 pageScope page 기본 객체에 저장된 속성의 <이름, 값> 매핑을
저장한 Map 객체
requestScope request 기본 객체에 저장된 속성의 <이름, 값> 매핑을 저장한 Map 객체
sessionScope session 기본 객체에 저장된 속성의 <이름, 값> 매핑을 저장한 Map 객체
applicationScope application 기본 객체에 저장된 속성의 <이름, 값>
매핑을 저장한 Map 객체

1. MVC Model

1) Model 1 구조

(1) JSP를 이용한 단순한 모델

(2) JSP에서 요청 처리 및 뷰 생성 처리

ㄱ) 구현이 쉬움

ㄴ) 요청 처리 및 뷰 생성코드가 뒤섞여 코드가 복잡함

2) Model 2 구조

(1) 서블릿이 요청을 처리하고 JSP가 뷰를 생성

(2) 모든 요청을 단일 서블릿에서 처리 : 요청 처리 후 결과를 보여줄 JSP 로 이동

(3) MVC 패턴을 이용해서 웹 애플리케이션을 구현할 때 사용

MVC Model 2 : Servelet이 요청을 처리

MVC Model 2 : JSP가 뷰

2. JSP 내장 객체와 표현 언어의 내장 객체의 관계

3. 표현 언어의 내장 객체 명시적으로 사용하기

[표현 언어를 사용한 회원정보 저장]

1. 구성

1) MemberBean.java : 회원의 정보를 저장하는 자바 빈

2) MemberServlet.java : 회원정보를 저장한 자바 빈 객체를 생성

3) 09_el.jsp : 회원정보를 브라우저로 출력

MemberBean

MemberServlet

09_el

[JSTL (JSP Standard Tag Library)

1. JSP에서 사용 가능한 표준 태그 라이브러리

2. JSTL을 사용하는 이유 : 가독성 높음, 자바문법 몰라도 사용가능

3. 커스텀 태그 (Custom Tag)

1) JSP 에서는 복잡한 스크립트릿과 자바코드를 간결하고 이해하기 쉬운 태그를 만들어 사용할 수 있도록 함

2) 기본적으로 제공하는 것이 아닌 자신이 추가한 태그

3) JSP를 작성할 때 자주 사용되는 자바 코드를 웹에서 사용할 수 있는 태그 형태로 만드는 기술

4. JSTL

1) 커스텀 태그들을 개별적으로 만들어 쓰다 보니 일관성이 없어서 이를 표준화한 것

2) 공통으로 사용되는 코드의 집합

3) JSP 페이지 안에서 사용할 수 있는 커스텀 태그를 제공

5. JSTL core 라이브러리의 종류

1) <c:set> 태그

(1) 해당 범위(scope) 내에 Attribute 를 생성하고 Attribute 값을 지정

<c:set var="msg" value="Hello" scope="page"/>

pageContext.setAttribute("msg", "hello"); 에 대응

(2) 기본 형식

<c:set var="변수이름" value="저장할값" [scope="{page|request|session|application}"]/>

ㄱ) var : 변수 이름을 String 형으로 지정

ㄴ) value : 변수에 저장할 값

ㄷ) scope : default page, 생략가능

(3) <c:set> 태그를 사용하여 자바 빈 객체 생성하기

<c:set var="member" value="<%=new com.saeyan.javabeans.MemberBean() %>" />

 

MemberBean member = new MemberBean();

<jsp:useBean id="member" class="com.saeyan.javabeans.MemberBean" /> 과 대응

(4) 프로퍼티 값 저장하기

<c:set target="${member}" property="name" value="홍길동" />

<jsp:setProperty name="member" property="name" value="홍길동" /> 과 대응

2) <c:remove> 태그

(1) JSP의 removeAttribute() 와 같은역할

(2) 해당 scope 에 있는 변수를 제거하는 역할

(3) 형식

<c:remove var="변수이름" [scope="{page|request|session|application}"] /

예시 : <c:remove var="age" />

3) <c:if> 태그

(1) 자바의 if 문과 비슷한 기능을 제공

(2) else, else if와 같은 구문은 제공하지 않으며, 오직 <c:if> 만 제공

(3) <c:choose>, <c:when>, <c:otherwise>태그를 사용하면 가능

(4) 기본 형식

<c:if test="조건식">

조건이 참일 경우 실행할 문장

</c:if>

<c:if> 태그로 색상선택하기

4) <c:choose> 태그

(1) 자바의 if, else if, else 와 같은 형태의 조건문 제공

시간이 없는 관계로... 후의 복습예시들은 예시코드로 사진으로 대체합니다 ㅠㅠ.. 오늘 진도가 빨랐네요.

5) <c:forEach> 태그

(1) 배열 (Array)이나 컬렉션(Collection) 또는 맵(Map)등과 같은 집합체에 저장되어 있는 값들을 순차적으로

처리할 때 사용하는 태그

(2) 기본 형식

<c:forEach [var="변수이름"] items="배열과 같은 집합체">

몸체

</c:forEach>

ㄱ) var="변수이름" : 몸체에서 변수로 사용

6) <c:forEach> 태그의 varStatus 속성

(1) 배열이나 컬렉션과 같은 집합체에서 항목의 인덱스 값을 사용해야 할 경우 사용하는 속성

프로퍼티 설명
index items에 지정한 집합체의 현재 반복 중인 항목의 index를 알려준다.
0부터의 순서가 부여된다.
count 루핑을 돌 때 현재 몇 번째를 반복중인지 알려준다.
1부터의 순서가 부여된다.

index는 0부터, count는 1부터 시작하는 걸 볼 수 있다.

프로퍼티 설명
first 현재 루프가 처음인지 여부를 알려준다.
첫번째일 경우에는 true를 아니면 false를 되돌린다.
last 현재 루프가 마지막인지 여부를 알려준다.
마지막일 경우에는 true를 아니면 false를 되돌린다.

7) <c:forEach> 태그 begin, end, stpe 속성

(1) 자바의 for문과 유사한 사용법 제공

<c:forEach [var="변수이름"] begin="시작값" end="끝값" [step="증가치"]>

몸체

</c:forEach>

속성 설명
begin 반복에 사용될 것 중 첫 번재 항목의 index
end 반복에 사용될 것 중 마지막 항목의 Index

8) <c:forTokens> 태그

(1) 문자열을 구분자로 분리해서 하나씩 추출

(2) 형식

<c:forTokens var="토큰을저장할변수" items="토큰으로나눌문자열" delims="구분자">

몸체

</forTokens>

[URL 관련 태그]

1. import : 외부/내부 페이지를 현재 위치에 삽입

1) 상대 경로 URL import 시 <jsp:include>와 동일하게 동작

2) 내요을 변수에 저장할 수 있는 점이 차이점

<c:import url="URL" [var="변수명"] [scope="영역"] [charEncoding="캐릭터셋"]>

<c:param name="파라미터이름" vlaue="값"/>

</c:import>

2. url : 절대 경로 URL과 상대 경로 URL을 알맞게 생성

1) 웹 컨텍스트 내에서 절대 경로 사용 시 컨텍스트 경로 자동 추가

<c:url value="URL" [var="변수명] [scope="영역"]>

<c:param name="파라미터 이름" value="값">

</c:url>

3. redirect : 지정한 페이지로 리다이렉트

1) resopnse.sendRedirect(주소) 메소드와 동일한 기능 제고

<c:redirect url="URL" [context="컨텍스트 경로"]>

<c:param name="파라미터이름" value="값"/>

</c:redirect>