2016. 1. 5. 14:54ㆍlanguage/jsp
ServletConfig 초기화 파라미터를 이용하는 예제
위 예제에서 서블릿의 메소드 구현부에서 JDBC 코드가 있었다.
이번 예제는 JDBC 설정을 ServletConfig 초기화 파라미터를 이용하도록 만든다.
아래 서블릿을 /WEB-INF/src/example 폴더에 만든다.
InitParamServlet 서블릿
package example;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InitParamServlet extends HttpServlet {
private String url;
private String user;
private String passwd;
private String driver;
@Override
public void init() throws ServletException {
url = this.getInitParameter("url");
user = this.getInitParameter("user");
passwd = this.getInitParameter("passwd");
driver = this.getInitParameter("driver");
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM emp";
try {
con = DriverManager.getConnection(url, user, passwd);
stmt = con.prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
String empno = rs.getString(1);
String ename = rs.getString(2);
String job = rs.getString(3);
String mgr = rs.getString(4);
String hiredate = rs.getString(5);
String sal = rs.getString(6);
String comm = rs.getString(7);
String depno = rs.getString(8);
out.println(empno + " : " + ename + " : " + job + " : " + mgr +
" : " + hiredate + " : " + sal + " : " + comm+" : " + depno + "<br />");
}
} catch (SQLException e) {
e.printStackTrace(out);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
ServletConfig 초기화 파라미터 선언은 web.xml 파일에서 아래와 같이 servlet 엘리먼트의 자식 엘리먼트 init-param 를 이용한다.
web.xml
<servlet>
<servlet-name>InitParamServlet</servlet-name>
<servlet-class>example.InitParamServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:oracle:thin:@127.0.0.1:1521:XE</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>scott</param-value>
</init-param>
<init-param>
<param-name>passwd</param-name>
<param-value>tiger</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitParamServlet</servlet-name>
<url-pattern>/initParam</url-pattern>
</servlet-mapping>
위에서 설정한 ServletConfig 의 초기화 파라미터의 값은 ServletConfig 의 getInitParameter(String name) 메소드를 이용하면 얻어진다. 톰캣을 재시작한 후에
http://localhost:8989/initParam을 방문하여 테스트한다.
ServletContext 초기화 파라미터를 이용하는 예제
위에서 ServletConfig 의 초기화 파라미터는 해당 서블릿에서만 참조 할 수 있다.
ServletContext 초기화 파라미터는 웹 애플리케이션 내 모든 서블릿과 JSP에서 참조할 수 있다.
ServletContext 초기화 파라미터는 context-param 엘리먼트를 이용한다.
엘리먼트의 위치는 web.xml 엘리먼트 순서를 참조한다.
기존의 servlet 선언부보다 먼저 있어야 한다.
web.xml 열고 아래 내용을 추가한다.
web.xml
<context-param>
<param-name>url</param-name>
<param-value>jdbc:oracle:thin:@127.0.0.1:1521:XE</param-value>
</context-param>
ServletContext 객체의 레퍼런스는 서블릿에서 getServletContext() 메소드를 이용하면 얻을 수 있다.
위에서 선언한 ServletContext 의 초기화 파라미터 url 의 값은 ServletContext 의 getInitParameter(String name) 메소드를 이용하여 구한다.
따로 예제를 만들지 않고 위에서 작성한 SimpleSerlvet 에 다음과 같이 코드를 적당한 위치에 추가한 후 다시 컴파일한다.
SimpleServlet 서블릿 편집
ServletContext sc = getServletContext();
String url = sc.getInitParameter("url");
out.println(url);
톰캣을 재실행하고
http://localhost:8989/simple을 방문하여 테스트한다.
InitParamServlet 에서 url 을 이 ServletContext 초기화 파라미터를 이용해서 설정하도록 코드를 수정하고 테스트해 보자.
참고
http://docs.oracle.com/javaee/7/api/index.html?overview-summary.html
http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/
http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
http://commons.apache.org/proper/commons-io/download_io.cgi
http://commons.apache.org/proper/commons-fileupload/using.html
http://www.albumbang.com/board/board_view.jsp?board_name=free&no=292
http://www.docjar.com/docs/api/javax/servlet/GenericServlet.html
http://www.java-school.net/jsp/Servlet
도움이 되셨다면 공감을 부탁드립니다. ^^
'language > jsp' 카테고리의 다른 글
[필독][기초] / JSP 목차 (0) | 2016.01.05 |
---|---|
[필독][기초] / 서블릿 / servlet [part 9] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 8] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 7] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 6] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 4] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 3] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 2] (0) | 2016.01.05 |
[필독][기초] / 서블릿 / servlet [part 1] (0) | 2016.01.05 |
jsp / 브라우저 구분 / java / javascript (0) | 2016.01.05 |