九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java Servlets

Java Servlets

lgl669 2009-06-17
Servlet2.4:是sun公司提出的一個標準,作為容器提供商和我們開發(fā)人員必須按照這個標準來開發(fā)容器和
開發(fā)web應(yīng)用;開發(fā)人員實現(xiàn)Servlet的接口,service方法是由容器調(diào)用的,并且會傳進來request和
WEB應(yīng)用的目錄結(jié)構(gòu);
servlet中的方法由所處的容器來調(diào)用;
<form method="post" action="helloservlet">
</form>
Http請求:包括請求頭和請求體
Get請求:瀏覽器提交的數(shù)據(jù)是放在請求頭部的;
Post請求:瀏覽器提交的數(shù)據(jù)是放在請求體部的;
Web application server:
Tomcat:
opt/jakarta_tomcat5.0.28
一、tomcat和servlet介紹
Tomcat的目錄結(jié)構(gòu)

1) bin:主要存放tomcat的一些可執(zhí)行文件,比如:startup.bat,shutdown.sh;
2) common:主要用來存放tomcat以及所有的web應(yīng)用都可以用的一些類或則.jar文件;
3) conf:其中包含著Tomcat的配置文件,主要是server.xml、web.xml和tomcat-users.xml等;
conf/server.xml:修改Tomcat的端口
      conf/web.xml:設(shè)置默認主頁
      conf/tomcat-users.xml:添加Tomcat的Admin和Manager用戶
      conf/Catalina/../新建xml文件,指定docBase,可以設(shè)定Tomcat應(yīng)用的
路徑,默認是在Tomcat/webapps目錄
4) logs:包含著Tomcat的日志文件以及應(yīng)用的日志文件;
5) server:存放只有tomcat能使用的類或者jar文件以及tomcat自帶的web應(yīng)用,包含著運行Catalina
容器所需要的文件以及類庫;
6) shared:存放所有的web應(yīng)用共享的.class和.jar,但是tomcat不能使用;
7) temp:用來存放臨時文件;
8) webapps:存放我們開發(fā)的web應(yīng)用;
9) work:通過jsp生成的servlet類存放的目錄;
-------------------------------------------------------------------------------------------
在windows下配置tomcat:
CATALINA_HOME=
-------------------------------------------------------------------------------------------
home目錄下:
1.打開控制臺;
2.vi .bashrc
3.export JAVAHOME=/opt/java/jdk/jdk1.5.0_06
  export CATALINA_HOME=/opt/jakarta-tomcat-5.0.28
4.保存配置文件;
5.source  .bashrc;
-------------------------------------------------------------------------------------------
啟動tomcat
1、在命令行窗口啟動;需要配置環(huán)境變量;JAVA_HOME(必須),CATALINA_HOME(必須),
PATH(可選)
   執(zhí)行%CARALINA_HOME%\bin下startup.bat啟動tomcat,shutdown.bat關(guān)閉tomcat;
2、在eclipse中啟動;無須配置系統(tǒng)環(huán)境變量;通過myeclipse插件集成tomcat;
-------------------------------------------------------------------------------------------
WEB應(yīng)用的目錄結(jié)構(gòu):
Servlet
--WEB-INF
--classes存放開發(fā)的java類,比如說是servlet類
--lib 存放第三方的jar包,比如說ojdbc14.jar
--web.xml 對servlet進行描述
--.htm  .html  .jsp
就編寫好的上述程序放入%CATALINA-HOME\webapps\中;
url-pattern
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
----------------------------------------------------------------------------------------------------------------------------------
Http協(xié)議:是應(yīng)用層的協(xié)議,他是無狀態(tài)的。它是架在tcp/ip傳輸層協(xié)議之上的,對傳輸數(shù)據(jù)的格式做
了一個定義。
-------------------------------------------------------------------------------------------
CGI和Servlet的優(yōu)缺點:
CGI程序可以有多種語言編寫,但是服務(wù)器端處理請求使用進程,消耗服務(wù)器端資源;
Servlet只能由java編寫,服務(wù)器端處理請求使用線程,移植性好;
-------------------------------------------------------------------------------------------
什么是Servlet?
JEE規(guī)范的一部份,是用java語言編寫的服務(wù)器端程序,
用于創(chuàng)建動態(tài)web頁面,不依賴于具體的協(xié)議,必須運行于web容器中。
-------------------------------------------------------------------------------------------
在tomcat根目錄下的conf目錄下修改:
配置tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="admin,manager"/>
</tomcat-users>
-------------------------------------------------------------------------------------------
配置server.xml
<Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />
-------------------------------------------------------------------------------------------
在CATALINA/localhost下面配置一個新的文件:admin.xml
其中path里面填寫的是你的工程名字,docBase里面填寫的是WEB-INF的路徑;
<Context path="/admin" docBase="/home/briup/works/Servlet/WebRoot"
        debug="0" privileged="true">
  <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_admin_log." suffix=".txt"
          timestamp="true"/>
