成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

總結Java Web中幾個函數的作用

開發 后端
前些天初步看了下一個有關于BBS開發的程序。基于struts的,見到了里面的幾個函數,不知道它們的作用,總結了一下Java Web中幾個函數的作用。

幾個Java Web函數的作用

一,ServletContext():(zz)

Servlet容器在啟動時會加載Web應用,并為每個Java Web應用創建唯一的ServletContext對象。可以把ServletContext看成是一個Web應用的服務器端組件的共享內存。在ServletContext中可以存放共享數據,它提供了4個讀取或設置共享數據的方法。

1)setAttribute(Stringname,Objectobject):把一個對象和一個屬性名綁定,將這個對象存儲在ServletContext中;

2)getAttribute(Stringname):根據指定的屬性名返回所綁定的對象;

3)removeAttribute(Stringname):根據給定的屬性名從ServletContext中刪除相應的操作;

4)getAttributeNames():返回Enumeration對象,它包含了存儲在ServletContext對象中的所有屬性名。

  1. packagemypack;  
  2. importjavax.servlet.*;  
  3. importjavax.servlet.http.*;  
  4. importjava.io.*;  
  5. importjava.util.*;  
  6.  
  7. publicclassCounterServletextendsHttpServlet  
  8. {  
  9. publicstaticfinalStringCONTENT_TYPE="text/html;charset=GB2312";  
  10.  
  11. publicvoidinit(ServletConfigconfig)throwsServletException{  
  12. super.init(config);  
  13. }  
  14.  
  15. publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{  
  16. doPost(request,response);  
  17. }  
  18.  
  19. publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{  
  20. //獲得ServletContext的引用  
  21. ServletContextcontext=getServletContext();  
  22. //從ServletContext讀取count屬性  
  23. Integercount=(Integer)context.getAttribute("count");  
  24.  
  25. //如果count屬性還沒有設置,那么創建count屬性,初始值為0  
  26. //oneandaddittotheServletContext  
  27. if(count==null){  
  28. count=newInteger(0);  
  29. context.setAttribute("count",newInteger(0));  
  30. }  
  31.  
  32. response.setContentType(CONTENT_TYPE);  
  33. PrintWriterout=response.getWriter();  
  34. out.println("<HTML>");  
  35. out.println("<HEAD><TITLE>點擊計數</TITLE></HEAD>");  
  36. out.println("<BODY>");  
  37. //輸出當前的count屬性值  
  38. out.println("<P>當前計數是:"+count+"</P>");  
  39. out.println("</BODY></HTML>");  
  40.  
  41. //創建新的count對象,其值增1  
  42. count=newInteger(count.intValue()+1);  
  43. //將新的count屬性存儲到ServletContent中  
  44. context.setAttribute("count",count);  
  45. }  
  46. publicvoiddestroy(){  
  47. }  

在web.xml中為CounterServlet類加上<servlet>和<servlet-mapping>元素

  1. <servlet> 
  2. <servlet-name>CounterServlet</servlet-name> 
  3. <servlet-class>mypack.CounterServlet</servlet-class> 
  4. </servlet> 
  5. <servlet-mapping> 
  6. <servlet-name>CounterServlet</servlet-name> 
  7. <url-pattern>/counter</url-pattern> 
  8. </servlet-mapping> 
  9.  
  10. 測試通過。 

1)刷新頁面,count加1;

2)關閉瀏覽器,再打開新瀏覽器還是在原來基礎上加1(即便由IE換成Opera);

3)如果重啟Tomcat服務器,再訪問CounterServlet,則count又初始化為0;

4)復制helloapp應用,改為helloapp1,再發布helloapp1,通過不同的瀏覽器窗口分別訪問helloapp及helloapp1中的CounterServlet,發現這兩個Web應用擁有各自獨立的count屬性。

即ServletContext對象只在Web應用被關閉時才被銷毀;不同的Web應用,ServletContext各自獨立存在。

二,以前不知道在struts-config.xml中還可以寫數據庫的配置,現在知道了,是可以在struts-config.xml中下<data-source>標簽來進行數據庫的配置的。

  1. <data-sources> 
  2.  
  3. <data-sourcekeydata-sourcekey="DATASOURCE"type="oracle.jdbc.pool.OracleDataSource"> 
  4. <!--說明--> 
  5. <set-propertypropertyset-propertyproperty="description"value="ExampleDataSourceConfiguration"/> 
  6.  
  7. <!--所用的JDBC驅動類,必須--> 
  8. <set-propertypropertyset-propertyproperty="driverClassName"value="oracle.jdbc.driver.OracleDriver"/> 
  9.  
  10. <!--所用的JDBC的URL,必須--> 
  11. <set-propertypropertyset-propertyproperty="URL"value="jdbc:oracle:thin:@10.171.33.12:1521;DatabaseName=ITDBT"/> 
  12.  
  13. <!--同時打開的***連接數,缺省值為2,可選--> 
  14. <set-propertypropertyset-propertyproperty="maxActive"value="10"/> 
  15.  
  16. <!--同時打開的最小連接數,缺省值為1,可選--> 
  17. <set-propertypropertyset-propertyproperty="minCount"value="1"/> 
  18.  
  19. <!--連接到數據庫的用戶名,必須--> 
  20. <set-propertypropertyset-propertyproperty="user"value="vendorda1"/> 
  21.  
  22. <!--連接到數據庫的密碼,必須--> 
  23. <set-propertypropertyset-propertyproperty="password"value="vendorda1"/> 
  24.  
  25. <!--是否自動COMMIT--> 
  26. <set-propertypropertyset-propertyproperty="autoCommit"value="true"/> 
  27. </data-source> 
  28.  
  29. </data-sources> 

