JSP기초

2 minute read



JSP란?Permalink

  • Servlet으로 웹 개발 시, service메소드에 문자열로 html을 한줄한줄 직접 작성해야 한다.
  • 화면단을 구성하기 불편하므로 JSP를 이용하여 구성하면 훨씬 편리하다.


  String row = request.getParameter("row");
  String col = request.getParameter("col");
  System.out.println(row+","+col);

  response.setContentType("text/html; charset=utf-8;");
  //텍스트중에 html문서를 넘길래, charset은 utf-8
  PrintWriter out = response.getWriter();
  int r = Integer.parseInt(row);
  int c = Integer.parseInt(col);


  out.println("<html>");
  out.println("	<head>");
  out.println("		<title>메소드 호출 방식</title>");
  out.println("	</head>");
  out.println("	<body>");

  out.println("		<table border=\"1\">");
  for(int i = 0; i<r; i++) {
    out.println("<tr>");
    for(int k=0; k<c; k++) {
      out.println("<td>");
      out.println("cell("+i+","+k+")");
      out.println("</td>");
    }
    out.println("</tr>");
  }
  out.println("		</table>");

  out.println("	</body>");
  out.println("</html>");

  out.flush();
  out.close();

  • 위와같이 out.println(“ “);안에 직접 작성하면 굉장히 불편…
  • jsp파일을 생성하면 html과 같은 형식의 파일을 확인할 수 있고, 몇 가지 문법을 이용하여 자바코드도 함께 쓸 수 있다.
  • WAS서버에는 Servlet으로 jsp를 바꾸는 엔진을 보유하고 있다.





JSP 디렉토리 구조Permalink

  • JSP 파일은 웹프로젝트 디렉토리의 WebContent/ 아래에 생성해야 한다.
  • JSP 파일을 생성하게 되면 class파일이 있는 work폴더에 내가생성한파일명_jsp.class파일과 .java파일이 자동으로 생성되는데, 이 파일을 열어보게 되면 out.write(“ “);형식으로 html이 자동으로 들어가있는 것을 확인 할 수 있다.
    • work폴더의 위치는 사람마다 다름
    • eclipse-work/work/Catalina/localhost/Lecture/org/apache/jsp/ 내가만든경로 / file_jsp.class
    • eclipse-work/work/Catalina/localhost/Lecture/org/apache/jsp/ 내가만든경로 / file_jsp.java 가 생성된 것을 확인 할 수 있다.
    • eclipse-work/~/jsp/까지가 루트 경로라고 보면 된다.





JSP 구성요소Permalink

  • 주석문
  • 지시문
  • 실행문
  • 표현언어(표현문)
  • JSTL
  • 표준 액션 태그





주석문Permalink


<%-- 설명 --%>

  • 자바에서 사용하는 //, /* */와 동일한 역할
  • : html, xml에서 사용하는 컨텐츠 주석문

  • JSP주석문과 컨텐츠 주석문의 차이점?
  • JSP주석문
    • JSP엔진이 해석하지 않는다.
    • JSP주석문은 클라이언트가 볼 수 없다. (=개발자도구에서 보이지 않음)
  • 컨텐츠 주석문
    • 개발자 도구에서 확인 가능





지시문Permalink


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="..." %>

  • JSP 페이지에 대한 설정 정보를 지정한다.
  • java코드 작성시 라이브러리를 import ( 단축키 : ctrl + space )
  • 종류
    • page : JSP페이지에 대한 정보 지정(문서 타입, 출력버퍼크기, 에러페이지 등)
    • taglib : 사용할 태그 라이브러리 지정
    • include : 다른 문서를 포함





실행문Permalink

  
  
<%  자바실행코드 %>

<h2> 1~10 사이의 정수 출력</h2>
<%
  for(int i=1; i<=10; i++){
    out.write(i + "<br>");
  }
%>

  • 자바코드 실행시 사용되는 코드 블록.
  • 메소드에 처리하는 실행문장
  • <%와 %> 사이에 실행할 문장을 넣는다.





표현문Permalink

  
  
<%= 화면에 출력할 표현식 %>

<h2> 1~10사이의 정수 출력</h2>
<% 
  for(int i=1; i<=10; i++){
%>
  <%=i %><br>
<%		
  }
%>

  • 값을 출력 결과에 포함.
  • <%=과 %>사이에 ;를 사용하면 안된다.





선언문Permalink

  
  
<%! private int sum=0; %>
<%!
  public int getSum(int val1, int val2){

  int sum = 0;
  for(int i=val1; i<=val2; i++){
    sum+=i;
  }
  return sum;
}

%>
1~10사이의 총합 : <%=getSum(1,10) %>

  • 잘 사용하지 않음
  • <%! 와 <% 의 차이
    • <%! : 변수 선언 시 멤버변수로 선언
    • <% : 변수 선언 시 지역변수로 선언





JSP 사용 예제 : 헤더네임 가져오기Permalink



  <%@page import="java.util.Enumeration"%>
  <%@ 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>
    <%
      Enumeration<String> hNs = request.getHeaderNames();
      while(hNs.hasMoreElements()){
        String hN = hNs.nextElement();
        String hV = request.getHeader(hN);
    %>

        <%=hN %> : <%= hV %><br>
    <%
      }
    %>
  </body>
  </html>

  • 헤더네임에는 사용자가 어느 OS에서 접속했는 지 알 수 있다.