一ServletContext():(zz)
Servlet容器在啟動時會加載Web應用並為每個Java Web應用創建唯一的ServletContext對象可以把ServletContext看成是一個Web應用的服務器端組件的共享內存在ServletContext中可以存放共享數據它提供了個讀取或設置共享數據的方法
)setAttribute(StringnameObjectobject):把一個對象和一個屬性名綁定將這個對象存儲在ServletContext中
)getAttribute(Stringname):根據指定的屬性名返回所綁定的對象
)removeAttribute(Stringname):根據給定的屬性名從ServletContext中刪除相應的操作
)getAttributeNames():返回Enumeration對象它包含了存儲在ServletContext對象中的所有屬性名
packagemypack;
importjavaxservlet*;
importjavaxservlethttp*;
importjavaio*;
importjavautil*;
publicclassCounterServletextendsHttpServlet
{
publicstaticfinalStringCONTENT_TYPE=text/html;charset=GB;
publicvoidinit(ServletConfigconfig)throwsServletException{
superinit(config);
}
publicvoiddoGet(HttpServletRequestrequestHttpServletResponseresponse)throwsServletExceptionIOException{
doPost(requestresponse);
}
publicvoiddoPost(HttpServletRequestrequestHttpServletResponseresponse)throwsServletExceptionIOException{
//獲得ServletContext的引用
ServletContextcontext=getServletContext();
//從ServletContext讀取count屬性
Integercount=(Integer)contextgetAttribute(count);
//如果count屬性還沒有設置那麼創建count屬性初始值為
//oneandaddittotheServletContext
if(count==null){
unt=newInteger();
ntextsetAttribute(countnewInteger());
}
responsesetContentType(CONTENT_TYPE);
PrintWriterout=responsegetWriter();
outprintln(<HTML>);
outprintln(<HEAD><TITLE>點擊計數</TITLE></HEAD>);
outprintln(<BODY>);
//輸出當前的count屬性值
outprintln(<P>當前計數是+count+</P>);
outprintln(</BODY></HTML>);
//創建新的count對象其值增
unt=newInteger(countintValue()+);
//將新的count屬性存儲到ServletContent中
ntextsetAttribute(countcount);
}
publicvoiddestroy(){
}
}
在webxml中為CounterServlet類加上<servlet>和<servletmapping>元素
<servlet>
<servletname>CounterServlet</servletname>
<servletclass>mypackCounterServlet</servletclass>
</servlet>
<servletmapping>
<servletname>CounterServlet</servletname>
<urlpattern>/counter</urlpattern>
</servletmapping>
測試通過
)刷新頁面count加
)關閉浏覽器再打開新浏覽器還是在原來基礎上加(即便由IE換成Opera)
)如果重啟Tomcat服務器再訪問CounterServlet則count又初始化為
)復制helloapp應用改為helloapp再發布helloapp通過不同的浏覽器窗口分別訪問helloapp及helloapp中的CounterServlet發現這兩個Web應用擁有各自獨立的count屬性
即ServletContext對象只在Web應用被關閉時才被銷毀不同的Web應用ServletContext各自獨立存在
二以前不知道在strutsconfigxml中還可以寫數據庫的配置現在知道了是可以在strutsconfigxml中下<datasource>標簽來進行數據庫的配置的
<datasources>
<datasourcekeydatasourcekey=DATASOURCEtype=oraclejdbcpoolOracleDataSource>
<!說明>
<setpropertypropertysetpropertyproperty=descriptionvalue=ExampleDataSourceConfiguration/>
<!所用的JDBC驅動類必須>
<setpropertypropertysetpropertyproperty=driverClassNamevalue=oraclejdbcdriverOracleDriver/>
<!所用的JDBC的URL必須>
<setpropertypropertysetpropertyproperty=URLvalue=jdbc:oracle:thin:@:;DatabaseName=ITDBT/>
<!同時打開的最大連接數缺省值為可選>
<setpropertypropertysetpropertyproperty=maxActivevalue=/>
<!同時打開的最小連接數缺省值為可選>
<setpropertypropertysetpropertyproperty=minCountvalue=/>
<!連接到數據庫的用戶名必須>
<setpropertypropertysetpropertyproperty=uservalue=vendorda/>
<!連接到數據庫的密碼必須>
<setpropertypropertysetpropertyproperty=passwordvalue=vendorda/>
<!是否自動COMMIT>
<setpropertypropertysetpropertyproperty=autoCommitvalue=true/>
</datasource>
</datasources>
在這個裡面配置好之後如果想要建立一個數據庫的鏈接就可以這樣寫
DataSourcedataSource=(DataSource)servletgetServletContext()getAttribute(ActionDATA_SOURCE_KEY);
Connectionconnection=dataSourcegetConnection();
三ActionMessage的作用(zz)
ActionMessageActionMessagessaveMessages()saveErrors()之間的關系及用法
ActionMessage功能是用來產生STRUTS消息的包括正常消息和錯誤消息注(原有ActionError方法來產生錯誤消息但已廢棄但仍可使用)例ActionMessage(keyobject);其中key為在appicationproperties中指的key值object為消息中要傳入的參數這裡實現了動態傳入如果要傳多個參數時object處可以改為數組
ActionMessages功能是作為容器(map)來存ActionMessage的例:ActionMessagesams=newActionMessages()amsadd(idActionMessage)
saveErrors功能是用來存儲ActionMessages例saveErrors(ActionMessagesscope)這裡有個隱性的error_key作為KEY與ActionMessages對應scope值為:applicationsessionrequestpage默認為page范圍
saveMessages功能是用來存儲ActionMessages例saveMessages(ActionMessagesscope)這裡有個隱性的message_key作為KEY與ActionMessages對應scope值為:applicationsessionrequestpage默認為page范圍
取出ActionMessage消息STRUTS提供了兩種標簽
<html:errors/>意思是從page范圍(范圍由小到大從page到application)開始以error_key為key尋找ActionMessages要取具體的ActionMessage可以用<html:errorsproperty=id/>
<html:messageid=var/><bean:writename=var/>意思是迭代找出所有ActionMessage賦值給var然後通過bean標簽輸出要取具體的ActionMessage可以用<html:messageid=varproperty=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屬性為實現的
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26510.html