jsp&servlet

jsp 내장객체

풀스택 개발자 2020. 6. 30. 17:57

request, response 외 jsp에서 기본적으로 제공하는 객체에 대해서 학습합니다.

 

config 객체

웹 환경설정이라고 할 수 있는 web.xml에 어떠한 데이터를 명시해주고 그것을 getInitParameter()이라는 메소드를 사용하여 jsp에서 데이터를 공유하는 방식

 

동작방식

web.xml에서 init-param 선언 (servletEx servlet에서만 사용가능)

<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>

 

jsp

jsp에서 web.xml에서 선언한 init-param 데이터를 불러와서 사용할 수 있습니다.

<%!
		String adminId;
		String adminPw;
	%>
	
	<%
			adminId = getServletConfig().getInitParameter("adminId");
			adminPw = getServletConfig().getInitParameter("adminPw");
	%>

 

jsp & web.xml 실제 코딩 내용

결과

 

application 객체

config객체는 하나의 servlet에서만 데이터를 사용할 수 있는 반면 application객체는 프로젝트 전체에서 데이터를 공유할 수 있는 방법 입니다

 

 

web.xml에 context param 설정

  <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>
  

 

jspEx.jsp , jspEx2.jsp 두개의 jsp에서 comtext-param 데이터를 호출해서 사용해보겠다.

 

서버를 실행시켜보면

 

다음과 같이 실행된다 이로써 어떤 jsp 어떤 프로젝트에서도 context-param을 공동으로 사용가능한것을 알 수 있다!

 

jsp에서 데이터를 setting 하고 다른 jsp에서 그 데이터를 사용하는법

 

jspEx.jsp

		application.setAttribute("id", "oh");
		getServletContext().setAttribute("connectIP", "192.0.0.1");

 

jspEx2.jsp

    <%
		String connectIP = (String)getServletContext().getAttribute("connectIP");
		String id = (String)application.getAttribute("id");	
	%>
	<p>connectIP =<%= connectIP %>
	<p>id =<%= id %>

 

jspEx.jsp에서 데이터 셋팅후

jspEx2.jsp에서 데이터 대입

 

out 객체

out.print라는 메소드를 사용해서 html 사용가능

ex)out.print("<p>hello</p>");

 

exception 객체

에러가 발생했을때 에러처리를 수행해주는 객체

 

에러가 있는 jsp

<%@page import="java.util.ArrayList"%>
<%@ 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 imgDir;
		String testServerIp;
		String str;
	%>
	
	<%
		imgDir = application.getInitParameter("imgDir");
		testServerIp = application.getInitParameter("testServerIp");
		out.print(str.toString());//초기화를 안해서 에러가 나는 부분
			
	%>
	<p>imgDir =<%= imgDir %></p>
	<p>testServerIp =<%= testServerIp %></p>
</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();//에러내용을 msg에 대입
	%>
	<h1>error message: <%= msg %></h1>
</body>
</html>

 

결과

error message: null

 

jsp페이지 내에서 에러가 발생하면 지정해둔 에러페이지로 이동해서 등록한 로직대로 에러페이지가 실행됨