일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Maven Project
- springboot
- tomcat
- HTML Code
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- NextJs
- MariaDB
- PG-Strom
- Java
- Spring
- BRIN
- orioledb
- tortoise SVN
- Eclipse
- graph database
- Windows 10
- Spring Boot
- PostgreSQL
- typeorm
- STS
- Spring Cloud
- JSP
- NestJS
- Next.js
- OGM
- exit code = -805306369
- 서브라임 텍스트
- maven
- loadcomplete
- HTML Special Entity
- Today
- Total
Undergoing
ServletContext 본문
ServletContext : 서블릿의 환경을 표현. JSP나 서블릿을 컨테이너 혹은 다른 웹 App와 연결해줌
Inferface of ServletContext |
getInitParameter(String) getInitParameterNames() getAttribute(String) getAttributeNames() setAttribute(String) removeAttribute(String) ----------------------- getMajorVersion() getServerInfo() ----------------------- getRealPath(String) getResourceAsStream(String) getRequestDispatcher(String) ----------------------- log(String) // 기타 메소드 |
서블릿의 환경 정보는 다음과 같이 호출 가능
- ServletContext context = getServletContext();
ServletContext Interface는 다음 페이지에서 확인 가능
- http://docs.oracle.com/javaee/1.3/api/javax/servlet/ServletContext.html
내장 변수 예시 - 현재 사용하는 서버 정보와 버전 표시
ServerInfo.java <== Servlet |
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ServerInfo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = getServletContext(); String serverInfo = context.getServerInfo(); int majorVersion = context.getMajorVersion(); int minorVersion = context.getMinorVersion(); request.setCharacterEncoding("euc-kr"); response.setCharacterEncoding("euc-kr"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println(" <HEAD><TITLE>웹 서버 정보</TITLE></HEAD>"); out.println(" <BODY>"); out.printf("웹 서버의 종류 : %s <br>", serverInfo); out.printf("지원하는 서블릿 버전 : %d.%d <br>", majorVersion, minorVersion); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } } |
* JSP 내장 변수를 이용하면 더 쉽게 구현 가능
ServerInfo.jsp <== JSP |
<%@ page contentType = "text/html; charset = euc-kr;" pageEncoding = "euc-kr"%> <%@ page import = "java.io.*, java.util.*"%> <html> <head> <title>웹서버 정보</title> </head> <body> 웹 서버의 종류 : <%= application.getServerInfo() %><br/> 지원하는 서블릿 버전 : <%= application.getMajorVersion() %>.<%=application.getMinorVersion() %><br/> </body> </html> |
getInitParamater : 웹 어플리케이션의 초기화 파라미터 값을 불러옴
<web-app> <context-param> <param-name>DB_NAME</param-name> <param-value>malldb</param-value> </context-param> </web-app> |
String str = application.getInitParameter("DB_NAME"); //DB_NAME 은 초기화 파라미터의 이름 |
application.log를 활용하여 별도로 파일열람 코드를 작성하지 않고 바로 로그 기록 가능
- application.log("blahblah");
- tomcat의 서브 dir 중 log 폴더에 저장됨(localhost.yyyy-mm-dd.log)
- Eclips로 코딩할 경우 application.log를 통해 log가 생성되지 않으므로 다음 페이지에서 필요한 소스를 받아야 함
[http://www.hanb.co.kr/brain/board/view.html?id=jsp&ma_id=15068&pg=2]
LogTest.jsp |
<%@ page contentType = "text/html; charset =euc-kr;" pageEncoding = "euc-kr" %> <%@ page import = "java.io.*, java.util.*"%> <HTML> <HEAD> <TITLE>로그 출력 테스트</TITLE> </HEAD> <BODY> 로그가 정상적으로 호출되는지 출력하는 페이지입니다. <%= request.getParameter("NAME") %> 님<br/> <% application.log("[로그 출력 테스트] JSP 페이지가 호출되었습니다."); %> </BODY> </HTML> |
같은 웹 어플리케이션에 속하는 웹 컴포넌트들끼리 데이터를 주고받는 방법
- application.setAttribute("데이터 이름", "데이터 값");
- String str = (String) application.getAttribute("데이터 이름");
- application.removeAttribute("데이터 이름");
StoreName.jsp |
<%@ page contentType = "text/html; charset = euc-kr;" pageEncoding = "euc-kr"%> <%@ page import = "java.io.*, java.util.*"%> <% String name = request.getParameter("NAME"); application.setAttribute("NAME", "김숙자"); %> <HTML> <HEAD> <TITLE>웹 애플리케이션 데이터 저장하기</TITLE> </HEAD> <BODY> NAME 데이터가 저장되었습니다. </BODY> </HTML> |
ReadName.jsp |
<%@ page contentType = "text/html; charset = euc-kr;" pageEncoding = "euc-kr"%> <%@ page import = "java.io.*, java.util.*"%> <HTML> <HEAD> <TITLE>웹 애플리케이션 데이터 조회하기</TITLE> </HEAD> <BODY> 이름 : <%= application.getAttribute("NAME") %> </BODY> </HTML> |
ClearName.jsp |
<%@ page contentType = "text/html; charset = euc-kr;" pageEncoding = "euc-kr"%> <%@ page import = "java.io.*, java.util.*"%> <% application.removeAttribute("NAME"); %> <HTML> <HEAD> <TITLE>웹 애플리케이션 데이터 삭제하기</TITLE> </HEAD> <BODY> NAME 데이터가 삭제되었습니다. </BODY> </HTML> |
각 메서드의 전송 범위와 용도
메서드의 소속 |
데이터의 전송 범위 | 용도 |
javax.servlet.jsp.JspContent |
현재 JSP 페이지 내 | 같은 JSP 페이지 안에 있는 스크립팅 요소와 익스프레션 언어 간의 데이터 교환 |
javax.servlet.ServletRequest | 현재 웹 컴포넌트 및 forward, include 메서드를 통해 호출되는 또다른 웹 컴포넌트 | forward, include 메서드를 통해 호출되는 웹 컴포넌트로의 데이터 전달 |
javax.servlet.http.HttpSession |
같은 세션에 속하는 모든 웹 컴포넌트 | 여러 화면으로 구성되는 애플리케이션에서 웹 컴포넌트 간의 데이터 전달 |
javax.servlet.ServletContext |
같은 웹 애플리케이션에 속하는 모든 웹 컴포넌트 | 같은 웹 애플리케이션 폴더에 속하는 웹 컴포넌트들 간의 데이터 공유 |
웹 어플리케이션에 관련된 파일 경로명을 가져오는 메서드
- String appPath = application.getContextPath();
- getContextPath()는 웹 어플리케이션의 URL 경로명을 리턴함
* getRealPath : 웹 어플리케이션 Dir 내에 있는 파일의 경로명을 파일시스템 전체에 대한 절대 경로명으로 바꾸어서 리턴
[String absolutePath = application.getRealPath("/sub1/aaaa.html");
'개발 > Web Development' 카테고리의 다른 글
Standard Action (0) | 2012.05.31 |
---|---|
Expression Language (0) | 2012.05.18 |
서블릿의 Life Cycle (0) | 2012.05.14 |
쿠키 입력과 삭제 (0) | 2012.05.10 |
쿠키와 세션 (0) | 2012.05.10 |