서블릿 만들 때 마법사 이용하면 이렇게 만들어 진다.
마법사는 프레임워크같은 느낌.
http://localhost:8080/05_15/FirstServlet -> urlpattern ->servletname -> <servlet의 태그안의 name> -> servletclass
의 순서대로 실행된다.
url-pattern = 요청.
'.do' 뒤에 .do로 끝나면 무조건 쟤가 나온다 -> 전형적인 사용방법
을 한다라는 뜻. .do앞에 무엇이 오든지 상관없다.
서블릿이 여러개 존재할 수 있는데,
그때마다 servlet태그와 servlet-mapping이 만들어질 것이다.
서블릿 3.0부터는 web.xml말고 annotation에 하게도 하는데 길이도 길어지고 복잡해짐.
인위적으로 서블릿태그안의 url-pattern를 내가 만들 수 있다.
url-pattern을 내가 마음대로 바꿀 수 있다.
http://localhost:8080/05_15/a/b/c/d/FirstServlet
05_15안에 a안에 b안에 c안에 d가 실제로 존재하지 않아도 사용할 수 있다.
이것의 좋은점은? 실제로 있는 경우인지 없는 경우인지에 대한 것을 우리만 알 수 있다. 내맘대로 바꿀 수 있다. 보안상에 좋다.
유저별 페이지를 한번에 해결할 수 있다. -> 한번에 처리 가능해짐.
choonsik.jsp?class=a&age=39&gender=male
을
classA/male/39/choonsik.member
이렇게 바꿀 수 있다.
이걸 배우는 이유는 move.jsp(모든 기능이 모여있는 jsp)같은 것들 대신에 서블릿을 사용할 거다.
사용자의 눈에 보이지 않는 jsp는 의미가 없다.
서블릿객체도 서버가 꺼질 때까지 유지가 된다.
init()이 첫 요청이 들어왔을 때 만들어진다.
web.xml에서
<load-on-startup>0</load-on-startup>
를 추가하고 다시 실행하면,
init()이 요청을 안해도 init이 생긴다.
서버가 사작될 때 init으로 간다.
오래 걸리는 작업들은 미리 처리해놓은 거다.
서블릿이 여러개 있을 수 있는데 <load-on-startup>0</load-on-startup>
것이 init되는 순번이다.
그래서 0을 넣으면 제일 처음으로 시작이 된다.
init()을 적긴 적어야 하는듯.
인잇끝나면 get, post같은 게 거쳐보게 된다. init이 양이 많으면 오래 기다려야 된다. 인잇은 한번만 하면 되니까 서버가 시작될 때 미리 시작해놓는다.
걍) 세션이랑 어플리케이션 만들기
HttpSession session = request.getSession();
ServletContext application = session.getServletContext();