JSP : JAVA Server Page
- html, css와 자바스크립트를 기반으로 jsp 요소들을 사용해 화면을 구현하는 것
- 구성 요소 : jsp 기본 태그, jsp 액션 태그, 커스텀 태그
- jsp는 요청 시 톰캣 컨테이너에서 자동으로 jsp파일에 있는 html태그와 자바스크립트를 브라우저로 전송해 준다.
■ 디렉티브 태그
- 페이지 디렉티브 태그(PDT) : jsp페이지의 전반적인 정보를 설정한다.
- 인클루드 디렉티브 태그 : 공통적으로 사용하는 jsp페이지를 다른 jsp 페이지에 추가할 때 사용한다.
- 태그라이브 디렉티브 태그 : 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용한다.

페이지 디렉티브 태그 : <%@ page %> 안에 속성과 값을 나열한다. ex) 속성1="값1"
* import 속성을 제외한 다른 속성은 반드시 단 한번만 선언해야 한다. 또한, 대소문자를 정확히 사용해야 한다.
langane : JSP 페이지에서 사용할 언어
session : 세션객체 사용 여부
buffer : 페이지 출력 시 사용할 버퍼 크기
autoFlush : 버퍼가 다 채워졌을 경우 동작 지정
errorPage : 예외가 발생할 경우 예외 처리 담당 JSP 페이지 지정
isErrorPage : 현재 JSP 페이지가 예외 처리 담당 JSP 페이지인질르 지정
info : 페이지를 설명해주는 문자열 지정
인클루드 디렉티브 태그 : JSP페이지에서 사용되는 공통 JSP 페이지를 만든 후, 다른 JSP 페이지에서 공통 SJP 페이지를 포함시켜 사용하는 기능. <%@ include file="공통기능.jsp" %>

이미지 폴더를 만들어 내가 사용할 이미지 파일을 붙여넣기 하고, 이미지 경로를 알려주는 duke_image.jsp를 만든다.
그리고 include file 태그를 사용해 포함시켜주면..


성공적으로 나옴! 이미지는 몬생긴 울고양이 ㅎㅎ
JSP 스크립트 요소 : 동적인 처리를 제공하는 기능. <% %> 안에 자바 코드로 구현한다. 이 기호를 '스크립트릿'이라고 부른다. 이 기호 안에는 오직 자바 코드만 작성할 수 있다. 또한, 이 태그 안에는 세미콜론(;) 이 존재하면 안된다. 스크립트 요소는 브라우저로 전송되지 않으며 서블릿의 자바 코드로 변환된다. 스크립트릿 안에 들어있는 코드들은 모두 자바 코드이므로 주석 또한 /* */ 으로 작성한다.
- 선언문 : 변수나 메서드 선언 시 사용 <%! %>
- 스크립 트릿 : 자바 코드 작성할 때 사용 <% %>
- 표현식 : 변수 값 출력 시 사용, <%= %>
* jsp 페이지 주석문 : <%-- --%>
* html 태그 주석문 : <!-- --!>
로그인창으로 실습해본다. 먼저 간단한 login.html을 만들고,

결과창을 만든다. <%@ %> 에 디렉티브 태그를 작성하고, <% 스크립트릿 %> 을 사용해 자바문으로 유저 id와 pw를 받아온다. if문을 사용해 만약 id가 null 이라면 아이디를 입력하라는 문구와 함께 로그인 창으로 이동하는 링크를, 그렇지 않다면 아이디가 admin인지를 검사한다. 아이디가 admin이라면 관리자 로그인 확인 페이지와 함께 표현식으로 아이디와 비밀번호를 출력하고, 그렇지 않다면 유저 id와 함께 환영문구를 출력한다.


스크립트릿 image 폴더 이미지 for문 이용해 리스트 형식<li> 태그로 출력하는 예제


request 내장 객체에 데이터 바인딩. JSP에서는 자동으로 내장 객체를 생성해주므로 getAttribute()메서드만으로도 바인딩된 값을 가져올 수 있다.



JSP 페이지 예외 처리하기. errorPage에 예외가 발생하면 표시할 jsp 페이지를 입력한다. 그다음 실제 예외를 처리하는 jsp를 작성하는데, 이 때 isErrorPage에 true를 할당하여 이 jsp가 예외를 처리하는 페이지임을 알린다.


또한 404, 500같은 자주 발생하는 오류 처리를 web.xml에 등록하여 예외 처리 페이지를 지정할 수도 있다.



스크립트 요소 이용해 회원 정보 조회하기
먼저 라이브러리 설치를 잊으면 안된다..(이것때문에 고생함 바보)

search.jsp를 작성한다. 입력한 값이 name 속성으로 member.jsp에 포워딩되도록 할 것이다.

