티스토리 뷰

Spring&Spring Boot/JSP

JSP 내장객체

on1ystar 2019. 1. 21. 19:37
728x90
반응형
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !!



JSP 내에는 몇 가지 내장 객체들이 있습니다. 이 내장객체들은 따로 패키지를 import하지 않고, 객체를 만들어 주지 않아도 다양한 메소드들을 사용할 수 있게 해줍니다. 자주 사용하는 내장객체 4가지만 공부해 보겠습니다.


Config


웹 컨테이너가 생성될 때, c언어의 전역 변수(?)처럼 먼저 초기화하고 싶은 파라미터들을 web.xml에 설정할 수 있습니다.

web.xml

1
2
3
4
5
6
7
8
 <servlet>
      <servlet-name>servletEx</servlet-name>
      <jsp-file>/jspEx.jsp</jsp-file
 </servlet>
 <servlet-mapping>
      <servlet-name>servletEx</servlet-name>
      <url-pattern>/jspEx.jsp</url-pattern>
 </servlet-mapping>
cs


먼저 이렇게 Sevlet과 jsp파일을 연동해 줍니다. 여기서 Servlet을 따로 만들지 않고 jsp파일만 만들어 주면 됩니다.

왜냐하면 어차피 jsp파일은 컴파일 될 때 먼저 Servlet으로 바뀌는 작업이 이루어 지기 때문에 해당 jsp파일의 servlet은 웹 컨테이너가 생성될 때 만들어 집니다.

그런 다음 servlet 매핑 역시 해주는데, 여기서 url을 jsp파일로 해줍니다. (작업할 곳은 jsp파일 이니까)

1
2
3
4
5
6
7
8
9
10
11
12
<servlet>
      <servlet-name>servletEx</servlet-name>
      <jsp-file>/jspEx.jsp</jsp-file>
      <init-param>
          <param-name>adminId</param-name>
          <param-value>admin</param-value>
      </init-param>
      <init-param>
          <param-name>adminPw</param-name>
          <param-value>1234</param-value>
      </init-param>
  </servlet>
cs


<init-param> 태그를 통해 초기화할 파라미터와 값을 설정해 줍니다. 설정을 다 하면 우리는 해당 servlet(jsp)에서 init단계에서 초기화 된 파라미터 값인 adminId와 adminPw라는 파라미터를 사용할 수 있게 됩니다.

이 때 이 파라미터 값을 가져올 수 있는 객체가 config 객체입니다.

jspEx.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
    <%!
    String adminId;
    String adminPw;
    %>
    
    <%
    adminId = config.getInitParameter("adminId");
    adminPw = config.getInitParameter("adminPw");
    %>
    
    <p>adminId : <%= adminId %></p>
    <p>adminPw : <%= adminPw %></p>
</body>
</html>
cs



보시는 바와 같이 따로 생성하지 않은 내장객체인 config의 getInitParameter() 메소드로 web.xml 파일에서 초기화 한 파라미터 값을 가져올 수 있습니다.


application


<init-parm>으로 해당 서블릿 내에서만 사용할 수 있는 파라미터를 초기화 했다면 <context-parm>으로 어플리케이션(프로젝트) 내에있는 모든 JSP 파일에서 사용할 수 있는 파라미터를 초기화 할 수 있습니다.

web.xml

1
2
3
4
5
6
7
8
<context-param>
      <param-name>imgDir</param-name>
      <param-value>/upload/img</param-value>
</context-param>
<context-param>
      <param-name>testServerIp</param-name>
      <param-value>127.0.0.1</param-value>
</context-param>
cs


이렇게 이미지 디렉토리나 ip주소 같이 어플리케이션 내에서 공통적으로 자주 사용하는 데이터들을 설정해 줍니다.

이를 jsp에서 가져오는 객체는 application 객체입니다.

jspEx.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%
String imgDir;
String testServerIp;
%>
 
<%
imgDir = application.getInitParameter("ImgDir");
testServerIp = application.getInitParameter("testServerIp");
%>
    
    <p>imgDir : <%= imgDir %></p>
    <p>testServerIp : <%= testServerIp %></p>
cs

그리고 이 application 객체는 jsp 파일 내에서 setAttribure()와 getAttribute()메소드를 이용해 속성 값을 주고 가져올 수 있습니다. 

1번.jsp

1
2
3
4
<%
    application.setAttribute("connectedIP""123.45.67.89");
    application.setAttribute("connectedUser""test");
%>
cs

2번.jsp

1
2
3
4
<%
    connectedIP = (String)application.getAttribute("connectedIP");
    connectedUser = (String)application.getAttribute("connectedUser");
%>
cs

1번 jsp 파일에서 set을 한 파라미터 값을 2번 jsp 파일에서 get할 수 있습니다. 이 때 주의해야 할 점은 강제 형 변환이 필요합니다. 저장하고 싶은 타입이 만약 String이면 String으로 형변환을 해주어야 합니다.


Out


out객체는 이 전에도 사용해 봤듯이 주로 HTML코드를 작성할 때 사용합니다.

1
2
3
4
5
<%
    out.print("<h1>Hello JAVA world !</h1>");
    out.print("<h2>Hello JAVA world !</h2>");
    out.print("<h3>Hello JAVA world !</h3>");
%>
cs


Exception


JSP에서 에러가 발생했을 때 이 에러를 닮고 있는 객체입니다.

이 객체를 사용하기 전에 먼저 페이지 지시어로 에러페이지를 설정해 주어야 합니다.

<%@ page errorPage = 'errorPage.jsp' %>

에러는 errorPage.jsp로 보내라는 페이지 지시어 입니다. 그러면 해당 페이지에서는 

<%@ page isErrorPage = 'true' %>

라는 지시어로 이 페이지는 에러페이지가 맞다는 true를 넣어줍니다. 이 값에는 디폴트 값으로 false가 설정되어 있습니다.

이렇게 페이지 지시어와 페이지를 만들었으면 에러페이지에서

<%
String str = exception.getmessage();
%>

이렇게 exception 객체의 getmessage() 메소드로 에러 정보를 져올 수 있습


728x90
반응형

'Spring&Spring Boot > JSP' 카테고리의 다른 글

Cookie  (0) 2019.01.23
Servlet 데이터 공유  (1) 2019.01.22
JSP request, response  (0) 2019.01.20
JSP 스크립트  (0) 2019.01.19
doGet, doPost  (3) 2019.01.18
댓글