JSP기초
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에서 접속했는 지 알 수 있다.