서블릿 코드 변환된 파일(.java)
클라이언트의 웹브라우저가 .jsp페이지를 요청하면
웹서버의 JSP&서블릿 컨테이너가 JSP파일을 파싱하고 서블릿코드로 변환하여 .java로 저장한다.
톰캣으로 실행할 때와 이클립스로 실행 할 때의 자바파일 저장 경로가 다르다. (p.125 참고)
jsp페이지를 톰캣으로 실행시 서블릿코드로 변환되어 자바파일이 저장되는 경로 :
C:\Users\user\Desktop\JSP_STUDY\apache-tomcat-8.5.40\work\Catalina\localhost\myapp\org\apache\jsp\ch05
jsp페이지를 이클립스로 실행시 서블릿코드로 변환되어 자바파일이 저장되는 경로 :
C:\Users\user\Desktop\JSP_STUDY\.metadata\.plugins\org.eclipse.wst.server.core
\tmp0\work\Catalina\localhost\test_jsp_eclipse\org\apache\jsp
//확장자만 바뀐게 아니라 파일명이 조금 변경되었다. 변경이 되면 정확한 파일명을 알 수 없기때문에 서블릿코드파일이 저장되는 경로를 잘 알아두자
이클립스에서 설정한 workspace 경로의 .metadata에서 파일 이름을 검색해보면 찾기 쉽다.
이클립스에서 jsp파일 경로 확인 하기 : .jsp파일 > 우클릭 > Properties > Location 위치에서
jsp 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <h1>Scriptlet Example</h1> <%! int one; String msgOne; %> <% int two =31; String msgTwo = "Scriptlet_Example!"; %> <%= two + " : " + msgTwo%> <br/> <%=application.getRealPath("/")%> | cs |
변환된 서블릿 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat/8.5.40 * Generated at: 2019-04-26 07:07:21 UTC * Note: The last modified time of this file was set to * the last modified time of the source file after * generation to assist with modification tracking. */ package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; public final class test_005fjsp_005feclipse_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent, org.apache.jasper.runtime.JspSourceImports { int one; String msgOne; private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private static final java.util.Set<java.lang.String> _jspx_imports_packages; private static final java.util.Set<java.lang.String> _jspx_imports_classes; static { _jspx_imports_packages = new java.util.HashSet<>(); _jspx_imports_packages.add("javax.servlet"); _jspx_imports_packages.add("javax.servlet.http"); _jspx_imports_packages.add("javax.servlet.jsp"); _jspx_imports_classes = null; } private volatile javax.el.ExpressionFactory _el_expressionfactory; private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; } public java.util.Set<java.lang.String> getPackageImports() { return _jspx_imports_packages; } public java.util.Set<java.lang.String> getClassImports() { return _jspx_imports_classes; } public javax.el.ExpressionFactory _jsp_getExpressionFactory() { if (_el_expressionfactory == null) { synchronized (this) { if (_el_expressionfactory == null) { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); } } } return _el_expressionfactory; } public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() { if (_jsp_instancemanager == null) { synchronized (this) { if (_jsp_instancemanager == null) { _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); } } } return _jsp_instancemanager; } public void _jspInit() { } public void _jspDestroy() { } public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { final java.lang.String _jspx_method = request.getMethod(); if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD"); return; } final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html; charset=EUC-KR"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("\r\n"); out.write("<h1>Scriptlet Example</h1>\r\n"); out.write('\r'); out.write('\n'); int two =31; String msgTwo = "Scriptlet_Example!"; out.write('\r'); out.write('\n'); out.print( two + " : " + msgTwo); out.write(" <br/>\r\n"); out.print(application.getRealPath("/")); // 표현식으로 출력된 JSP 코드들 } catch (java.lang.Throwable t) { if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) try { if (response.isCommitted()) { out.flush(); } else { out.clearBuffer(); } } catch (java.io.IOException e) {} if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); else throw new ServletException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } } |
'JSP > JSP & Servlet ' 카테고리의 다른 글
내장 객체(implict object) (0) | 2019.04.29 |
---|---|
JSP 기초문법 (0) | 2019.04.28 |
(이클립스 없이) 톰캣 서버 구동 (0) | 2019.04.26 |
JSP 동작원리(톰켓)와 서블릿 (0) | 2019.04.26 |
JSP 웹프로그래밍 시작하기 (0) | 2019.04.25 |