갈림길 이정표

[JSP] jsp 스크립트 4가지 태그 본문

Programming Language/Servlet & JSP

[JSP] jsp 스크립트 4가지 태그

이몽뇽 2020. 8. 25. 19:34

기본 <% ... %>

더보기
  • <%@ ... %> : 페이지에 대한 정보 설정 → 해당 jsp 파일 환경, 속성 설정
  • <%! ... %> : 멤버변수 또는 메소드 선언 → <% %>내에서 처리되는 변수나 메소드 범위를 전역으로 설정되게 하고 싶을 때
  • <% ... %> : _ jspService( ) 내에 그대로 옮겨짐 → ≒ java 랑 비슷하다고 보면 됨. 여러줄 작성 가능
  • <%= ... %> : _ jspService( ) 내에 그대로 옮겨짐. 단, out.print( );으로 변경 됨 → 한줄만 작성 가능, 이미 내장 객체 out 의 print 메소드로써 사용된다고 간주 되기 때문에 세미콜론(;) 필요없음!

  • <%-- ... --%> : 주석 처리 (※ 단, 페이지 속성 <%@ ... %> 내에서는 사용 불가)
종류 구문 주석으로 처리되는 시점
JSP 주석 <%-- ... --%> Servlet 코드로 변환될 때
HTML 주석 <!-- ... --> 브라우저에 의해 응답이 parsing 될 때
Java 주석 // 또는 /* ... */ Servlet 소스가 compile 될 때

※어차피 JSP도 HTML 태그를 쓸 수 있기 때문에 <!-- .. --> 사용 가능


[jspStart.jsp]

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>	<%-- 지시어는 앞에다가.. --%>
<%-- 자바를 숨겨버림 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
<h1>안녕</h1><h6>난 JSP야!!!</h6><br>
<!-- ModelⅠ방식 -->
<%	//스크립틀릿: 이 <% \%\>블럭 안에 있어야 java로 인정 (html 소스코드 에선 안보이는 부분)
String ir = "홍길동";
out.println(ir + "의 홈페이지임을 선언하노라");	//print[ln]은 내장객체

for(int i = 1; i < 7; i++){			//소스코드(Ctrl + U)와 자바코드 비교하기 
	out.print("<h" + i + ">");
	out.print("jsp글자 크기 바꿔보기");
	out.println("</h" + i + ">");	//println: html소스코드 보기 좋게 한줄 띄기 (출력후 커서 위치 다음줄)
}
%>
<!-- ※ ModelⅡ방식 (MVC방식) -->
<hr>
여긴 html
<br>
<%	//자바를 쓰다가 html 쓰고 싶을땐 내장객체 (ex.print();) - 보통 여러줄 
out.print("날짜 및 시간은 ");
out.println(new java.util.Date());	//java.util.Date() 쓰고 ctrl+space 하면 알아서 import 되고 Date로 바뀜 (지금은 적용안된 상태) 
%>
<br>
<!-- html을 쓰다가 자바를 쓰고 싶을 땐 <\%= Only 한줄 자바 %\> -->
날짜 및 시간은 <%= new java.util.Date() %>	<!-- 이게 더 깔끔 (※세미클론(;)은 뺄것! -->
<hr>
<%
int a = 0, sum = 0;
do{
	a++;
	sum += a;
}while(a < 10);
%>
<%="합은 " + sum + " (java - do while문)"%>
										<!-- JSP의 문제: 난독 (java와 html 왔다갔다)-->
<%= ir + "님의 전화번호는 " + tel%>			<!-- 해결: 자바빈즈, .... -->
<!-- JSP안에 변수들은 모두 지역변수이므로 초기값있어야 됨 -->	<!-- JSP는 순서 중요! 그리고 세미클론 <\%=%>쓸 경우 뺄것!! -->	
<%! String tel = "111-1111";%>	<!-- <\%!(선언부): 전역변수 선언할 수 있고 순서 상관없음 -->
<%-- tel은 클래스의 멤버 필드 --%>

<%!
//JSP자체가 메소드 이므로 이렇게 할거면 Class의 멤버가 되게끔하면 됨

public int add(int m, int n){	//클래스의 멤버 메소드
	return(m + n);
}
%>
<br>
<%
out.println(add(4,5));
%>
&nbsp;&nbsp;
<%= add(4,5) %>
</body>
</html>
Comments