New World
[JSP 공부 #1] JSP 액션 태그 본문
JSP 액션 태그
웹 어플리케이션 순서
1. 브라우저에서 HTTP를 요청
2. 웹 서버에서 html 파일, 이미지 파일 등에 연결
3. 웹 서버에서 브라우저가 요청한 것을 확인하여 웹 앱 서버로 가져감
4. 웹 앱 서버를 통해 내장 객체를 생성하여 JSP 객체로 전달
5. 웹 서버에서 요청한 HTTP에 대한 응답
JSP 파일의 변천
작성 -(.jsp)-> 번역 -(.java)-> 컴파일 -(.class)-> 로드 되고 초기화 (_jsp(servlet))
JSP 처리 (=> import 실수를 조심하자)
jsp 파일 내 코드
<% out.println(Counter.getCount()) %>
java 내 코드
<% out.println(패키지명.Counter.getCount());%>
page 지시자로 import 하기
단일 import
<%@ page import="패키지명.*" %>
다중 import
<%@ page import="패키지명.*, java.import할 것" %>
print()함수와 Expression 함수 차이
Expression는 더 짧은 문장으로 처리가 가능하다 (Expression > print())
ex) getCount()
Scriptlet의 print() 함수 내 코드
<% out.println(Counter.getCount()); %>
Expression 코드
<%= Counter.getCount(); %>
선언(Declaration)
jsp 내에서 => <%! int count = 0; %>
servlet 내에서 => int count =0;
jsp 내에서
<%! int doubleCount(){
count = count*2;
return count;
} %>
servlet 내에서
int doubleCount(){
count = count*2;
return count;
}
선언은 jsp 내의 <%! 선언문 %>이 servlet에서는 선언문만 쓰인다고 생각하면 쉽다
액션 태그의 유형
XML 스타일의 태그로 기술: 특정한 동작 기능을 수행
<jsp:태그 키워드 태그 속성 = "태그값" />
ex) <jsp:include page="sub.jsp">
액션 태그에서 매개변수 지정
시작 태그와 종료 태그 사이에 <jsp:param .../>과 같은 param 태그를 기술
<jsp:태그 키워드 태그 속성="태그값">
매개 변수 지정과 같은 다른 내용
</jsp:태그 키워드>
ex)
<jsp:include page="includesub.jsp">
<jsp:param name = "weeks" value ="52"/>
</jsp:include>
액션 태그 종류
include <jsp:include page="포함할 페이지 파일명"/>
현재 jsp 페이지에서 다른 페이지를 포함
include 진행 순서 ex) <jsp:include page="sub.jsp"/>
1. main.jsp 프로그램에서 태그 include를 요청
2. include에서 호출된 sub.jsp 프로그램이 응답(결과 삽입)
변수의 선언이 중복될 경우, 오류가 발생(선언은 include 또는 main 둘 중 하나에서만 할 것)
결과의 삽입: 결과값은 지역변수 중복 선언이 아니기 때문에 문제 발생 없음
액션 태그 <jsp:include.../>와 내장 객체 pageContext의 메소드 include()와 같은 기능
ex) <jsp:include page = "includesub.jsp"/>
<% pageContext.include("includesub.jsp")/>
forward <jsp:forward page ="test.jsp"/>
현재 JSP 페이지의 제어를 다른 페이지에 전달
- 속성 page에서 지정한 jsp 페이지 또는 파일을 호출
- forward 태그가 있는 현재 페이지의 작업은 모두 중지되고 이전에 출력한 버퍼링 내용도 모두 사라지게 되어 출력이 되지 않으며 모든 제어가 page에 지정한 파일로 이동
- 실제 jsp 서블릿 소스에서 내장 객체 pageContext의 메소드 forward()로 대체
- pageContex.forward()와 같은 기능을 수행
ex)
<% pageContex.forward("send.jsp"); %>
<jsp:forward page = "send.jsp"/>
forward 순서도
1. main.jsp 프로그램에서 태그 forward를 요청
2. forward의 page 파일에서 호출한 sub.jsp 프로그램이 응답(결과만)
Param
[include 태그 버전]param
<jsp:include page="includesub.jsp">
<jsp:param name = "weeks" value ="52"/>
</jsp:include>
현재 jsp 페이지에서 다른 페이지를 포함
[forward 태그 버전]
<jsp:forward page = "test.jsp">
<jsp:param name="id" value="hong"/>
</jsp:forward>
현재 jsp 페이지의 제어를 다른 페이지에 전달
page로 지정된 페이지로 필요한 패리미터의 이름(name)과 값(value)을 전송하는 역할을 수행
plugin
<jsp:plugin type="applet" code="test" />
자바 애플릿 등을 플러그인
- 웹브라우저에서 자바 빈즈 또는 애플릿을 플러그인하여 실행하는 태그
- 각기 다른 웹 브라우저에서 인식할 수 있도록 마이크로소프트사의 IE 경우일 때는 OBJECT 태그로 만들어주며 넷스케이프 사의 경우, EMBED 형태의 태그로 만들어준다
useBean
<jsp:useBean id = "login" class="LoginBean"/>
자바 빈지를 사용
setProperty
<jsp:setproperty name = "login" property="pass"/>
자바 빈지의 속성을 지정하는 메소드를 호출
getProperty
<jsp:getproperty name = "login" property="pass"/>
자바 빈지의 속성을 반환하는 메소드를 호출
forward와 include 차이
include: page 속성에 지정된 페이지의 처리가 끝나면 다시 현재 페이지로 돌아와 처리를 진행
forward: page 속성에 지정된 페이지로 제어가 넘어가면 다시 현재 페이지로 다시 돌아오지 않고 이동된 페이지에서 실행을 종료
'Programming > Languages' 카테고리의 다른 글
[JSP 공부 #3] 자바 빈즈(JAVA Beans) (0) | 2020.06.30 |
---|---|
[JSP 공부 #2] 쿠키와 세션 (0) | 2020.06.29 |
[파이썬 공부 #4] Tkinter, 이벤트 처리, 캔버스 (2) | 2020.06.17 |
[파이썬 공부 #3] 모듈, turtle 모듈 (0) | 2020.06.17 |
[파이썬 공부 #2] 함수, 라이브러리 등 (0) | 2020.06.17 |