-
Servlet-JSP MVC02(2) - JSP와 Servlet의 관계Web/Servlet-JSP 2023. 6. 12. 14:46
1. JSP는 서블릿이다.
JSP의 실행과정을 보면 (클라이언트가 jsp로 곧바로 요청을 보냄)
클라이언트 요청 -> WAS가 JSP를 찾아서 랜더링 -> 랜더링 된 JSP페이지를 통해 응답하는 과정을 거친다.
이런 일련의 응답과정에서 JSP가 서블릿으로 (서블릿의 형태로) 변환되어 응답한다.
@WebServlet("/test01.jsp") public class Myhap extends HttpServlet { final PageContext pageConext=null; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application =null; //내장객체들 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //서비스 로직 <%%> int sum=0; for(int i=1; i<=10;i++) sum += i; response.setContentType("text/html;charset=utf-8"); PrintWriter pw = response.getWriter(); pw.write("<html>"); } public int hap(int s, int e) { int sum =0; for(int i=s; i<=e; i++) sum+=i; return sum; } }
위와 같은 jsp파일이 옆처럼 변환되어 응답한다.
<%%>은 service 메서드내로 들어가고 <%! %>은 서비스 메서드 외에 생성되며, html코드는 순수 서블릿때 처럼 PrintWriter를 통해 작성된다.
test01.jsp파일이 test01_jsp.java로 변환되고 컴파일 된다.
2. JSP 내장객체
> JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체이다.
> 서블릿 컨테이너가 해당 JSP 페이지 실행 시 자동으로 생성한다.
> 스크립트릿에 내장 객체와 같은 이름의 변수를 선언할 수 없음
jsp에 위와 같은 내장객체들이 미리 지정되어 있기 때문에,
jsp에서 servlet에서처럼 클라이언트의 요청을 받고 응답하기 위해 request나 response등을 만들 필요없이
<%%> 스크립트릿에서 간단하게 꺼내서 사용할 수 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="kr.bit.model.*" %> <% request.setCharacterEncoding("utf-8"); //파라메터 정보 수집해서 VO객체에 집어넣고, DAO로 넘기자. String id = request.getParameter("id"); String pass = request.getParameter("pass"); String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); String email = request.getParameter("email"); String phone = request.getParameter("phone"); MemberVO vo =new MemberVO(id,pass,name,age,email,phone); MemberDAO dao = new MemberDAO(); int cnt = dao.memberInsert(vo); if(cnt>0){ response.sendRedirect("memberList.jsp"); }else{ throw new ServletException("not insert"); } %>
memberInsert.jsp의 내용이다. servlet에서와 동일하게 클라이언트로부터 넘어온 요청을 담은 request와 response를 사용할 수 있다.
참고자료:
나프1탄(인프런) 박매일
https://velog.io/@ansalstmd/JSP5.-%EB%82%B4%EC%9E%A5-%EA%B0%9D%EC%B2%B4
https://pathas.tistory.com/184
'Web > Servlet-JSP' 카테고리의 다른 글
Servlet-JSP MVC02(4) - Application,Session,Cookie (0) 2023.06.12 Servlet-JSP MVC02(3) - 내장객체 (0) 2023.06.12 Servlet-JSP MVC02(1) - 간단 JSP (0) 2023.06.12 Servlet - JSP MVC01 (6) 회원정보수정하기 (0) 2023.05.26 Servlet - JSP MVC01 (5) - 회원상세보기 (0) 2023.05.26