일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- removeClass
- 증가값
- 파일질라설치오류
- SUB함수
- index %
- selectedIndex
- slideUp
- 주석이 먹히지 않을 때
- FileZilla다운로드
- 파일질라설치
- Math.round()
- Math.floor()
- Excel
- hide
- Git
- 1521
- toFixed()
- Math.ceil()
- 소스트리인증실패
- is_check
- FileZilla설치
- selectoptions
- excel중복체크
- push오류
- calc.plus
- Parent
- ctrl+/
- calc.minus
- addClass
- 파일질라다운로드
- Today
- Total
잡동사니에도 사랑을
Servlet 정리 - Chapter.1 본문
Servlet
: 웹에서 실행하는 프로그램
: html in JAVA
: public static void main(String[] args) 메소드가 없다
: 주기함수(Life Cycle)
: 반드시 public 이어야한다.
: new X (톰캣(서버)에 의해 생성되므로 new할 필요 없다)
: 서버안에 저장
# 주기함수(Life Cycle)
init() : 맨처음에 1번만 호출
↓
service() - doGet() : 클라이언트가 요청시마다 호출
- doPost()
↓
destroy()
: service는 추상이다 때문에 doGet, doPost로 Override(재구현)한다
서비스
1. get방식
: default
: 주소표시줄(Query String)를 통해서 이동
: 이동되는 데이터가 보인다
: 이동되는 데이터가 문자열만(String) 처리
2. post방식
: 클라이언트가 post로 요청 시에만 적용
: 내부적으로(페이지단위) 이동 - 대량데이터를 옮길 수 있다
: 이동되는 데이터가 안 보인다.
- Servlet 실행
1. 서버(Tomcat)에 helloServlet 프로젝트를 올리고
2. 무조건 web.xml 찾아서 읽는다.
왜냐? xml 파일 자체가 환경설정인데, helloServlet에 대한 환경 설정해주므로 자연스럽게 읽는다.
3. web.xml에 Servlet을 등록해야 한다.
http://localhost:8080/helloServlet/com.hello.HelloServlet - X
http://localhost:8080/helloServlet/HelloServlet - O
어느 패키지 안에 있는 클래스인지 모르기 때문에 package명과 함께 써줘야 한다. 절대 클래스명만 써주면 안된다.
=> <servlet-class>com.hello.HelloServlet</servlet-class>
Compile되어 기계어로 변형이 된 class파일을 원한다.
=> <servlet-class>com.hello.HelloServlet</servlet-class>.class
서블릿의 클래스는 원래 <servlet-class>com.hello.HelloServlet</servlet-class> 이 맞다
하지만 이름이 너무 기니까 <servlet-name>HelloServlet</servlet-name> 라고 써주는 것이다.
url은 브라우저에서 사용되는 웹 주소로, 쓸 때는 <url-pattern>/HelloServlet</url-pattern> 이라고 써주면 된다.
servlet을 써줄 때마다
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.hello.HelloServlet.class</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
을 쓰자니 너무 기니까.....
@WebServlet("/HelloServlet")을 써줌으로써 대체되었다.
하지만 두 가지를 다 써줄 경우,
"이름이 [HelloServlet]과 [com.hello.HelloServlet]인 두 서블릿들 모두 url-pattern [/HelloServlet]에 매핑되어 있는데, 이는 허용되지 않습니다." 라는 에러가 뜬다.
반드시 하나만 써줘야 한다.
JavaScript와 html은 기본적으로 웹을 포함해서 xml 입력이 필요 없지만 servlet 은 써줘야 한다.
앞서 언급한 바와 같이 두 가지 다 쓸 필요 없고, xml을 입력해주거나 간단하게 @WebServlet("/HelloServlet")을 써주면 된다.
하지만 Spring은 반드시 xml을 작성해줘야 한다.
init은 처음 한번만 쓰고, 클라이언트 요청이 있을 때마다 도는 건 doGet이다
doGet의 서비스가 끝나면 destroy가 호출된다.
// html 태그가 없으면 찍히는 건 console창이다. 브라우저에 찍히는 건 없다.
// init, doGet, destroy 모두 CallBack 메소드이다.
service는 추상이라 doGet이나 doPost로 대신 처리한다.
////////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_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>helloServlet</display-name>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.hello.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
<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>
</web-app>