国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts用戶和開發指南(前言之二)

2019-11-18 15:56:46
字體:
來源:轉載
供稿:網友

  0.6 屬性(PRoperties)文件和資源綁定(Resourse Bundles)
  很多java應用程序(包括Web應用程序在內)經常通過 屬性文件進行一些配置。屬性文件是Struts框架用于給應用程序提供消息資源資源綁定的基礎所在。
  
  關于屬性文件更多,請參考:
  
  .The Java Tutorial中的Using Properties to Manage Program Attributes
  
  Java資源綁定是根據用戶 區域(Locale)通過一個或多個屬性文件為用戶提供國際化支持。Struts從一建立開始就對應用程序的本地化有很好的支持。
  
  關于本地化和資源綁定的更多,請參考:
  
  .The Java Tutorial 中的About the ResourceBundle Class
  
  0.7 Java Servlet
  由于Java是一種面向對象的編程語言,所以Java Servlet平臺就把HTTP強制造型(或構造)為面向對象的形式。這一策略使得Java開發人員省下更多的時間去處理自己的應用程序的功能上,而不是放在HTTP的機制處理上。
  
  HTTP提供了一套擴展服務器的基本機制,即公共網關接口(Common Gateway Interface,CGI)。服務器可以傳遞一個請求給CGI程序,然后CGI程序返回一個響應。同樣,一個Java服務器傳遞一個請求給一個Servlet容器,容器可以對請求作一些處理,也可以把這個請求直接返還給HTTP服務器,容器檢查它的Servlet列表來決定是否要對這個請求進行處理,假如請求注冊了一個Servlert,那么容器就把這請求轉交給這個Servlet。
  
  當一個請求進入時,容器檢查該請求是否注冊了Servlet,假如找到一個匹配的Servlet,容器就把這個請求傳給這個Servlet,假如沒有,請求就被返還給HTTP服務器。
  
  容器的職責就是治理Servlet的生命周期,創建Servlet,調用Servlet,最后釋放Servlet。
  
  一般情況下一個Servlet是[javax.servlet.http.HttpServlet]的一個子類,一個Servlet必須實現容器需要調用的四個方法:
  
  .public void init(ServletConfig config):當Servlet實例第一次被創建時和執行所有請求之前Servlet容器調用這個方法;
  .public void doGet(HttpServletRequest request,HttpServletResponse response)此方法用于處理一個使用HTTP GET 協議的請求,并生成一個相應的動態響應;
  .public void doPost(HttpServletRequest request HttpServletResponse response)此方法用于處理一個使用HTTP POST協議的請求,并生成一個相應的動態響應;
  .public void destroy() 當Servlet實例中止服務時容器調用這個方法,諸如當Web應用程序正在被undeploy或當整個容器被shut down時;
  
  Struts框架已為我們的應用程序提供一個現成Servlet[org.apache.struts.action.ActionServlet]。作為一個Struts應用程序開發人員,在使用Struts框架的ActionServlet實例的同時,了解Servlet的基礎知識和明白它在Web應用程序所扮演的角色也是相當重要。
  
  關于Servlet的更多知識,請參考:
  
  .java.sun.com中的The Java Servlet Technology;
  .java.sun.com中的The Servlet 2.2 and 2.3 Specifications;
  .The Java Web Service Tutorial的Java Servlet Technology;
  .The Java Web Service Tutorial的Web applications;
  
  0.7.1 Servlet和Thread
  
  為了提高性能,容器支持多線程Servlet。一個具體的Servlet只能創建一個實例,通過同一個對象為注冊了這個Servlet的每個請求服務。這一個策略可以使容器充分利用系統資源,與此同時也就必須考慮Servlet的doGet和doPost方法編碼的線程安全問題。
  
  關于Servlet與線程安全的更多資料,請參考:
  
  .The Java Web Service Tutorial中的Controlling Concurrent access to Shared Resourceshttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets5.Html#64386;
  
  0.7.2 Servlet上下文(Context)
  
  ServletContext接口[javax.servlet.ServletContext]提供正在運行的Servlet所處的Web應用程序的上下文(或環境)的視圖。Servlet可以通過getServletConfig()方法訪問,而jsp頁面可以通過隱含變量application變量獲得。Servlet上下文提供的幾個API在創建Struts Web應用程序時是相當有用的。
  
  .訪問Web應用程序資源:Servlet可以通過getResource()和getResourceAsStream()方法訪問Web應用程序內的靜態資源文件;
  .Servlet上下文屬性:上下文可以用來存儲Java對象,通過字符串值的key來識別對象,這些屬性對整個Web應用程序都是全局的,Servlet可以通過getAttribute(),getAttributeNames(),removeAtrribute()和setAttribute()方法進行訪問。對JSP頁面來說,Servlet上下文屬性相當于“應用程序作用域Bean”;
  
  關于Servlet上下文的更多信息,請參考:
  
  .The Java Web Services Tutorial中的Accessing the Web Context http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets10.html#64724;
  
  0.7.3 Servlet請求
  
  每個Servlet處理的請求用一個Java接口代表,一般是HttpServletRequest接口 [javax.servlet.http.HttpServletRequest]。這個請求接口提供了一套訪問包含在底層HTTP請求內的所有信息的面向對象機制,包含:
  
  .Cookie:通過getCookie()方法獲得包含在請求中的有效Cookie集;
  .頭:可以通過名稱訪問包含在請求中的HTTP頭。你可以枚舉包含的所有的HTTP頭的名稱;
  .參數:請求參數,可以通過名稱訪問包含在URL的查詢字符串中(doGet)或包含在請求內容中(doPost)的請求參數;
  .請求特征:輸入HTTP請求的一些其他特征,諸如GET或POST方法使用的協議規格("http" 或"https"),等等;
  .請求URI信息:通過getRequestURI()方法可以獲得原始的請求URL。另外,Servlet容器把請求URL解析為一些可以單獨訪問的組成部分(contextPath、 servletPath和 pathInfo);
  .用戶信息:假如你使用了用戶治理的安全,那么你就可以查找一個已認證用戶名,獲得一個代表當前用戶的Principal對象,還有當前用戶是否被授權為一個特定角色;
  
  另外,Servlet請求還支持請求屬性(在JSP中,就是請求作用域Bean),類似于前面講到的Servlet上下文屬性。請求屬性常用于業務邏輯層和視圖層之間狀態信息通信,業務邏輯層產生這些狀態信息,視圖層使用這些信息產生相應的響應。
  
  Servlet容器會確保一個具體的請求被一個單獨線程的Servlet處理,所以你就不必擔心在訪問Servlet請求的屬性時有關線程安全的問題。
  
  關于Servlet請求的更多,請參考:
  
  .The Java Web Tutorial中的Getting Information from Requestshttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64433;
  
  0.7.4 Servlet響應
  
  一個Servlet的主要目的就是處理一個輸入的Servlet請求[javax.servlet.http.HttpServletRequest],并生成對應的響應。生成響應的過程是通過調用Servlet響應接口[javax.servlet.http.HttpServletResponse]相應的方法來完成的,可用的方法如下:
  
  .設置HTTP頭:你可以設置包含在響應中的HTTP頭信息。最重要的HTTP頭信息就是Content-Type,它告訴你的客戶端包含在響應體中信息是哪種類型的,一般情況下,設為text/html類型就是HTML頁面,或設為text/xml類型就是XML文檔;
  .設置Cookies:你可以向當前的響應中增加Cookie;
  .發送錯誤響應:你可以使用sendErro()發送一個HTTP錯誤狀態信息(代替一般的頁面內容);
  .重定向到其他資源:你可以使用sendRedirect()方法重定向客戶端到你指定的其他URL資源上去;
  
  使用Servlet響應API的一個重要原則就是調用維護頭信息和Cookies所有方法都必須在緩存的全部響應內容第一次被更新給客戶端之前完成。原因是因為這些信息都是作為HTTP響應最開始部分被傳輸的,因此試圖在頭信息已被送出之后再添加頭信息,必然是徒勞的。
  
  使用Model 2模式的應用程序的表現層,你可能不直接使用Servlet 響應APIs來生成響應。一般是使用JSP頁面來完成,在Servlet容器中JSP頁面將被JSP編譯器轉換為Servlet,由這個JSP Servlet生成響應,其中可能包含一些JSP標簽生成的動態信息。
  
  其他的表現系統,諸如Struts工具Velocity框架,可能把生成響應的任務代理給一個專門的Servlet來完成,但是原理是相同的。你創建一個模板,然后動態的響應由模板動態生成。
  
  關于Servlet響應的更多,請參考:
  
  .The Java Web Tutorial中的ConstrUCting Responseshttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64531;
  
  0.7.5 過濾器(Filtering)
  
  假如你使用2.3版或更新規范的Servlet容器(如Tomcat4.x),你可以使用新的過濾器APIs[javax.servlet.Filter]組合一些組件來處理請求和生成響應。過濾器其實是一個過濾器鏈的集合,每個過濾器都可以處理請求和生成響應,然后把處理權交給下一個過濾器,最后調用Servlet。
  
  Struts 1.x系列(1.0,1.1版本等)僅支持2.2版本或更早的Servlet規范的Servlet容器,所以Struts自身并沒有使用過濾器。下一代的Struts(2.x系列)是基于Servlet2.3或更新規范的。Struts 2.x版可能會使用到過濾器。
  
  關于過濾器更多,請參考:
  
  .Filtering Requests and Responseshttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets8.html#64572;
  
  0.7.6 會話(session

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临潭县| 肃宁县| 顺义区| 中牟县| 雷山县| 中超| 松阳县| 定西市| 登封市| 开封市| 陆丰市| 禹州市| 南靖县| 永嘉县| 维西| 金门县| 吴川市| 昭平县| 平谷区| 屯留县| 南漳县| 玉田县| 宣城市| 巫溪县| 六枝特区| 中山市| 阿城市| 肥东县| 务川| 望江县| 桦川县| 读书| 东明县| 汽车| 虎林市| 南昌市| 阿尔山市| 施秉县| 舒兰市| 长泰县| 循化|