member.jsp를 작성한다. 전송된 값을 가져온 후, DAO 객체를 생성하고 VO객체를 실어 보내는데, 이때 listMembers()메서드를 호출해 이름에 대한 정보를 조회한다. 그리고 조회한 정보를 for 반복문을 통해 출력한다.

DAO를 작성한다.
먼저 _name에 getName()를 통해 조회할 이름을 가져온다. 으기로 만약 _name값이 존재하면 SQL문에 where절을 추가하여 해당 이름으로 조회한다. _name값이 없으면 모든 회원 정보를 조회한다.

홍길동을 조회한 모습.

액션 태그
- 자바 빈 : 데이터를 저장하거나 전달하는 데 사용한다. 자바의 DTO(데이터 전송 객체) 클래스, VO 클래스와 같은 개념이라고 할 수 있다.
> 접근 제한자는 private.
> 각 속성은 각각의 setter / getter을 가지며, 이들의 이름의 첫 글자는 반드시 소문자이다.
> 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있다.
■ 자바 빈을 이용한 회원 정보 조회
1. memberForm.html에서 가입자의 정보를 받는다.
2. 받은 정보를 member.jsp로 전송한다.
3. member.jsp는 전송된 회원 정보를 가져와 MemberBean 객체를 생성한 후, 해 당 멤버빈 객체의 속성에 회원 정보를 설정한다.
4. DAO 객체를 만들어, addMember에 멤버빈 객체를 실어 보내 회원 정보를 테이블에 추가한다.
List memberList=memberDAO.listMembers(); 로 전체 회원 정보를 조회한다.
1. 우선 sql devloper을 켠다. 만들어놓은 테이블 컬럼명들은 ID, PWD, NAME, EMAIL, JOINDATE이다.

2. 이 테이블 컬럼명을 그대로 사용하여 MemberBean 클래스를 작성한다. 인자가 네 개인 생성자를 추가하고, getter/setter도 만든다. (get은 return)

3. 회원가입창인 memberFrom.html을 만든다.

4. 전송되어져 온 정보를 받아 멤버빈 객체를 생성하는 member.jsp를 만든다. List를 사용해 조회한 정보를 하나씩 순차적으로 출력한다.

5. DAO를 작성한다. addMember() 메서드 호출 시, MemberBean 객체로 전달된 회원 정보를 getter를 이용해 가져온 후, insert문을 이용해 추가한다.
String query = "select * from t_member order by joinDate desc "; // 회원 정보를 최근 가입일 순으로 조회한다.(desc는 내림차순)
그리고 조회한 회원 정보를 MemberBean 객체의 속성에 저장한 후, 다시 배열 리스트에 저장한다.
addMember에 MemberBean에 저장된 회원 정보를 전달하면, 우선 getter을 이용해 회원 정보를 가져온 후, insert문을 이용해 실제 오라클 테이블에 회원 정보를 추가한다.

가입창에 chali를 입력하고 가입하기를 누르면..

성공적으로 조회된 창이 뜬다.

아까 만들었던 스크립트 요소 회원 정보 페이지에서 모든 정보를 조회하면 뜨는 화면.

■ 유즈빈 액션 태그를 이용한 회원 정보 조회
유즈빈 액션 태그 : 자바빈을 대체하기 위한 태그.
<jsp:useBean id="빈 이름" class="패키지 이름을 포함한 자바 빈 클래스 [secpe="접근범위"]/>
jsp:useBean 태그를 사용해 빈 객체를 생성하고, 얻어온 정보들을 바로 빈 객체에 할당해 DAO로 전송한다.

결과는 똑같음!

이제 setter와 getter을 사용하지 않고 액션 태그 setProperty, getProperty 액션태그를 이용하여 회원 정보를 조회해본다.
-setProperty : <jsp:setProperty name="자바 빈 이름" property="속성 이름" value="값" />
-getProperty : <jsp:getProperty name="자바 빈 이름" property="속성 이름" >
우선, 회원가입 창에서 name 속성을 자바 빈 속성값과 똑같이 만든다.

setProperty 액션 태그의 property 속성에 *을 지정하면, JSP페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 같은 이름의 속성 이름에 전달된 값을 알아서 설정해준다. 그 뒤 getProperty를 사용해 값을 바로 출력한다.
참고로 MemberBean은 아까 만들었던 것을 경로로 사용한다.

test 계정을 입력하고 가입하기를 누르면, 성공적으로 테이블에 추가됨과 동시에 조회된다.


'JAVA SPRING' 카테고리의 다른 글
| HTML5 와 제이쿼리 (0) | 2021.07.28 |
|---|---|
| JSTL (0) | 2021.07.27 |
| 서블릿 확장 API, 쿠키와 세션, 필터와 리스너 (0) | 2021.07.23 |
| 서블릿 - get, post, @WebServlet, 비즈니스 로직 처리(DAO, VO, 커넥션풀) (0) | 2021.07.23 |
| HTTP method, MY Batis 실습 (0) | 2021.07.19 |