1. config
config객체는 web.xml파일에 데이터를 저장을 해놓고 getInitParameter() 메서드로 JSP에서 데이터를 공유하게됩니다.
위의 그림에서 오른쪽 코드를 보면 init-param태그 안에 파라미터 데이터가 들어가있습니다.
adminId라는 이름으로 admin이라는 값이 들어가있고 adminPw라는 이름으로 1234라는 값이 들어가있네요.
이렇게 미리 데이터를 저장해놓고 getServletConfig()를 이용해 config객체를 사용할건데요.
config객체에서도 getInitParameter()메서드로 저장해놓은 데이터를 가지고 올수있습니다.
<%@ 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>
<%
String adminId;
String adminPw;
adminId = config.getInitParameter("adminId");
adminPw = config.getInitParameter("adminPw");
%>
<p>adminId : <%=adminId %></p>
<p>adminPw : <%=adminPw %></p>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/nsjavaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>Test07</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>
<servlet-mapping>
<servlet-name>servletEx</servlet-name>
<url-pattern>/jspEx.jsp</url-pattern>
</servlet-mapping>
</web-app>
위의 코드를 실행시켜보면 web.xml에 저장해놓은 데이터를 config 객체를 통해서 가져올수 있습니다.
config 객체는 내장객체 이기 때문에 따로 선언을하지 않아도 됩니다.
2. application
application 객체는 web.xml파일에서 context param을 저장해놓고 어플리케이션 내에 있는 모든 jsp에서 getInitParameter() 메서드를 이용해서 사용할수 있는 객체를 가지고 옵니다.
<%@ 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>
<%
String imgDir;
String testServerIp;
String realServerIp;
imgDir = application.getInitParameter("imgDir");
testServerIp = application.getInitParameter("testServerIp");
realServerIp = application.getInitParameter("realServerIp");
%>
<p>imgDir : <%=imgDir %></p>
<p>testServerIp : <%=testServerIp %></p>
<p>realServerIp : <%=realServerIp %></p>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/nsjavaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>Test07</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>
<context-param>
<param-name>realServerIp</param-name>
<param-value>60.0.30.1</param-value>
</context-param>
</web-app>
application객체를 사용하기 위해서는 context-param태그를 이용해서 데이터를 저장을 해줍니다!
config객체의 경우 서블릿에 매핑된 하나의 경로에서만 사용이 가능했지만 application은 어플리케이션 내에있는 모든 JSP파일에서 사용이 가능합니다!
application 객체에는 setAttribute() 메서드와 getAttribute() 메서드가 있습니다.
자바에서 getter와 setter와 같은역할을 하는데요!
setAttribute()는 데이터를 넣어주는 역할을 하며 getAttribute()는 데이터를 가지고 오는 역할을 합니다.
<%@ 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>
<%
application.setAttribute("testIp", "255.255.255.255");
String testIp = (String)application.getAttribute("testIp");
%>
<p>testIp : <%=testIp %></p>
</body>
</html>
이런 식으로 setAttribute메서드를 이용하여 testIp라는 이름에 255.255.255.255의 값을 넣어주었습니다.
또한 getAttribute메서드를 이용해서 testIp를 가져왔습니다.
한가지 주의해야 할점은 getAttribute메서드로 값을 가져올때는 String으로 형변환을 해주어야합니다!
3. out
<%@ 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>
<%
out.print("<h1>Hello, World!</h1>");
%>
</body>
</html>
out객체는 별게 없습니다.
자바에서 System.out.println으로 콘솔에 출력시키는것처럼 HTML 코드를 출력시켜주는 객체입니다!
4. Exception
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="errorPage.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
String str;
%>
<%
out.print(str.toString());
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
response.setStatus(200);
String msg = exception.getMessage();
out.print("<h1>error message : " + msg);
%>
<h1>error message : <%=msg %></h1>
</body>
</html>
exception은 말그대로 예외 객체입니다.
코딩을 하다가 무었인가 예외가 발생하면 에러메세지를 발생시키는데요.
위의 코드에서 String str;은 선언은 되었지만 초기화가 되어있지 않아 값이 들어있지 않습니다.
그런데 str에 toString() 메서드를 사용하게 되면 당연히 예외를 발생시키겠죠!
예외 처리를 해주기 위해서는
<%@ page errorPage="errorPage.jsp" %>
로 에러가 발생하면 어느페이지로 가라 라고 설정을 해주어야합니다.
errorPage.jsp파일을 보면
<%@ page isErrorPage="true" %>
이 페이지가 에러페이지인지 아닌지 알려주어야겠죠??
코드를 실행시켜보면 200에러가 발생하여 해당페이지로 오게 되는데요.
해당페이지에서 응답 상태가 200이면 msg라는 변수에 에러메세지를 저장하네요!
저는 또 여기서 굳이 두가지 방법으로 에러메세지를 출력시켜보았습니다.
에러메세지를 보니까 null이 나오네요.
아무 값도 없는 null인 상태인데 toString() 메서드를 사용해서 nullPointException 에러를 발생시켰습니다.
이 글은 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌를 수강하며 공부한 내용을 정리한 글입니다.
'Java 관련 > JSP & Servlet' 카테고리의 다른 글
[JSP & Servlet] Cookie (0) | 2022.08.19 |
---|---|
[JSP & Servlet] Servlet 데이터 공유 (0) | 2022.08.18 |
[JSP & Servlet] request객체, response객체 (0) | 2022.08.16 |
[JSP & Servlet] JSP 스크립트<%! %>, 스크립트릿<% %>, 주석 <%-- --%> (0) | 2022.08.14 |
[JSP & Servlet] form 데이터 처리 (0) | 2022.08.13 |