vidigummy KAU/혼자하는 Web 공부(Front)

백엔드 공부 2(java Servelt - jsp)

vidi 2021. 1. 19. 22:49

라고 한다. 

 

jsp는 서버 Web-INF에 저장되며, 다른 HTML 파일들과 같이 쓴다고 한다. 솔직히 아직 어떻게 쓰는지 잘 모르겠다.

 

WAS는 웹 브라우저로부터 jsp에 대한 요청을 받으면 이를 java 서블릿 소스코드로 변환시킨다. init(), Service() 등이 실행되는걸 확인할 수 있다.

 

JSP의 실행순서

  1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
  2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
  3. 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
  4. 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
  5. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
hello
<%
	System.out.println("_jspService()");
%>

<%!
public void jspInit() {
	System.out.println("jspInit()!");
}

public void jspDestroy() {
	System.out.println("jspDestroy()");
}
%>

</body>
</html>

이게

 

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 {

    .....

    try {
      .....

      out.write("\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
      out.write("<html>\n");
      out.write("<head>\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
      out.write("<title>sum10</title>\n");
      out.write("</head>\n");
      out.write("<body>\n");
      out.write("\n");

	int total = 0;
	for(int i = 1; i <= 10; i++){
		total = total + i;
	}

      out.write("\n");
      out.write("\n");
      out.write("1부터 10까지의 합 : ");
      out.print(total );
      out.write("\n");
      out.write("\n");
      out.write("</body>\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      .....
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }

이렇게 바뀐다.

jsp에서 java 코드를 따로 쓰려면 <% %>(service method/ 프로그래밍 코드 기술에 사용) 또는 <%! %> (전역 변수 및 메소드 선언) <%= %>(화면에 출력할 내용(HTML)) 이다.

 

 

그리고 내장 객체또한 존재해서 따로 선언을 안하고도 쓸 수 있다.

이런거다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    StringBuffer url = request.getRequestURL();

    out.println("url : " + url.toString());
    out.println("<br>");
%>
</body>
</html>

이런 식으로 사용하게 된다.

 

www.javatpoint.com/jsp-implicit-objects

 

JSP Implicit Objects - javatpoint

JSP Implicit Objects or 9 jsp objects with examples of out, request, session, config, application, pageContext, page and exception implicit objects.

www.javatpoint.com

어렵다... 책이 빨리 와야할텐데.