일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컨텍스트 초기화 객체
- 스트림
- OOP
- File
- 자바I/O
- 서블릿 파라미터
- 객체
- 자바설치
- 자바
- 자바문제
- 예제
- DA#
- 자바객체
- 서블릿 값 가져오기
- 테이블 설계
- 서블릿 예제
- 자바 암호화
- 스택
- 자바공부
- 오라클
- 입출력
- java
- Servlet
- 서블릿 동작방식
- 조건문
- 서블릿
- 자바기초
- 숫자야구
- SQL
- 설치방법
- Today
- Total
다양한 관심 :)
java- servlet ( 서블릿 ) 본문
- servlet(서블릿) : 컨테이너(서블릿 엔진)에 의해 관리되는 자바기반 웹 컴포넌트,
동적인 웹 컨텐츠 생성을 가능하게 해준다.
- 컨텍스트 패스(Context Path) : WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 path,
이클립스에서 프로젝트를 생성하면 자동으로 server.xml에 추가
사용하기 전 기본적으로 알아야할 것 **
전체 요청 URL 주소 : http://localhost:80/servletTest
클라이언트가 요청하는 URL정보
요청을 보낼 서버의 IP주소 : Port번호/ App이름 / 달라고 요청하는 HTML
예 ) 전체 요청 URL 주소 : localhost:80/servletTest/servletTest01.html
- http : 프로토콜
- localhost : 컴퓨터 이름 or 도메인명 or IP주소
- 80 : PORT번호 ( 웹은 80번이 기본이라 80번일 경우에는 생략이 가능)
- /servletTest : contextPath (컨텍스트 패스 = 보통 프로젝트 이름 으로 지정된다)
- /servletTest01.do : 서블릿 요청 URL패턴
- 웹 어플리케이션 구조
반드시 모든 웹 어플리케이션이 공통으로 가져야 하는 디렉터리와 파일이 존재한다.
-
WEB-INF 디렉토리
웹 어플리케이션에서 서비스하려는 클래스 파일이 있다면 WEB-INF/classes 클래스 파일들이 jar로 압축되어 있다면 WEB-INF/lib에 존재해야한다. 이는, WAS를 구성하는 어플리케이션 서버들이 자동으로 인식하게끔 하기위함이다.
-
web.xml
web.xml은 WEB-INF 안에 있어야 한다.
Servlet 인터페이스 :
Servlet 인터페이스는 서블릿 프로그램을 개발할 때, 반드시 구현해야 하는 메소드를 선언하고 있는 인터페이스
- init()
- service()
- destroy()
- getServletConfig()
- getServletInfo()
예제 = 배포 서술자(DD - Deployment Descriptor ==> web.xml)를 이용해서 실행할 Servlet을 설정하여 처리하는 예제
* serialversionUID를 이해하려면 직렬화부터 다시 봐야함
ServletTest01
public class ServletTest01 extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8"); // 응답 문서의 인코딩 방식 지정
resp.setContentType("text/html; charset=utf-8"); //응답 문서의 ContentType지정
//처리한 내용을 응답으로 보내기위해 PrintWriter객체 생성
PrintWriter out = resp.getWriter(); //웹브라우저에 출력하는 객체
// 처리한 내용을 출력 한다
//방법 1) append() 메서드 이용하기
out.append("<html>");
out.append("<head>");
out.append("<meta charset='utf-8'>");
out.append("<title>첫번째 Servlet 연습 </title>");
out.append("</head>");
out.append("<body>");
out.append("<h1 style = 'text-align:center;'>");
out.append("안녕하세요. 첫번째 Servlet 프로그램 입니다. <br>");
out.append("servlet at : " + req.getContextPath());
out.append("</h1>");
out.append("</body>");
out.append("</html>");
}
//doPost() 메서드 => Post방식의 요청을 처리하는 메서드
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
- 여기에서 대부분 service()메서드 또는 doGet()메서드나 doPost()메서드를 재정의해서 작성한다.
- doGet()메서드나 doPost()메서드는 service()메서드를 통해서 호출된다.
- HttpServletRequest객체 : 서비스 요청에 관련된 정보 및 메서드를 관리하는 객체 (요청을 받을때)
- HttpServletResponse객체 : 서비스 응답에 관련된 정보 및 메서드를 관리하는 객체 (요청을 보낼때)
- doGet() : Get방식의 요청을 처리하는 메서드
- doPost() : Post방식의 요청을 처리하는 메서드
ServletTest01을 실행하기 위해 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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>servletTest</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>servletTest01</servlet-name>
<servlet-class>test.ServletTest01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletTest01</servlet-name>
<url-pattern>/servletTest01.do</url-pattern>
</servlet-mapping>
</web-app>
- <servlet> : Alias를 설정
- <servlet-name> 에는 servlet이름 (아래 매핑 설정에서의 servlet-name과 같아야한다)
- servlet-class에는 패키지+클래스 이름 (개발자에 의해 작성된 실제 클래스 이름)
- <servlet-mapping> : 위에 작성한 servlet을 찾아서 연결해준다고 생각, URL을 서블릿 이름에 연결해준다
- <servlet-name> 에는 찾아줄 이름 : 위에 작성한 이름을 찾아준다고 생각 -> 그래서 같아야한다.
- <url-pattern> : 찾기를 원하는 주소 : 클라이언트의 요청 URL에서 앱(프로젝트)이름 뒤에 오는 부분,
슬래쉬( / )로 시작해야한다.
'프로그래밍 공부 > JAVA' 카테고리의 다른 글
java - servlet (서블릿 ) 동작방식 (0) | 2020.11.27 |
---|---|
java - servlet ( 서블릿) 2 (0) | 2020.11.26 |
Java - 암호화 (양방향) (0) | 2020.11.23 |
Java - 암호화 (단방향) (0) | 2020.11.23 |
ibatis 환경 설정 - sqlMapConfig (0) | 2020.11.18 |