이전 글에서 화면 이동까지 해보았다.
근데 신기한 게 xx.jsp 파일이 html도 아닌데 화면에 노출이 된다. html이면 browser engine에 의해 해석이 된다지만 jsp는 왜 되는 거지? 요고 한번 찾아보고 넘어가야겠다.
1. JSP와 Servlet
JSP - 나무위키
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권
namu.wiki
위 위키의 내용을 종합해보면 JSP 결국 HttpServlet을 상속한 J.A.V.A 파일로 컴파일이 된다고 한다. 즉 Jsp 확장자를 사용할 뿐 컴파일되는 java라는 거다. 이렇게 컴파일된 Servlet을 읽으려면 Servlet Container가 필요하다는 건데 그게 개발환경 설정 때 설치한 Tomcat 되시겠다. Tomcat이 알아먹어야 하니깐. jsp 확장자가 Trigger가 되고 internet browser는 Servlet을 모르니깐 최종적으로 html로 던져주게 된다.
ex : userSample.jsp -> userSample_jsp.class 이렇게 컴파일됨 -> 최종적으로 화면으로 갈 땐 html임
jsp 파일을 만들면 Tomcat이 컴파일도 해주고 찾아도 주고 한다는 건데 그냥 그렇구나 정도 하고 넘어가자. 이거 다 이해하려면 request, response, http, jvm.... 등등해서 너무 많다. 넘어가자....
2. JSP의 표현(코딩)
JSP는 html, js, 스크립트릿(<%%>), jstl 등등 많은 내용을 표현할 수 있는데 이거 다 알아야겠다 했다간 이번 생이 약간 모자랄 것 같다.... 해당 내용들이 어떻게 표현되는지 index.jsp에 아래와 같이 하나씩 추가해보고 그렇구나 하고 또 넘어가자..;;
- html
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
olDevStudy Hello World!
<form id="testFrm" name="testFrm" action="/userSample.jsp">
<input type="text" name="test" value="" />
<input type="submit" value="Submit!">
</form>
</body>
</html>
그냥 html 태그 쓰면 된다. 제약이 없다 왜냐? browser 안 쓸 거야?? ㅎㅎ
- js
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
olDevStudy Hello World!
</body>
<script type="text/javascript">
$( document ).ready(function() {
alert( "ready!" );
});
</script>
</html>
script tag 추가해주고 사용하면 된다. (alert 잘 뜬다.)
- 스크립트릿
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%
Date d = new Date();
String nowD = d.toString();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
olDevStudy Hello World!<br/>
<%=nowD%>
</body>
</html>
java Data 객체를 impot 하고 현재 날짜를 출력해보았다. 스크립트릿 사용 시 사용하고자 하는 객체를 반드시 import 해야 한다. 간혹 무작정 객체를 써놓고 왜 안되는지 묻는 사람이.... 쩝... 참고로 <%%>는 코딩하는 영역이고 <%=%> 출력하는 영역이라 생각하면 되겠다. 현재 날짜가 출력된다.
- JSTL
JSTL을 사용하기 위해선 xxx.jar를 몇 개 가지를 받아야 한다.
Tomcat을 다운로드하였던 사이트로 들어가자. (tomcat.apache.org/download-taglibs.cgi)
이제 jstl을 사용해보자.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
olDevStudy Hello World!<br/>
<c:forEach var="idx" begin="0" end="10" varStatus="i">
<c:out value="${idx}"/>
</c:forEach>
</body>
</html>
jstl에는 몇 가지 taglib가 존재하는데 core, function 등등이 있고 상세는 아래 링크를 참조. (이거 필요할 때마다 찾았으면 된다. 외울 필요 없음) 스크립트릿과 마찬가지로 taglib를 반드시 로드해야 한다. core를 로드했고 접두사로 c를 주었다. <c:xxx>으로 사용해야 한다.
JSTL 참고 사이트 : https://www.javatpoint.com/jstl
JSTL Tutorial and Examples - javatpoint
JSTL Tutorial with examples on JSTL core tags, function tags, formatting tags, sql tags and miscellaneous tags. It includes c:out, c:import, c:set, c:if, c:when, c:choose, c:redirect, c:catch etc.
www.javatpoint.com
주저리주저리 써놓고 보니 결국 JAVA WEB에서 사용하는 수많은 lib, script들 있지만 결국 다 JAVA다...
물론 internet browser가 알아먹게끔 container께서 html로 변환도 해주시고 js 같은 script도 있지만 대부분 작업하는 것은 java화 되게 되어 있다.
그리고 외울 필욘 없겠으나 jsp도 결국. class로 컴파일되어야 한다는 걸 인지하고 jsp의 다양한 표현법(코딩법) 외부 lib를 추가할 땐 Webcontent/WEB-INF/lib 밑으로 복사도 해야 한다는 걸 잊지 말자.
이전 글 중 Dynamic Web Project와 Maven Project를 비교한 적이 있는데 결국 배포가 되면 똑같이 Tomcat이 알아먹는 구조로 배포되었다. lib에 추가한 xxx.jar는 이전 배포 위치의 하위 폴더로 배포가 되게 되며 Tomcat이 이를 알아먹고 읽어준 주게 된다. 앞으로 추가되는 xxx.jar들은 WEB-INF/lib 밑으로 차곡차곡 쌓아가자.
다음은 진짜 개발해야지... 하나하나 찾으니깐 상당히 오래 걸리네... 쩝...
'JAVA_JSP' 카테고리의 다른 글
초보의 JSP 개발 데이터 등록 (0) | 2020.11.12 |
---|---|
초보의 JSP 개발 데이터 조회하기 (0) | 2020.11.11 |
초보의 JSP 개발 DB Table 생성 (0) | 2020.11.10 |
초보의 JSP 개발 프로젝트 생성 (0) | 2020.11.06 |
초보의 JSP 개발 프로젝트 비교 (0) | 2020.11.06 |
댓글