jsp 주석(<%-- --%>
) : jsp -> servlet으로 변환시 사라짐
java 주석
html 주석(<!-- -->
)
<%@ %>
: JSP 프로그램 전체의 동작에 관해 정의한다. jsp 페이지가 실행될 떄 필요한 정보를 jsp 컨테이너 (catalina)에게 알리는 역할을 한다.contentType
: JSP 프로그램의 응답시의 MIME 타입과 문자 인코딩을 지정 기본값은 text/html
session
: 현재 JSP페이지에서 HTTP 세션을 사용할지 여부를 지정 (기본값 True)
pageEncoding
: JSP 프로그램을 Servlet 프로그램으로 변환 할 때의 문자 인코딩을 지정
language
: JSP 프로그램에서 사용하는 언어를 지정
import
: JSP가 사용할 클래스/패키지 이름을 지정
errorPage
: JSP 프로그램에서 예외 발생 시 예외를 처리 할 페이지를 지정
autoFlush
: 버퍼에 데이터가 쌓여 때 자동으로 클라이언트에 데이터를 보낼 것인지를 지정
buffer
: 클라이언트로 전송하는 데이터를 버퍼링 할 때 버퍼의 용량을 kb단위로 지정한다. 기본 크기는 8kb로 버퍼하지 않으면 none을 지정한다.
include
: 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능(여러 JSP페이지에서 공통적으로 포함되는 내용이 있는 경우)으로 포함될 파일의 내용(소스코드)을 복사, 붙여넣기해서 하나의 파일로 합치는 정적 방식, 따라서 변수 중복에 주의해야한다. 주로 조각코드
를 삽입하여 해당 코드를 사용할 수 있게 한다.
<%@ include file=" " %>
- `<%@include file="header.jsp"%>`
- `<%@include file="footer.jsp"%>`
<% %>
: 자바코드를 사용하는 부분, 지역변수 정의, _jspService() 함수 내에 정의, 실제 자바코드가 들어있는 부분으로 브라우저에 출력되지 않으며 선언부와 다르게 호출될 때마다 값이 초기화된다. <%
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter format = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatDateTime = now.format(format);
%>
<%= %>
: 변수가 들어가는 등 자바코드를 해석하고 그 결과를 보여주는 표현식. 더 쉽게 표현하기위해 EL 표현식인(${ }
)을 사용한다<h1>Dynamic Part: <%=formatDateTime%></h1>
<%! %>
: 전역변수, class, function를 선언하는 선언부 영역으로 처음 호출될 때, 한 번만 초기화되고 서버를 다시 시작하기 전까지는 값이 변경되지 않는다Core : <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML : <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
I18N : <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Database :<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Functions : <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl
/functions" %>
${ } : 데이터에 접근 또는 데이터를 출력하기 위해 사용
${pageScope} 현재 JSP 페이지에서만 유효한 데이터가 저장됩니다.
${reqeustScope} 현재 요청에 대한 데이터가 저장되어 다른 페이지나 서블릿에서도 접근할 수 있습니다.
${sessionScope} 세션에 들어가 있는 데이터를 사용할 수 있습니다.
${applicationScope} 웹 어플리케이션 전체에서 공유되어야 하는 데이터가 저장됩니다.
${param} HTTP 요청 파라미터를 가져오기 위한 객체입니다. URL 매개변수나 폼 데이터 등을 받아올 때 사용됩니다.
${header} HTTP 요청 헤더 값을 가져오기 위한 객체입니다. 클라이언트의 요청 헤더 정보를 확인할 때 사용됩니다.
${cookie} 클라이언트 측에서 저장된 쿠키 정보를 확인할 때 사용됩니다.
${initParam} JSP 초기 파라미터를 가져오기 위한 객체입니다. 웹 애플리케이션의 web.xml 파일에서 설정한 초기 파라미터를 확인할 때 사용됩니다.
${pageContext} pageContext는 JSP 페이지에서 다양한 정보 및 기능에 접근할 수 있는 컨텍스트 객체입니다.
localhost:8080/session.jsp
이렇게 주소를 직접 입력하고 들어오면 인증받지않은 사용자도 들어올 수 있어서 보안에 문제가 있다.1.request : 클라이언트의 요청정보 저장
2.response : 응답정보 저장
3.out : jsp에서 결과 출력
4.session : 세션정보 저장
5.application : 컨텍스트 정보저장
6.pageContext : JSP패이지에 대한 정보 저장
getParameter(String)
: 쿼리스트링
으로 전달된 파라미터 값을 받을 때 사용하고 항상 String으로 반환한다. 매개 변수가 없는 경우는 Null을 반환한다
getParameterValues(String)
: 동일한 이름의 파라미터가 2개 이상일 때 사용하며, String[]로 반환되고 매개 변수가없는 경우는 Null을 반환한다.
getParameterNames()
: 클라이언트가 전송한 파라미터의 이름을 구함
getParameterMap()
: 웹 브라우저가 전송한 파라미터의 맵을 구함
setAttribute(String name, Object value)
: request에 데이터 값을 보관한다. 이미 데이터 이름이 있으면 값을 덮어 씌운다. JSP로 전달할 데이터를 추가할 때 사용하며 JSP에서는 서블릿에서 setAttribute된 데이터를 화면으로 출력한다.
getAttribute(String name)
: 세션에서 해당하는 데이터 값을 반환한다. 해당 데이터 이름이없는 경우는 null을 반환한다.
getRequestDispatcher
:
sendRedirect()
: 지정된 url로 리디렉션한다. Http헤더의 Location에 적혀있다.setConetneType
: 응답데이터의 종류 지정setStatus
: 응답상태코드 지정addCookie
: 응답시에 특정 쿠키를 추가forward(String)
: redirect와 기능은 거의 동일하지만 약간 차이가 있다. 웹 브라우저에는 처음 호출한 url만 표시되고 이동한 url은 표시되지 않는다. 또한 request, response 객체를 공유하기 때문에 사용자의 요청정보를 그대로 전달한다.include(String)
: 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능으로 포함될 페이지의 결과가 원래 페이지의 결과와 합쳐서 보인다. 주로 페이지를 모듈화
할 때 사용<jsp:include page="포함될 페이지" flush="false" />
<jsp:param name="paramName1" value="val1" /> // 포함되는 페이지에 값 전달
<jsp:param name="paramName2" value="val2" />
</jsp:include>
String param1 = request.getParameter("paramName1");
// 포함되는 페이지에서 값 전달받기
String param2 = request.getParameter("paramName2");
<%@ page session="true" %>
서버는 웹이 처음 접속할 때 세션을 자동생성하고 이후에 같은 세션을 이용한다.
1. getAttribute : 세션에 저장된 데이터를 가지고 온다. 없으면 null을 반환한다.
2. setAttribute : 세션에 데이터를 등록한다.
3. session.getId(), getCreationTime(), getLastAccessedTime()
PrintWriter out = resp.getWriter();
out.write("<html>\n");
out.write("<head>\n");
out.write(" <title>JSP Title</title>\n");
out.write("</head>\n");
forward
또는 include
를 사용하면 request 요청 객체가 공유되어 범위가 늘어난다.forward(String)
: redirect와 기능은 거의 동일하지만 약간 차이가 있다. 웹 브라우저에는 처음 호출한 url만 표시되고 이동한 url은 표시되지 않는다.forward_form.jsp
<body>
<form action="forward_param_result.jsp" method="post">
<input type="hidden" name="forwardPage" value="forward_param_result.jsp2">
<table border="1" bgcolor="#faebd7">
<tr>
<td>이름</td>
<td><input type="text" name="name"></td>
</tr>
</table>
</form>
</body>
forward_form_result.jsp
<body>
<jsp:forward page='<%=request.getParameter("forwardPage")%>'>
<jsp:param name="tel" value="010-1111-1111"/>
// 화면에서 입력받지 않았지만 여기서 값을 넘겨줄 수 있다
</jsp:forward>
</body>
forward_form_result2.jsp
<body>
<table border="1" bgcolor="#faebd7">
<tr>
<td>이름</td>
<td><%=request.getParameter("name")%>></td>
</tr>
<tr>
<td>연락처</td>
<td><%=request.getParameter("tel")%>></td>
</tr>
</table>
</body>
include(String)
: 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능으로 반복해서 사용되는 것들에게 자주 사용한다<%@jsp:include page="포함될 페이지 url" flush="false" />
// flush="true" 이면 JSP 페이지가 지금까지 출력 버퍼에 저장된 내용을 웹 브라우저에
출력하고 출력 버퍼를 비움
<jsp:param name="paramName1" value="val1" />
// 포함되는 페이지에 value를 전달
<jsp:param name="paramName2" value="val2" />
</jsp:include>
--------------------------------------------------------
String param1 = request.getParameter("paramName1");
// 포함되는 페이지에서 값 전달받기
String param2 = request.getParameter("paramName2");
jsp:useBean
: jsp와 Db간에 데이터를 쉽게 주고받게 하기 위해 데이터베이스에 들어가있는 컬럼들을 자바빈 클래스로 만든다.<jsp:useBean id="mbean" class="member.member"> => Member mbean = new Member(); 과 같다
<jsp:setProperty name="mbean" property="필드명"> 또는
<jsp:setProperty name="mbean" property="*"> 전체 필드와 매핑
</jsp:useBean>
<jsp:getProperty name="mbean" property="id"/>
<jsp:getProperty name="mbean" property="email"/>
<jsp:getProperty name="mbean" property="phone"/>
이런식으로 가져올 수 있다. 더 간단히는 이렇게
<%=mBean.getId()%>
<%=mBean.getEmail()%>
<%=mBean.getPhone()%>