GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the JSP

[JSP] 구성요소들 <%@ / <%= / <%! / <%--

Backcoder 2022. 8. 9. 21:19

[[ JSP 구성요소 ]]

1. HTML 태그 
- html / css / JS / jquery 등 그대로 사용 

2. Directive 태그   
(1) <%@ page  ...  %>
: 페이지 지시자 태그 ( jsp 파일의 시작 ) 
페이지에 대한 정보 알려줌 

-contentType 세팅 필수 ( resp.setContentType 자동 )
<%@ page contentType="text/html;charset=UTF-8" %>

-import 세팅은 자동으로 해줌 
<%@ page import="java.time.LocalDateTime" %>

(2) <%@ include 
- 포함해서 실행해야할 다른 파일 세팅 

(3) <%@ taglib
- JSTL 태그모음 사용하는 세팅 

 

=> 그 외에, 사용하는 객체에 따라서 

session="true"  (default) : 세션 사용하겠다. 

buffer="8kb" autoFlush="true" (default) : out 내장객체 버퍼용량 8kb  / 털어보내기 자동 

isErrorPage="true" ( 설정필요 ) : 에러처리 페이지입니다. => 이거해줘야 exception 객체 사용가능 

 등의 세팅을 추가하는식으로 사용

 



3.  자바문장 ( 스크립트 태그 ) 
<% 자바문장 그대로 %> 

(1)주석문 : <%-- --%>

자바일땐 <% %>안에서  //주석 사용가능 
html 일땐 <!-- -->  사용 가능 
: 이렇게 주석처리하고 TomCat 형님한테 보내면, 주석까지 변환하고 컴파일해서 응답한다. 
( 웹브라우저단 소스보기에서 주석으로 표시됨 ) 
( 자바 // 주석은 페이지소스보기에선 안보임 )
( 심지어 <% %> 이부분도 html 주석으로 해서 안보이게는 할 수 있음 )

=> 하지만 변환에 컴파일까지 하는 과정에 들어가므로 리소스 손해 

=> <%--   --%> 이렇게 주석처리 해주면 
아예 변환,컴파일 과정도 안거치고 무시해줌 
=> 리소스 아낄 수 있다! 

 


(2)표현문 : <%= 변수명 %>
: 변수값을 그대로 웹 브라우저에 표현해줌 
<% String now = "2022.08.09"; %> 
<h1> 오늘은 <%= now %> 입니다 </h1> 


(3)선언문 : <%! 메소드 / 전역변수 %> 

- 메소드 선언

<%! 
int multiply(int a,  int b){return a*b;} 
%>


<h1>계산 결과는 <%=  multiply(6,5)  %> 입니다.</h1>

=> 이렇게 만들면, _jspService(){} 메소드 내부가 아니라  
자체 메소드로 따로 선언된다. 

=> 그 메소드 안에서는 request 등 내장객체를 사용할 수 없다.

( 메소드 매개변수로 받아서 사용해야 한다. ) 

 

 

- 전역변수 
<%! String msg = "전역변수"; %> 
=> 이렇게 선언하면 전역변수로 선언 

 


- 지역변수 
<% %> 에서 선언한 변수는 
JSP Container 가 변환하고 컴파일하면서 
기본적으로 해당 jspService( ) 메소드 안의 지역변수로 선언 

 

-   jspService

JSP 는 get 방식 post 방식 선택할 수 없다. 
JSP container 가 모두 jspService()방식 으로 받는다. ( 통합 ) 

=> 따로 메소드 방식을 분리해서 
if( request.getMethod().equals("Post") ){
request.setCharacterEncoding("utf-8"); }

 

특히나 이렇게 Post 일때 setCharacterEncoding 은 따로 해줘야 한다

( <jsp:param 으로 넘긴값 ??? 로 나오는데, 

이때, <jsp.param 을 "사용"하는쪽, 

즉, 값을 넘기는 쪽에  request.setCharacterEncoding 을 해줘야 한다. ) 

 




4. 표현 언어 
request.getParameter("type") 
== ${ param.type } 

5. 내장객체 

request / response / out / session / application / exception 

=> 따로 생성할 필요 없이 편하게 바로 사용 가능

( out 은 servlet 라이브러리 설치 필요 ) 

 

 

6action 태그 ( url 보내기 편하게 ) 

 forward / include / param / useBean / setProperty / getProperty 

 

<% RequestDispatcher rd = request.getRequestDispatcher( url );
rd.forward(req, resp); %> 
== 
< jsp:forward  page="url" />  

 

 

7. 커스텀 태그 
JSTL = JSP Standard Tag Libarary 
=> libarary 받아서 사용