"SERVLET"에 해당되는 글 - 2건
Post
Servlet 값 초기화, 리스너
ServletConfig
- 특정 Servlet이 생성될 때 초기에 필요한 데이터가 있음.
- WebContent/WEB-INI/web.xml에 기술하고 Servlet 파일에서는 Servlet.Config 클래스를 이용해서 접근.
- 아래 예제에서 InitParam 주소를 IP로 mapping 하고 있다.
- 또 Parameter id, pw에 값을 초기화할 수도 있다.
WebContent\web.xml
<?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/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</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>InitParam</servlet-name>
<servlet-class>com.java.w.InitParam</servlet-class>
<init-param>
<param-name>id</param-name>
<param-value>id</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>12345</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitParam</servlet-name>
<url-pattern>/IP</url-pattern>
</servlet-mapping>
</web-app>
InitParam.java
package com.java.w; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class InitParam */ @WebServlet("/InitP") public class InitParam extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public InitParam() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); String id = getInitParameter("id"); String pw = getInitParameter("pw"); System.out.println("id ="+id); System.out.println("pw ="+pw); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
Servlet에서 Parameter를 직접 초기화 할 수도 있다.
- @WebServlet("/InitP") 되어있는 소스코드를 아래와 같이 수정한다.
- @WebServlet(urlPatterns= {"/InitP"}, initParams={@WebInitParam(name="id", value="id"), @WebInitParam(name="pw", value="1234")})
Servlet 데이터 공유
- 여러 Servlet에서 특정 데이터를 공유할 수 있다.
- web.cml파일에 context parameter 을 넣는다.
- 여러 Servlet이 사용하므로 코드 상단에 추가해야한다.
- ServletContext 메소드를 이용해서 데이터를 불러온다.
web.xml
<context-param>
<param-name>id</param-name>
<param-value>abc</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>123</param-value>
</context-param>
jsp
String id = getServletContext().getInitParameter("id");
String pw = getServletContext().getInitParameter("pw");
System.out.println("id="+id);
System.out.println("pw="+pw);
웹 어플리케이션 감시
웹어플리케이션을 감시하는 Listener를 만들수 있다.
ServletContextListener을 상속하면 감시 클래스가 된다.
웹 어플리케이션 시작, 종료 시 호출된다.(호출함수:contextInitialized, contextDestroyed)
WebContent\web.xml
<?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/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</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>
<listener>
<listener-class>
com.java.w.ServetlL
</listener-class>
</listener>
</web-app>
package com.java.w; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServetlL implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextDestroyed"); } @Override public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextInitialized"); } }
Servlet Listener
- web.xml 에서 Lisner를 선언하지 않고 Servelt 소스코드에서(class 이름 위에)@WebListener 라고 명시해도 Listener 클래스가 된다
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
JSP 태그, request, response, 지시자, 액션태그 (0) | 2018.10.20 |
Servlet Get,Post 동작 (0) | 2018.10.19 |
Servlet 설정, 예제 (0) | 2018.10.18 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |
Post
Servlet 설정, 예제
Servlet 이란
- JSP는 Html 위에서 JSP 문법을 사용하는 서버Side 파일.
- JSP와 다르게 순수 Java코드만 사용.
- 모델1은 JSP가 Model, View, Controller 기능을 전부 수행하지만
- 모델2는 JSP가 View, Servlet이 Controller 기능을 각 각 따로수행하는 것으로 이해했다.
- 모델2에서 JavaBeans가 Model이라고 한다.
Servlet 파일 생성
- 프로젝트 생성 후 Java Resources 폴더 오른쪽클릭-New-Servlet 클릭
- JavaPackage, Class Name을 작성(각각 com.TestProject, HelloServlet 이라고 적음)
- 그리고 Next를 눌러서 URL mappings 에 이름을 변경한다.
- usr mappings 값은 java 소스코드에 접근하기 위한 urlName 이다.
- ex ) http://localhost:8090/<ProejctName>/<urlName>
Servlet 파일 작성
- Java에서 html 태그를 쓰기위해서 PrintWriter 객체를 사용.
- doGet함수에서 다음과 같이 소스를 작성한다.
- 서버를 실행시켜 http://localhost:8090/<ProejctName>/<urlName> 도메인으로 접속하면 'Hello World'가 보인다.
- but 아래 예제를 실행하면 크롬에서는 태그 자체가 보인다.
- response.getWriter().append("Served at: ").append(request.getContextPath());
- 위 소스를 지우면 또 잘 보이고, html 문서 새로 만들어서 동일하게 출력하게 만들었는데도 잘된다.
- java 파일 변환과정에서 크롬이 잘못해석하는 변환이 있는건가?싶다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
PrintWriter out = response.getWriter();
out.print(" <br>");
out.print("<html>");
out.print("<head>");
out.print("</head>");
out.print("<body>");
out.print("<p>Hello World</p>");
out.print("</body>");
out.print("</html>");
}
Servlet class 파일 확인
- java 파일을 class 파일로 변환한 것을 확인해본다.
- 자신의 javaProjectPath\build\classes\com\ProjectName\ 폴더안에 class 파일이 있는것을 확인할 수 있다.
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
JSP 태그, request, response, 지시자, 액션태그 (0) | 2018.10.20 |
Servlet 값 초기화, 리스너 (0) | 2018.10.20 |
Servlet Get,Post 동작 (0) | 2018.10.19 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |