# Java 101 ## 1. Java Web App ### 1.1 Architecture #### base on JSP (MVC 1) - request -> jsp handle -> java bean handle logic -> return view #### base on Servlet (MVC 2) - request -> controller/filter -> java bean handle logic -> jsp view -> return view ### 1.2 Servlet - life circle of servlet mỗi servlet sẽ extends HttpServlet, và life circle cơ bản sẽ bao gồm: init() -> do sth before serve the request. Ex: get connection from db, init obj, ... doMethod(doGet, doPost, doPut, ...) -> serve request destroy() -> do sth after end request. Ex: close connection from db, ... - config trong web.xml. Ví dụ: ``` <!-- Định nghĩa servlet có tên helloServlet, gắn với class HelloServlet --> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>sample.HelloServlet</servlet-class> </servlet> <!-- Định nghĩa đường dẫn truy cập vào Servlet này --> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> ``` ### 1.3 Filter filter giống như servlet là 1 chain nhiều servlet. Ex: user request -> filter A -> filter B -> servlet C dành cho admin filter A: check trong request xem thử session đã được mark là authen hay chưa, nếu đã authen thì pass qua filter B ko thì drop filter B: check xem trong request xem thử session của user đó có phải là admin hay ko, có thì pass vào servlet C, ko thì drop Ex trong web.xml ``` <filter> <filter-name>FilterA</filter-name> <filter-class>sample.FilterA</filter-class> </filter> <filter-mapping> <filter-name>FilterA</filter-name> <url-pattern>/*</url-pattern> (mapping all) </filter-mapping> <filter> <filter-name>FilterB</filter-name> <filter-class>sample.FilterB</filter-class> </filter> <filter-mapping> <filter-name>FilterB</filter-name> <url-pattern>/*</url-pattern> (mapping all) </filter-mapping> ``` => thứ tự filter trong web.xml cũng là thứ tự của filter sẽ đc java web app handle ### 1.4 Dispatcher ###