[[ JSP ]]
: Java Server Pages ( = Jakarta Server Pages )
웹 개발 발전 단계 : Servlet => JSP => MVC
< 서블릿 한계 >
- 웹 프론트단이 복잡해지면서 자바에서 PrintWriter 가지고 " " 따옴표 써가며 구현하기가 빡세다.
- 서블릿에 자바 비지니스로직과 뷰단코딩이 같이 섞여 있다보니, 가독성도 떨어지고
개발 후 유지 관리 불편함
=> [ Java 클래스 내부에 HTML 이 " " 따옴표로 포함된 형태 ]
=> 역발상
=> [ HTML 내부에 Java 클래스를 <% %> 로 포함시키자 ] : JSP
< JSP >
1. 기본적으로 HTML 파일 처럼 사용
- WebApp 폴더에 저장 ( .jsp 파일 ) < = > 서블릿 : Java 폴더
- HTML / CSS / JS 다 그냥 원래 HTML 사용하 듯 사용
<html> </html>
<style> <style>
<script> </script>
- Java 비지니스 로직 문장 이 들어가야 할 때,
=> <% 자바문장 %> 안에서 사용하는 것!
- 비지니스로직과 뷰단 분리
( 섞여있는건 똑같은데 <% %> 이걸로 구분이 되니깐 )
- 비지니스JSP/ 뷰단JSP 따로 개발하고 RequestDispatcher 로 합쳐서 사용
2. Request / Response
- 근데, HTTP 로 클라이언트단에서 요청 읽어오고, 응답하려면
@WebServlet("/bank")
public class BankServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpServlet 상속해서 doGet/Post 로 사용하던 request, response 객체 필요한데, 이거 없이 어떻게 HTTP 통신해?
Tomcat ( JSP Container ) 형님 :
" 마, 그건 이따가 내가 알아서 해줄게.
JSP에서는 그냥 바로 편하게 request / response 로 사용해라! "
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>loginprocess</title>
</head>
<body>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
- 정말 바로 사용할 수 있다. 왜?
[내장객체]
Servlet에서 필수적으로 사용하던 객체들을 몇 개 골라서
( request / response / out / session / application / exception . . . )
JSP에 [ 내장객체 ] 로 미리 넣어뒀기 때문이다.
JSP 에서는 이 내장객체로 일단 편하게 사용할 수 있고,
나중에 JSP 파일 실행하면
=> Tomcat (JSP container) 형님이
1) JSP 파일(내부 모든내용) => 자바 Servlet 클래스 코드로 변환해준다.
=> .java
( 이때, JSP 에서 내장객체로 편하게 사용했던 것 들을
자동으로 정식 Servlet 코드로 변환해주는 것 )
2) 컴파일 해준다.
=> .class
3) 이 실행결과, 즉 Servlet으로 HTTP 통신해서 브라우저로 응답되는 방식
( JSP 는 편하게 작성하게 만들어주는 일종의 도구 )
3. URL Mapping
- 서블릿 처럼 @WebServlet( "url ") URL 맵핑이 아니라,
파일 자체로 올리는 방식이다.
http://localhost:8090/webServlet_war/LoginService.jsp
: ip 포트 / 컨텍스트명 / jsp파일명
- 마치, static 정적인 파일들만 파일명으로 받는 식인데,
=> 대신, 로직이 들어간 자바 코드를 이용해서
조건에 따라 동적으로 맵핑된다.
'Back to the JSP' 카테고리의 다른 글
[ 서블릿 + JSP ] 효율적으로 섞어쓰기 (0) | 2022.08.10 |
---|---|
[JSP] action 태그 forward / include / param (0) | 2022.08.10 |
[JSP] exception 처리 1. errorPage / 2. web.xml (0) | 2022.08.10 |
[JSP] Servlet / JSP 진행순서 (0) | 2022.08.09 |
[JSP] 구성요소들 <%@ / <%= / <%! / <%-- (0) | 2022.08.09 |