</Context>
-------------------------------------------------------------------------------------------
本來面目:
<url-pattern>/hello</url-pattern>
訪問時在地址欄只能寫
http://127.0.0.1:8080/Servlet/hello
為了加強靈活性和易用性,方法如下:
后通配:
<url-pattern>/hello/*</url-pattern>
訪問時在地址欄里寫
http://127.0.0.1:8080/Servlet/hello/asdasd/asdasd/asdasd
都是可以的;
前統(tǒng)配:
<url-pattern>*.hello</url-pattern>
http://127.0.0.1:8080/Servlet/*.hello
http://127.0.0.1:8080/Servlet/a.hello
http://127.0.0.1:8080/Servlet/abc/a.hello
都是可以的;
-------------------------------------------------------------------------------------------
HttpServlet繼承自GenericServlet,其中的service方法自動實現(xiàn);
GenericServlet的調(diào)用方法:
容器
——————>service(ServletRequest req,ServletResponse res)
————>service(HttpServletRequest req,HttpServletResponse res)
        ——METHOD="GET"——>doGet(HttpServletRequest req,HttpServletResponse res)
——METHOD="POST"——>doPost(HttpServletRequest req,HttpServletResponse res)
-------------------------------------------------------------------------------------------
表單的處理:
<FROM    METHOD="POST"    ACTION="servlet/FormServlet">
-------------------------------------------------------------------------------------------
獲取客戶端提交的信息:
1)HttpServletRequest.getParameterNames():獲取所有表單信息
2)HttpServletRequest.getParameter(key):獲取指定key的信息
3)HttpServletRequest.getParameterValues(key):表單項有多個值,用此方法
客戶端向服務(wù)器端提交信息
1)使用表單,即<form>
2)在URL后追加 ?name=value&name=value
獲取HTTP請求的頭部信息:
1)HttpServletRequest.getHeaderNames()
2)HttpServletRequest.getHeader(...)
如referer可以取到上一個網(wǎng)頁的URL
localhost:8888/servletjd0710/ch2/RequestServlet?name=briup&age=10
request.getContextPath():/servletjd0710
request.getQueryString():name=briup&age=10
request.getRequestURI():/servletjd0710/ch2/RequestServlet
request.getRequestURL():http://localhost:8888/servletjd0710/ch2/
request.getServletPath():/ch2/RequestServlet
二、servlet的生命周期
1)由容器裝載并實例化,產(chǎn)生一個實例
2)由容器調(diào)用init()方法,不需要考慮多線程
     只被調(diào)用一次
init(ServletConfig config)先被調(diào)用
nit()后被調(diào)用
設(shè)置初始化參數(shù):
  1,  全局的
<context-param>
<param-name>age</param-name>
<param-value>20</param-value>
</context-param>
通過ServeltConfig.getServletContext().getInitParameter(...)取
   2,局部的
<servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>com.briup.ch3.HelloServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>zhangsan</param-value>
</init-param>
</servlet>
通過ServletConfig.getInitParameter(...)取
3)根據(jù)用戶的每一次請求,調(diào)用一次服務(wù)方法doGet/doPost等,需要考慮多線程
service(ServletRequest,ServletResponse)
service(HttpServletRequest,HttpServletResponse)
doGet()/doPost()
多線程處理
1)implements SingleThreadModel
每個請求創(chuàng)建一個Servlet實例為其服務(wù),性能低,不建議使用
2)建議在servlet類用不要使用實例變量,
     如果用,使用synchornized進行同步
4)由容器調(diào)用destroy()方法,不需要考慮多線程
只被調(diào)用一次
clean shutdown(無損關(guān)機)
-------------------------------------------------------------------------------------------
容器實例化servlet的順序:
1.當load-on-startup為負數(shù)的時候,servlet會在第一次訪問的時候被實例化,默認情況下load-on-startup為-1;
2.當load-on-startup為正數(shù)的時候,在tomcat裝載web應(yīng)用的時候servlet就會被實例化;
3.load-on-startup為0的時候,最晚被實例化;
4.load-on-startup>0的時候,值越小就越早被實例化;
-------------------------------------------------------------------------------------------
GenericServlet:重載有參的init()方法,調(diào)用無參的init()方法.無參的init()方法用于初始化程序.
-------------------------------------------------------------------------------------------
request范圍:
-------------------------------------------------------------------------------------------
三、資源跳轉(zhuǎn)的方式
(內(nèi)部跳轉(zhuǎn):forward和include,外部跳轉(zhuǎn):sendRedirect)
  1)forward
    forward后的響應(yīng)內(nèi)容由所請求的資源給出
RequestDispatcher rd=request.getRequestDispatcher("SuccessServlet");
     request.setAttribute("userinfo", "new User()");
     rd.forward(request, response);
  2)include
    inclue后的響應(yīng)內(nèi)容由其本身給出
out.println("<html><body>");
RequestDispatcher rd = request.getRequestDispatcher("/ch04/header");
rd.include(request,response);
out.println("</body></html>");
  forward和include的相同點:
    絕對路徑中/都是web應(yīng)用
    服務(wù)器內(nèi)跳轉(zhuǎn),客戶端地址欄無變化
    都是同一個請求
  3) sendRedirect
    客戶端地址欄發(fā)生變化
    兩次請求,request范圍內(nèi)設(shè)置的所有屬性將失效
response.sendRedirect("ShowInfo");
/指代 響應(yīng)內(nèi)容 地址欄 請求 跨應(yīng)用
forward
web應(yīng)用 請求資源 不變 一次 不能
include
web應(yīng)用 本身 不變 一次 不能
sendRedirect
服務(wù)器 請求資源 變化 兩次 能
web應(yīng)用:  http://localhost:8080/hello
服務(wù)器:     http://localhost:8080
<form action="/...">,<a href="/...">:"/"指代服務(wù)器
注:能用forward方式,就不要用sendRedirect
1)從性能
2)從對服務(wù)器內(nèi)部資源的保護(地址欄內(nèi)能否顯示服務(wù)器資源URL)
考慮
保護服務(wù)器資源
1)使用Filter對請求進行過濾
2)把要保護的資源方到WEB-INF下,客戶端瀏覽器不能直接訪問該目錄下
的資源,我們可以通過Servlet等訪問
設(shè)置屬性的四個范圍:
范圍 對應(yīng)類 Jsp內(nèi)建對象
javax.servlet.ServletContext application
應(yīng)用級別 針對整個web應(yīng)用
javax.servlet.http.HttpSession session
會話級別 針對一次會話
javax.servlet.http.HttpServletRequest request
請求級別 針對一次請求
javax.servlet.jsp.PageContext page
頁面級別 針對一個頁面
注:一個application可以跨越多個session,一個session可以跨越多個request,
一個request可以跨越多個page;
實際項目開發(fā)中,從性能、占用資源角度考慮,優(yōu)先使用小級別的;
獲取RequestDispatcher
1)HttpServletRequest.getRequestDispatcher(...):相對/絕對路徑
2)ServletContext.getRequestDispatcher(...):絕對路徑
注:這里的相對是絕對,/表示web應(yīng)用(如http://localhost:8080/hello)
3)ServletContext.getNamedDispatcher(...):根據(jù)servlet的名字獲取
------------------------------------------------------------------------------------------
forward之前不能pw.flush();
------------------------------------------------------------------------------------------
外部跳轉(zhuǎn):讓瀏覽器重新發(fā)送一個新的請求,跳轉(zhuǎn)前后不是同一個請求;訪問前后路徑不同;
------------------------------------------------------------------------------------------
總結(jié):
forward:內(nèi)部跳轉(zhuǎn)或則是服務(wù)器內(nèi)部重定向;
servlet1-------forward-----servlet2
servlet1和servlet2中的request對象是同一個。
sendRedirect:外部跳轉(zhuǎn)或則服務(wù)器外部重定向;
servlet1-------sendredirect-----servlet2
servlet1和servlet2中的request對象不是同一個。
作外部跳轉(zhuǎn)調(diào)用response的sendRedirect方法,這個方法中傳入的路徑可以是相對的,也可以是絕對的;
相對的跟forward相同;
絕對的:應(yīng)用路徑+servlet url-pattern(這點和內(nèi)部跳轉(zhuǎn)是不同的);
------------------------------------------------------------------------------------------
四、在tomcat中配置數(shù)據(jù)源
  1)Admin登錄,找到項目
  2)創(chuàng)建Data Source
    JNDI Name:  jdbc/oracle
    URL:  jdbc:oracle:thin:@192.168.1.200:1521:briupdb
    Driver:  oracle.jdbc.driver.OracleDriver
    User:  briup
    Password:  briup
  3)web.xml中配置資源引用(可選,新版本的tomcat不需要配置)
    <resource-ref>
  <description>
Oracle Datasource example
</description>
  <res-ref-name>jdbc/oracle</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
    </resource-ref>
  4)Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
  注:配置數(shù)據(jù)源之后,在Tomcat/config/Catalina/..目錄下會新建一個xml文件,
  里面存放數(shù)據(jù)源相關(guān)的信息
五、持久化狀態(tài):Cookie,Session
HTTP協(xié)議是無狀態(tài)的,為了保存會話狀態(tài),我們有兩種解決方案:
1、Cookie,把會話狀態(tài)信息保存在客戶端
2、Session,把會話狀態(tài)信息保存在服務(wù)器端
Cookie:保存一些鍵/值對,到客戶端瀏覽器
  name:briup
  password:briup
使用Cookie:
  1)創(chuàng)建Cookie
     Cookie cookie = new Cookie("name","value");
  2)將Cookie加到客戶端瀏覽器
    HttpServletResponse.addCookie(cookie);
  3)在服務(wù)器端取出Cookie(返回Cookie[ ])
    HttpServletRequest.getCookies();
    Cookie.getName();
    Cookie.getValue();
  會話Cookie:只在當前會話起作用的Cookie
  持久Cookie:保存在客戶本地一段時間的Cookie
  設(shè)置Cookie的時長:Cookie.setMaxAge(int second),單位秒
  設(shè)置Cookie的有效路徑:Cookie.setPath(...)
  Cookie:由服務(wù)器創(chuàng)建,但是存放在客戶端;
  Cookie cookie=new Cookie(name,value);
  cookie.setMaxAge(timeout);
  當timeout<0時,意味著這個cookie只要瀏覽器關(guān)閉就會消失;
  當timeout=n(n>0)時,意味著cookie將會在客戶端被保存n秒;
  當timeout=0時,意味著這個cookie將會被刪除;
  name相同的cookie會被覆蓋.
  response.addCookie(cookie);
  服務(wù)器端獲得客戶端傳過來的cookie:Cookie[] cookies=request.getCookies();
Session:
  獲取Session的方法:
    HttpServletRequest.getSession()<==>HttpServletRequest.getSession(true)
    如果客戶和服務(wù)器已經(jīng)建立起會話,直接使用已有的Session對象,
    如果沒有建立,就新建一個Session對象
    HttpServletRequest.getSession(false);
    設(shè)置屬性:HttpSession.setAttribute("name",Object);
獲取屬性:HttpSession.getAttribute("name");
    刪除屬性:HttpSession.removeAttribute("name");
  使用Session來保存會話信息,在客戶端也要留下一個標識,一般用JSESSION表示
  在用戶禁用Cookie時使用Session方式在服務(wù)器端維持會話狀態(tài),在客戶端要留一個Session的id號,
  優(yōu)先使用Cookie的JSESSIONID存放,如果禁用了Cookie,URL重寫的Session id號會被追加到
  瀏覽器地址中URL的后面,用jsessionid表示
    (http://localhost:8888/servlet/ch5/urlcounter;jsessionid=9FFA9CCB7D86134E0256E94D05E6DC44)
    重寫:String encodedURL = response.encodeURL("/servletjd0710/ch05/UrlBasedCounterServlet");
  Session什么時候失效?
    1:程序中調(diào)用HttpSession.invalidate()方法
    2:Session過期,在Session的最大有效時間以外
    3:關(guān)閉應(yīng)用服務(wù)器
  設(shè)置Session的有效時間:
    1:HttpSession.setMaxInactiveIntervale(int second) 單位秒
    2:在web.xml中進行配置
    <session-conf>
<session-timeout>...</session-timeout><!-- 單位分鐘 -->
    </session-conf>
注意:當程序中和web.xml中都設(shè)置了Session的有效時間時,以程序中的設(shè)置為準
復(fù)習:
1.創(chuàng)建servlet對象(通過load-on-startup來決定在什么時候被創(chuàng)建);
2.當servlet對象被創(chuàng)建成功以后,容器馬上會調(diào)用它的有參的init方法---init只被調(diào)用一次;
3.服務(wù)客戶端請求,客戶端發(fā)起一個請求,容器就會調(diào)用servlet的service方法,并且傳入ServletRequest,
ServletResponse對象;------service方法可以被調(diào)用多次;
4.當容器關(guān)閉或則應(yīng)用被卸載的時候,servlet對象會被銷毀,在銷毀之前容器會調(diào)用destroy方法,
----destroy只被調(diào)用一次;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Datasource中存放的是collection;可以通過new來新建一個,也可以在目錄服務(wù)器中通過JNDI獲取;
跳轉(zhuǎn):內(nèi)部跳轉(zhuǎn)和外部跳轉(zhuǎn);最大區(qū)別:請求是否是同一個;
cookie&session:記錄用戶相關(guān)狀態(tài);最大區(qū)別:存放的位置不同;session可以存放對象.cookie不可以;
JSESSIONID一般是通過cookie寫入客戶端,如果關(guān)閉cookie則不能使用session;所以還有另外的方法;
URL重寫:
<a href=state/modifyRelease;jsessionid=XXXXXXXX>modifyRelease</a>
------------------------------------------------------------------------------------------
req.getSession()
從request對象中獲取jsessionid,如果根據(jù)這個jsessionid找不到一個對應(yīng)的session
對象,則創(chuàng)建一個新的session對象返回,如果能找到則返回找到的session對象;
req.getSession(boolean create)
如果create為true,等價于req.getSession();
如果create為false,根據(jù)request對象傳過來的jsessionId查找對應(yīng)的session對象,如果能找到則返回
找不到則返回null;
六、request、session、application
request生命周期:生于容器接收到請求,死于servlet產(chǎn)生響應(yīng);
session生命周期公司
創(chuàng)建:客戶端訪問一個servlet,在servlet中調(diào)用了req.getSession方法;
銷毀:1.關(guān)閉瀏覽器進程;
     2.session過期;(在web.xml中指定<session-timeout>10</session-timeout>10鐘后過期)
     3.調(diào)用session.invalidate()方法;
不建議將大量數(shù)據(jù)放在內(nèi)存中,這樣會比較消耗服務(wù)器內(nèi)存的;
requestScope=====>HttpServletRequest對象  (Scope:作用范圍)
request.setAttribute(name,value)
Object value=request.getAttribute(name);
request.removeAttribute(name)
sessionScope=====>HttpSession對象
session.setAttribute(name,value)
Object value=session.getAttribute(name)
session.removeAttribute(name)
applicationScope=====>ServletContext對象
對于一個應(yīng)用來說ServletContext對象是唯一的,存放所有用戶登陸的共用信息;
創(chuàng)建:應(yīng)用裝載的時候
銷毀:應(yīng)用卸載的時候
sc.setAttribute(name,value)
Object value=sc.getAttribute(name)
sc.removeAttribute(name)
七、Filter:過濾器
對服務(wù)器上的特定資源采取措施,進行限制
Filter的應(yīng)用:延遲登錄、編碼轉(zhuǎn)換、審計......
Filter的使用步驟:
  1)寫Filter類
     implements javax.servlet.Filter接口
     重寫Filter接口中的方法init(FilterConfig),
     doFilter(ServletRequest,ServletResponse,FilterChain) , destroy()
  2)在web.xml中進行配置
    <filter>
<filter-name> 自己取,但要和<filter-mapping>中的對應(yīng) <filter-name>
<filter-class> Filter類的全限定名 </filter-class>
<init-param>
<param-name>...</param-name>
<param-value>...</param-value>
<init-param>
    </filter>
    在程序中通過FilterConfig.getInitParameter("name")取
    <filter-mapping>
<filter-name> 和<filter>中的對應(yīng) </filter-name>
<url-pattern> Filter所限制訪問的資源路徑 </url-pattern>
    </filter-mapping>
    比如我們將<url-pattern>設(shè)為/ch5/*,那么我們在瀏覽器中訪問/ch5下的
    資源時Filter就會自動被調(diào)用
Filter的生命周期:
  1)init(FilterConfig)
    由容器調(diào)用,并且只調(diào)用一次
  2)doFilter(ServletRequest,ServletResponse,FilterChain)
    訪問限定資源時,被調(diào)用,會被調(diào)用多次,注意考慮多線程問題,
    處理方式和Servlet中的一樣
  3)destroy()
    由容器調(diào)用,并且只調(diào)用一次
  FilterChain.doFilter(ServletRequest,ServletResponse):可以認為是處理請求和
  響應(yīng)的分界限,在chain.doFilter(...)之前處理請求,在chain.doFilter(...)之后
  處理響應(yīng)
  注意:一旦寫了Filter一定要在Filter.doFilter(...)中調(diào)用FilterChain.doFilter()
  方法,將請求交由其他資源繼續(xù)處理
編碼轉(zhuǎn)換:
  request.setCharacterEncoding("UTF-8");
  chain.doFilter(request, response);
  response.setCharacterEncoding("UTF-8");
  過濾的url: /*
  相同的資源可以被多個Filter過濾,F(xiàn)ilter的執(zhí)行順序取決于web.xml中配置的
  <filter-mapping>的順序
八、監(jiān)聽器
監(jiān)聽器,對特定事件所采取的控制
常見事件:應(yīng)用服務(wù)器的啟動/關(guān)閉,會話的創(chuàng)建/刪除,請求的創(chuàng)建/刪除,屬性的增加、替換、刪
除等
Listener分類
應(yīng)用級別:
ServletContextListener:
void  contextDestroyed(ServletContextEvent sce):監(jiān)聽應(yīng)用服務(wù)器的關(guān)閉
void  contextInitialized(ServletContextEvent sce): 監(jiān)聽應(yīng)用服務(wù)器的啟動
ServletContextAttributeListener:
void  attributeAdded(ServletContextAttributeEvent scab):
監(jiān)聽應(yīng)用級別屬性的增加,即ServletContext.setAttribute("user","briup")
void  attributeRemoved(ServletContextAttributeEvent scab):
監(jiān)聽應(yīng)用級別屬性的刪除,即ServletContext.removeAttribute(...)
void  attributeReplaced(ServletContextAttributeEvent scab):
監(jiān)聽應(yīng)用級別屬性的替換,即使ServletContext.setAttribute("user","ibm")
會話級別:
HttpSessionListener
void  sessionCreated(HttpSessionEvent se):監(jiān)聽會話的創(chuàng)建
如,HttpServletRequest.getSession()
void  sessionDestroyed(HttpSessionEvent se):監(jiān)聽會話的刪除
如,HttpSession.invalidate()
HttpSessionAttributeListener
void  attributeAdded(HttpSessionBindingEvent se)
監(jiān)聽會話級別屬性的增加,即HttpSession.setAttribute(...,...)
void  attributeRemoved(HttpSessionBindingEvent se)
監(jiān)聽會話級別屬性的刪除,即HttpSession.removeAttribute(...)
void  attributeReplaced(HttpSessionBindingEvent se)
監(jiān)聽會話級別屬性的替換,即HttpSession.setAttribute(...,...)
請求級別:
ServletRequestListener
void  requestDestroyed(ServletRequestEvent sre):監(jiān)聽請求的刪除
void  requestInitialized(ServletRequestEvent sre):監(jiān)聽請求的創(chuàng)建
ServletRequestAttributeListener
void  attributeAdded(ServletRequestAttributeEvent srae)
監(jiān)聽請求級別屬性的增加,即HttpServletRequest.setAttribute(...,...)
void  attributeRemoved(ServletRequestAttributeEvent srae)
監(jiān)聽請求級別屬性的刪除,即HttpServletRequest.removeAttribute(...)
void  attributeReplaced(ServletRequestAttributeEvent srae)
監(jiān)聽請求級別屬性的替換,即HttpServletRequest.setAttribute(...)
注:Listener程序不需要我們?nèi)フ{(diào)用,它由相應(yīng)的事件觸發(fā)執(zhí)行
配置文件中:<listener>
   <listener-class>ch07.ContextListener</listener-class>
      </listener>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
寶寶 javaweb 學習總結(jié)
韓順平2011細說Servlet筆記2
通過HttpServletRequestWrapper(裝飾模式的應(yīng)用)增強HttpServletRequest的功能,過濾GET請求編碼
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服