# web.xml에 파라미터 변수를 선언하고 jsp에서 가져와보자
#웹어플리케이션 초기화 파라미터 읽어오기
[ex] application.getInitParameter("aa") 사용법
web.xml ( <web-app> 안에 ) 다음과같이추가해줌
=======
<web-app>
<context-param>
<param-name>aa</param-name>
<param-value>bb</param-value>
</context-param>
<context-param>
<param-name>cc</param-name>
<param-value>dd</param-value>
</context-param>
</web-app>
a.jsp
=========
<%=
application.getInitParameter("aa")
%>
=> bb 출력됨
- 만약 데이터베이스의 아이디와 비밀번호를
a1.jsp부터 a100.jsp전부에서 데이터베이스 사용할경우 만약 아이디가 변경되면
전부다 변경해야함
하지만 이렇게 초기화파라미터로 설정해두고 각 모든 jsp페이지에서 파라미터를 가져다쓴다면 web.xml에 파라미터값만 바꾸면됨
[ex] application.getInitParameterNames() 사용법
a.jsp
===============
<%
Enumeration<String> s=application.getInitParameterNames();
while(s.hasMoreElements()){
out.println(s.nextElement()+"<br>");
}
%>
=> aa cc 출력됨
[ex] localhost:8282/ppp1/app.do 해서 실행시 초기화파라미터에저장된 bb출력되기
( 서블릿과 url패턴을 사용하는법(초기화파라미터설정법) + application과 out을 생성해보기 )
1. 서블릿을 패키지 a.b
서블릿명을 Test로 만든다
2. 서블릿 doGet부분에 추가
ServletContext application=this.getServletContext();
PrintWriter out=response.getWriter();
String a=application.getInitParameter("aa");
out.println(a);
- this는 HttpServlet
3. 실행시 web.xml에서 <url-pattern> /app.do </url-pattern> 이라고되어있기에 실행시
http://localhost:8282/app1/app.do 하면 bb 출력됨
만약 <url-pattern>에 /가없이 app.do 라고 정의해두면
현재프로젝트나 카테고리명등 어디서든 app.do를 실행가능??? => 그냥 오류나네....
[ex] web.xml의 서블릿을 자세히 살펴보기
<servlet>
<description></description>
<display-name>Test</display-name> 1
<servlet-name>Test</servlet-name>
<servlet-class>a.b.Test</servlet-class> 3
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name> 2
<url-pattern>/app.do</url-pattern> 4
</servlet-mapping>
- 1 의 이름과 2의 이름은 같아야함
- 3경로의 Test는 서블릿이어야함 ( HttpServlet 의 자손이어야함! )
- 4에의해는 ~8282/프로젝트명/app.do 해서 실행함
# <init-param> 의 용도 (위치는 서블릿태그안에! )
(위에배운거(<context-param>)랑 차이 비교할것)
web.xml
============
<web-app>
<context-param> // context-param은 application내장객체로 접근가능하며
// 한 web플젝에 공통으로 쓰는것들
<param-name>aa</param-name>
<param-value>bb</param-value>
</context-param>
<servlet>
<description></description>
<display-name>Test</display-name>
<servlet-name>Test</servlet-name>
<servlet-class>a.b.Test</servlet-class>
<init-param> 이거추가 // init-param은 해당 서블릿에서 쓰는거
<param-name>ee</param-name>
<param-value>ff</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/app.do</url-pattern>
</servlet-mapping>
</web-app>
Test.java ( 서블릿... HttpServlet 자손 )
=============
ServletConfig config=this.getServletConfig();
String b=config.getInitParameter("ee");
out.println(b);
=> 실행시 ff가 출력됨
[*] <init-param>와 <context-param>의 차이점
<init-param>은 해당서블릿에서만 사용가능
<context-param>는 모든서블릿에서 사용가능
이거 mvc패턴에서 꼭나옴!!!
'JSP' 카테고리의 다른 글
로그인 화면이동( 화면이동방법 3가지 ) (0) | 2019.03.09 |
---|---|
총 방문자수 찍기 (0) | 2019.03.09 |
캐쉬삭제법( 삭제라기보단 캐쉬저장 안하는법 ) (0) | 2019.03.08 |
JSP한글전송(인코딩, 디코딩) (0) | 2019.03.08 |
서블릿의 get, post방식 (0) | 2019.03.08 |