| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 실무
- springboot
- transactional
- simplejpaRepository
- Hexagonal
- Layered Architecture
- JPA
- Spring
- Adapter
- hexagonal architecture
- Transaction
- JDBC
- Spring Data JPA
- Today
- Total
Ezcho
jsp 작성법 본문
JSP란 HTML 코드내에서 자바를 쓸수있음. 굿
서블릿 컨테이너에서 관리되는 내장객체의 생명주기를 이용하여 페이지간 속성관리
커스텀 태그 기술을 사용하여 코드를 태그화함
EL을 통해 데이터를 표현함
JSP구성요소
1. 지시어
2. 액션
3. 템플릿 데이터
4. 스크립트 요소
5. 커스텀 태그
JSP 동작과정
hello.jsp
1. 클래스변환되는게 있는가 -> 없으면 자바소스로 변환
2. 있으면 메모리 실행 여부 확인 -> 없으면 자바 클래스로 컴파일 -> 이후 요청대기상태에 올리기위해 init()
3. 있으면 Ready상태로 들어가서 요청대기 -> Service() 상태 -> Ready상태 ... 반복
4. Destroy()로 종료
JSP 장점
1. HTML 파일에 자바기술을 거의 무한대로 사용가능
2. 커스텀 태그 라이브러리등 확장 태그 구조 사용가능
3. 서블릿으로 변환되어 실행되므로 서블릿의 장점도 가짐
4. 개발생산성 향상, 성능 보장
JSP단점
1. JSP -> 자바 -> 클래스 -> 서블릿의 실행 과정을 거치니까 시간이 소요됨
2. 개발자와 디자이너간 JSP공유가 잦으니 역할분담에 제약이이음
3. JSP 화면 디자인 확인에도 서블릿컨테이너가 반드시 실행되어야하니..(FE, BE)..
JSP 지시어
<% @지시어 속성 = "값" %>
JSP 지시어 - page 지시어
<% page
language = "java" contentType = "text/html; charset = UTF-8"
import = "java.util.*" errorPage = "error.jsp pageEncoding = "UTF-8"
%>
속성정리
language: 스크립트언어
contentType: 파일형식 지정
pageEncoding: JSP를 컨테이너가 처리할때 사용하는 캐릭터인코딩
import: 자바코드를 사용하는경우 클래스에 대한 패키지 Import
errorPage: 에러를 별도의 페이지에서 처리 -> 권장방법 아님
includ 지시어
jsp 내에 특정 파일을 불러오기 위해 사용됨, html이나 jsp를 불러올수있음
include 파일내용 전부 서블릿으로 컴파일함
<% include file="위치" %>
taglib 지시어
1. uri: .tld 파일 경로
2. tagdir: 태그 파일 경로
3. prefix: 구분해서 사용하려는 접두어
WEB-INF/tags 폴더에있는 printData.tag 파일에 태그에서 처리할 내용이 작성되어있음
<%@ taglib tagdir="/WEB-INF/tags" prefix="m" %>
태그종류들
<%! //선언태그
JSP 가 서블릿으로 변환될 떄 jspService() 메서드 안에 들어가게 되므로.
JSP에서는 일반 자바 코드와 달리 멤버 변수와 메서드 선언은 불가능함
<%= //표현태그
클라이언트에게 전달될 자바 표현식
<%= member.getUserName() %>
<% //스크립트 태그
모든 자바코드 사용가능
서블릿 코드로 변환될 때 모든 HTML은 out.write() 형태로 변환
HTML과 스크립트릿 중간을 섞는것도 가능
MVC 패턴 적용과 JSTL + EL 로 대체 가능
예제 -로그인페이지에서 입력한 이름을 가져와 화면에 출력한다음 사용자 목록을 출력하는 JSP 코드
<% String name = request.getParameter("name"); %>
<h2> <%=name%> </h2> //클라이언트에게 name 직접전달
<table>
<%for(Member m : mlist){ %>
<tr>
<td> <%=m.name></td>
<td> <%=m.email></td>
<%}>
</table>
를 아래와 같이 out.println()으로 쓸 수 있음
<table>
<%
for(Member m: mlist){
out.println("<tr><td>"+m.name+"</td><td>"+m.email+"</td></tr>"); //작성구조 뒤집기 out.println()
}
%>
</table>
실습