유디의 공간정보·개발일기

4. 0812_Servlet 본문

JSP & Servlet

4. 0812_Servlet

55yudi 2021. 8. 13. 10:57

[복습]

세션&쿠키
- HTTP -> TCP/IP ---> 상태를 간직하지 않는다.
  * 
- 하나하나의 클라이언트 상태를 관리


쿠키
  * 무엇을 필요로 하나? 데이터(키=밸류)
  * 어디에 저장되는가? 클라이언트
  * 누가 필요로 하는가? 서버

 


c.f. 익스플로러 브라우저에서 alt키를 누르면 도구바가 toggle됨
    클라이언트인 웹브라우저가 쿠키를 저장할지 말지 사용자가 설정

------- CollectionTest.java
int count;
int[] list;
List<Integer> arrayList; //List는 레퍼클래스, Integer은 클래스임

배열 => 선언, 생성, 할당, 참조
배열의 단점 : 변경이 안되고 크기가 안늘어난다.
단점 보완 방법 : Collection type을 사용한다 : Array lists, Linked lists, Hash sets, etc.


------- CollectioTest2.java
형변환해야 하는 경우, 형변환 필요 없는 경우
set


*** JSP동작원리와 서블릿
- Servlet : Server + let
 * Booklet vs. Book
 * 서버측의 작은 프로그램

- 하나의 클래스로 정의된다. (서블릿 구성요소)
 * HttpServlet 클래스의 하위 클래스 (HttpServlet을 상속한다.)
 * doGet(), doPost() 메서드 등이 정의된다.
 * 메인서블릿 함수가 있다.
 * 메서드의 매개변수로 request와 response가 있다.
 * throws절로 예외처리가 되어있다.


서블릿이란?
JSP 이전에 동적인 웹페이지 콘텐츠를 생성하는 기술로 제공


 서블릿의 자바의 많은 장점 사용 가능
 HTML, CSS 및 자바스크립트 그리고 웹디자인과 연동하기에는 많은 단점이 있음


 단점이 많지만 서블릿의 존재 이유
- JSP에는 없는 서버 측 프로그램의 기능
- 대규모 프로젝트에 사용되는 프레임워크의 기술을 사용


- 서블릿의 주요 클래스
  : JSP에서 내장객체로 사용할 수 있게 했음
* HttpServlet : 서블릿을 만들기 위해 반드시 상속해야 할 필수 클래스
* HttpServletRequest : 클라이언트가 데이터를 입력하거나 또는 정보
에 대한 요청 값을 가지고 있는 클래스
* HttpServletResponse : 클라이언트가 요청한 정보를 처리하고 다시
응답하기 위한 정보를 담고 있는 클래스
* HttpSession : 클라이언트가 세션을 정보를 저장하고 세션 기능을 유
지 하지 위해서 제공되는 클래스


url : .do로 실행되는걸 볼 수 있다.
http://www.anyang.ac.kr/main.do/  <-- .do로 실행되는걸 볼 수 있다.

 

 

1) *.do 로 적은 경우

*.do
실행 시 콘솔창 결과

 

2) /* : 모든 요청을 다 받음

 


- 서블릿으로 변환

New Project - Servlet - 버전은 2.5로 하고 web.xml생성 체크 - Package name과 class name 입력 - Finish
+ MainServlet.java

 


jsp의 Model1 & Model2
- Model1 : 모든 요청은 JSP에게 보내지는 구조
- Model2 : 모든 요청은 Servlet에게 보내지는 구조


클라이언트로부터의 요청들  :: 이게 서블릿!
Main.jsp  --> main.do
Login-action.jsp --> login-action.do
Logout-action.jsp --> logout-action.do
Login-form.html --> login-form.do


JSP의 Life Cycle(생명주기)
init() 메서드
 처리에 필요한 자원에 대한 초기화 작업
service() 메서드
 요청에 대해서 필요한 처리
 실제 요청에 대한 처리를 담당하는 메서
드로 필요한 로직이 담겨있는 메서드
destroy() 메서드
 사용된 자원을 해제한 뒤, 서블릿을 종료


서버
- 웹서버 : 아파치
- 웹애플리케이션서버(WAS(와스)) : 톰캣, 웹로직/웹스피어/제우스..


Error: Could not find or load main class org.apache.catalina.startup.Bootstrap 뜰 때 해결
프로젝트에서 마우스우클릭- preferences-Java Build Path- Classpath클릭-
Add Library-Server Runtime클릭-Apache Tomcat v9.0클릭-Apply and close


변수명 더블클릭 - alt+shift+R 누르면 -한번에 변수명 변경 가능

- 서블릿 자체가 .html 이나 .jsp로 다 편하게 .do로 불러온다는거?
그래서 if 문 조건에는 else if(uri.equals("/emplist.do")) 인 경우 그 안에
page =  "emp-list.jsp"; 얘를 데려온다.
- 직원목록은 그 위에 list로 dao에 넣어줘서 가져온 것인듯..