・jsp파일이 요청되면 jsp컨테이너에 의해 jsp 파일을 servlet(.java)파일로 변환하고, 그 자바 파일을 class파일로 컴파일 후 요청에 레스폰 하게 된다.

・공부하기 전엔 node의 express에서 ejs를 res.render하는 것처럼 서블렛도 jsp를 렌더링 해주는 것인줄 알았는데, 사실은 서블릿이나 jsp나 클라이언트의 요청에 응답해주는 동일한 서버 언어이다. 단, jsp는 html에 더욱 친근하게 생겼기 때문에 servlet에 비해서는 유저에게 친근할 수 있겠다..






・위 이미지는, helloworld.jsp파일을 요청하고 톰캣의 컴파일 디렉토리를 들춰본 것이다. helloworld.jsp가 helloworld_jsp.java 파일과 helloworld_jsp.class파일로 컴파일 된 것을 볼 수 있다...!






helloworld_jsp.java를 열어보니, 서블릿과 동일하게 생겼다.
























・xml에는 url맵핑과 초기값을 모두 기재해야 양쪽으로 맵핑이 된다.  

・ServletConfig는 하나의 서블릿페이지당 하나의 초기값 설정으로 맵핑된다.

















・servletContext는 web.xml을 통해 여러 서블렛에서 데이터를 동시에 공유할 수 있다.








・웹어플이 시작되는 가장 처음부터 가장 마지막까지 쭉 리스닝한다.

(하나의 서블릿을 바라보는게 아니다! 여러 서블릿과 html로 구성된 웹어플 전체를 리스닝하므로 서버가 구동되는 가장 시작부터 꺼지는 가장 마지막 까지 쭉 어플을 바라본다)





・이니트 시 가장먼저 contextInitialized -> PostConstruct -> init

・디스트로이시 destory -> destoryPreDestory -> contextDestroyed





































・사용자의 리퀘스트가 들어올 때마다 객체를 하나씩 생성

・사용자가 많아서 리퀘스트가 엄청나게 들어온다면, 리퀘스트를 받아낸 객체들이 계속해서 남기때문에 처리속도가 갈 수록 느려짐



서브릿의 경우는

・요청이 들어오면 스레드 생성후 스레드로 처리

・또 요청이 들어오면 이미 만들어진 스레드 생성후 스레드로 처리

다른 cgi 언어에 비해 jvm의 스레드에서 처리하기 때문에 부하가 적음*







・생명주기란 ? 객체가 생성되어 사라지는 까지의 사이클

・서블릿의 응답속도가 빠른이유는 객체 생성 후 메모리 로딩 -> 요청시 기존 객체 재활용: 때문에 객체 생성 속도가 단축됨











・페이지 새로고침 키를 누르면 기존의 서블릿 객체를 재실행 시키는 것이기 때문에 init가 다시 실행 되지 않고, doget만 리퀘스트됨










・전처리 후처리는 어노테이션으로 호출되기 때문에 메소드명은 정해지지 않음

・init/destroy는 부모클래스를 오버라이드 하는 것이기 때문에 정해진 메서드명이 필요







[질문]

-스레드가 무너지

-왜 서블릿이 스레드때문에 빠른지

































・html에서 get을 리퀘스트 하는 방법 : 

1.<a>태그의 href프로퍼티 이용 : <a href="/HWorld">

2.html 주소창에 직접 페이지 요청 : http://localhost:8090/helloworld/HWorld








・html에서 post을 리퀘스트 하는 방법 : 

1.<input type="submit">









・톰캣 구동후 http://localhost:8090/helloworld/post.html 리퀘스트

톰캣 was에 의해 html이 자바로 인식되어 리퀘스트 인지

post <input>클릭시 <form action="PostMethod" method="post">에 의해http://localhost:8090/helloworld/PostMethod으로 맵핑. 이때 전송방식은 post

 http://localhost:8090/helloworld/PostMethod 리퀘스트

 http://localhost:8090/helloworld/PostMethod 리퀘스트에 대한 레스폰드(아래)






























・패키지 명이란, 파일패스로 현재의 dynamic web project가 c:/dev/helloworld 일 때, com.javalec.ex라는 패키지의 디렉토리는 c:/dev/helloworld/com/javalec/ex/HelloWorld.java가 된다.

・클래스명은 servlet의 이름을 의미한다.

・서블렛 클래스는 내장클래스로써 포함된 httpservlet 클래스를 슈퍼클래스로 상속받는다.



・url맵핑이란, 아래에서도 배우겠지만 디렉토리명으로 설정되어 있는 풀패스의 일부를 보안과 편리성을 위해서 간단히 바꾸는 것이다. 가령 c:/dev/helloworld/com/javalec/ex/HelloWorld 이라는 페이지를 /Hworld로 맵핑하면, http://locahost:8090/helloworld/Hworld로 접근할 수 있게 된다. 이를 url맵핑이라고한다.








・servlet-name : 임의의 이름으로 <serlet-class>와 <url-pattern>을 연결해주는 역할을 하는 변수이다. 아무거나 적어도 된다. 단 <serlet-class>의 servlet-name과 url-pattern>의 servlet-name는 동일 해야 연결자의 역할을 할 수 있다는 것만 기억하자.













-프로젝트 이름은  첫글자 소문자.

-반드시 마지막 단계에서 create web.xml을 클릭하기





-웹컨텐츠에 jsp html을넣름

-src에 자바랑 서블릿






・HTTP : 단순히 화면에 보여짐

  FTP : 파일을 전송함

  SMTP : 이메일을 전송함

  POP : 이메일을 받아냄















+ Recent posts