在這個里面配置好之后,如果想要建立一個數據庫的鏈接就可以這樣寫。

  1. DataSourcedataSource=(DataSource)servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);  
  2. Connectionconnection=dataSource.getConnection(); 

三,ActionMessage的作用(zz)

ActionMessage、ActionMessages、saveMessages()、saveErrors()、之間的關系及用法

ActionMessage功能是:用來產生STRUTS消息的包括正常消息和錯誤消息。注(原有ActionError方法來產生錯誤消息,但已廢棄,但仍可使用。)例:ActionMessage(key,object);其中key為在appication.properties中指的key值。object為消息中要傳入的參數,這里實現了動態傳入。如果要傳多個參數時,object處可以改為數組。

ActionMessages功能:是作為容器(map)來存ActionMessage的。例::ActionMessagesams=newActionMessages().ams.add("id",ActionMessage).

saveErrors功能:是用來存儲ActionMessages,例:saveErrors(ActionMessages,scope)這里有個隱性的error_key作為KEY與ActionMessages對應。scope值為:application,session,request,page.默認為page范圍。

saveMessages功能:是用來存儲ActionMessages,例:saveMessages(ActionMessages,scope)這里有個隱性的message_key作為KEY與ActionMessages對應。scope值為:application,session,request,page.默認為page范圍。

取出ActionMessage消息STRUTS提供了兩種標簽:

1.<html:errors/>意思是從page范圍(范圍由小到大從page到application)開始以error_key為key尋找ActionMessages,要取具體的ActionMessage可以用<html:errorsproperty="id"/>

2.<html:messageid="var"/><bean:writename="var"/>意思是迭代找出所有ActionMessage賦值給var,然后通過bean標簽輸出。要取具體的ActionMessage可以用<html:messageid="var"property="id"/><bean:writename="var"/>,這里html:message標簽有個默認message屬性,它的默認值為false,代表以error_key為key取出ActionMessages.設為true時代表以message_key為key取出ActionMessages.它與<html:errors/>的主要區別是,它可以取正常消息或錯誤消息(即以error_key或message_key為KEY),通過設置message屬性true或false來實現。

以上這些過程的實現都是通過操作(page到application)四個范圍當中的attribte屬性為實現的。

【編輯推薦】

  1. 淺談Java SE、Java EE、Java ME三者的區別
  2. Java虛擬機內部構成淺析
  3. 淺談Java編程語言中創建和使用日期
  4. 詳解Java的特點與優勢
  5. 淺談為什么Java接口中不允許定義變量
責任編輯:彭凡 來源: 51CTO
相關推薦

2009-06-29 16:24:00

JSP和Servlet

2009-06-30 17:10:28

JSP和Servlet

2009-06-30 14:51:19

JSP和Servlet

2022-04-06 07:32:41

Java運算符變量

2018-04-23 10:05:41

Java Web框架Spring

2009-05-05 11:02:25

思科認證考試ID

2017-02-27 17:06:43

Java Web開發亂碼

2012-04-02 14:03:08

web緩存

2022-04-02 08:14:02

JavaThreadLoca數據

2020-09-26 07:19:46

Java

2011-11-02 15:42:27

2024-01-25 11:36:08

C++構造函數關鍵字

2009-11-25 17:54:47

PHP數組函數

2011-12-15 16:55:04

TomcatJavajsp

2022-06-07 08:31:44

JavaUnsafe

2010-04-14 13:22:10

Oracle系統函數

2020-03-29 20:27:51

Python函數開發

2023-11-30 07:37:49

MySQL函數

2023-06-28 08:34:02

Bind()函數JavaScript

2013-04-16 09:46:44

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区亚洲视频 | 国产不卡视频在线 | 国产精品免费看 | 欧美成人a| 四虎影院在线免费观看 | 欧美成人精品激情在线观看 | 亚洲精品久久久久久久不卡四虎 | 九九九久久国产免费 | 成人做爰69片免费观看 | 日韩成人在线播放 | 日韩电影a| 国产一区三区在线 | 久久欧美高清二区三区 | 天堂久 | 天天av网 | 91久久久久久 | 国产伦精品一区二区三区照片91 | 亚洲国产精品久久 | 一区中文字幕 | 国产精品久久久久久久午夜片 | 久久91av | 色999视频 | 日韩av高清 | 国产一区不卡 | 日韩一级黄色毛片 | 一区二视频 | av黄色免费 | 狠狠操狠狠干 | 亚洲视频二区 | 羞羞视频在线免费 | 91精品国产色综合久久不卡蜜臀 | 伊人色综合久久天天五月婷 | 欧美日韩91| 乱码av午夜噜噜噜噜动漫 | 精品视频一区二区三区在线观看 | 国产视频一区二区在线观看 | 九九热精品免费 | 97国产在线视频 | 国产成人91视频 | 91色综合| 91亚洲一区 |