????????
????????????stackoverflow???????????Java Servlet????????????谓?????????????????????????????
????????Servlet????喂??????Servlet ????????????????????????卸????????
???????????????????????? Servlet ?? web ??????????? Servlet ??????????? Servlet ????????????? session ??????
????????????????????????????????????????????????? session ???????????浠�????????????????????霉?????????????????????????????????????????????????????????????????
??????????????????????? *n* ????????????????? Servlet??????? Servlet ??????????????畏??????????????????????????????????
???????BalusC????
????ServletContext
?????? Servlet ?????????? Apache Tomcat??????????????????? web ??谩???web ?????????Servlet ??????????? ServletContext??????????????????????小?web ???? web.xml ??????????????????? servlet??filter ?? Listener ?? @WebServlet??@WebFilter ?? @WebListener ???????????????尾????娴�????????????小????????泄??????????????? init()???? Servlet ??????????卸?????? web ???????????谐?????? Servlet ????????? destroy() ??????????? ServletContext ?????? Servlet??Filter ?? Listener ?????
???????????械? Servlet ????? load-on-startup ???? @WebServlet(loadOnStartup) ????????????? 0 ?????????????????????????????? init() ??????“load-on-startup”?械???????些 Servlet ??????????????????????????????????? web.xml ??????????? @WebServlet ?????????????????????? “load-on-startup” ???init() ??????????? HTTP ?????????????械? Servlet ???????谩?
????HttpServletRequest ?? HttpServletResponse
????Servlet ????????????? web ?????????? web ??????????????????? HTTP ????????????????????????? 8080???????????????? 80??????????web ???????????????? HTTP ????Servlet ?????????渭? HttpServletRequest ?? HttpServletResponse ???????????????貌???????? URL ??? url-pattern ?? Filter ?? Servlet ????械?????????泄???????????????写????
????request ?????????????懈? HTTP ?????械?????????? request header ?? request body??response ????????????????????? HTTP ????????????????? header ?? body?????????? JSP ????械? HTML ??????????????HTTP ??????????? request ?? response ????
????HttpSession
?????????????畏???? web ??????????? request.getSession() ????位?? HttpSession????? Servlet ?????????? HttpSession??????????? ID????????? session.getId() ??????????????????????小???? Servlet ???????? HTTP ????? Set-Cookie ?????????? Cookie???? JSESSIONID ??? Cookie ?????????? session ID ??? Cookie ?????
???????? HTTP cookie ???????? web ??????? web ????????????????????? cookie ??效???????????????????????????? Cookie ??蟹?????? cookie??????????????? HTTP ???????????????????????? Chrome??Firefox23+??IE9+ ?邪? F12?????? Net/Network ???????Servlet ??????????????????? HTTP ????? Cookie ????????????JSESSIONID ?? cookie??????????????session ID?????????????????????? HttpSession??
??????????? web.xml ?????? session-timeout ??????? 30 ?????????????? HttpSession ??????睢�????????????????? web ??贸??? 30 ?????Servlet ???????????? session??????????????????? cookie ???????????????????? session??Servlet ????????????渭? Cookie??
??????????妫�???????? session cookie ???????????????????????????????????????????????????????????????????????斜????????????? session ??????????????????????????????? session ?????? cookie??????渭? request.getSession() ???????渭? HttpSession ?????????????? session ID ?? cookie??
????????
????ServletContext ?? web ??????????????????????? session ?械????????????
????????????????????????????web??y?????????谐????HttpSession??????
????HttpServletRequest ?? HttpServletResponse ???????????????????????????????web ??妫�???????????????????????????
???????? Servlet??Filter ?? Listener ?????? web ?????????????????????????? session ?械????????
???????????? HttpServletRequest??HttpServletResponse ?? HttpSession ?械????????????????械??????????????????睢�
?????????
??????????????????????????????????????????? Servlet ?? filter ????????????????? Java ??????????????????????? HTTP ???????????????????????????????????鈥�???????????????????
??????????????????????????魏? request ?? session ???械????????? servlet ?? filter ????????????????????????? session ?械????????????????????????????????????????????????????
????public class ExampleServlet extends HttpServlet {
????private Object thisIsNOTThreadSafe;
????protected void doGet(HttpServletRequest request?? HttpServletResponse response) throws ServletException?? IOException {
????Object thisIsThreadSafe;
????thisIsNOTThreadSafe = request.getParameter("foo"); // BAD!! Shared among all requests!
????thisIsThreadSafe = request.getParameter("foo"); // OK?? this is thread safe.
????}
????}