本文目錄一覽:
- 1、spring4 mvc 中使用 JSR-303 Validator ,國際化佔位符問題至資源配置問題
- 2、java中的JSR75 JSR135 JSR180 JSR184 JSR185是什麼意思?
- 3、Java程序:輸入圓的半徑,輸出圓的周長和面積。(用eclipse編)
spring4 mvc 中使用 JSR-303 Validator ,國際化佔位符問題至資源配置問題
Spring配置
人們經常會在一台以上的主機上配置一種Web應用程序。例如,在生產中,一個網站可能只有一個實例。除了此實例外,開發人員可以在用於開發的機器上配置其他的(開發)實例。也可以在公司(機構)內部的本地開發服務器上維護其他應用程序裝置,這將讓您受益匪淺。該實例的目的是使Web設計者可以獲得有質量保證的材料,並為需要為應用程序提供文件資料的人提供准入。
大家都知道,即使是最簡單的場景,也需要安裝、配置和維護三個實例。而對於位於不同地理位置的團隊來說,要從事這樣的項目便更加困難。對於任何不是特別簡單的Web應用程序項目,都需要多名開發人員來安裝項目裝置和本地設置以及運行單元測試的裝置等。
很多組織都將自己開發的產品作為Web應用程序。我們可以在很多產品中發現這種情況,例如電子商務系統、內容管理系統(CMS),以及博客發佈平台等。這類產品可在多個服務器中進行部署。對於成功的多用途Web應用程序來說,他們的開發人員必須要保證他們的應用程序便於安裝,並且能夠與其他Web應用程序完美集成。經過上述討論之後,我們應該明了,作為本文主題的應用程序配置是通用Web應用程序項目開發人員所需要解決的重要問題之一。
諸如CVS或Subversion之類的版本控制系統是開發組織使用的一種標準工具。這種工具代表了一些組織的中心源代碼版本庫,它們被用於保持源代碼的有序。用戶可以跟蹤應用程序源代碼的變化,顯示不同版本的區別,並可以確定項目分支。而且,它們使得在應用程序部署中進行部分更新成為可能。
很明顯,版本控制系統軟件是跟蹤源代碼所必需的,它對於解決應用程序配置問題有非常大的幫助。在本文中,我們將不會把重點放在版本控制系統上,因為這方面已經有很多相關的材料了。在此,我們將關注版本控制問題中的一個小話題:如何使Web應用程序的配置更加便捷(尤其是使用Spring
MVC框架編寫的Web應用程序)。
問題是:我們在此討論的是一種什麼樣的配置?任何Web應用程序都需要一些資源,這些資源通常都是其所運行的服務器所特有的,例如數據庫URL、發送電子郵件的SMTP服務器,以及包含專用軟件文件的文件夾等。這樣的設置應該集中,從而使應用程序配置更加簡單。
但是,這只是這個問題最簡單的一種版本。有時候,在應用程序開發中需要更加複雜的配置。這意味着,必須將各次部署中的不同Bean連接起來,而這會使問題更加複雜。
這些應用程序配置問題的解決方案有諸多優勢,包括:簡化應用程序的安裝和配置過程,使源代碼版本控制更加簡便,減少源代碼版本庫中的衝突現象。下面,我們將通過示例詳細討論這個話題。
問題。
我們首先來演示一下上文所提到的最簡單的版本。在這一場景中,我們希望在應用程序部署中改變的是簡單的配置參數,例如鏈接、密碼等。如果您曾經使用Spring
MVC框架開發過Web應用程序,那麼您應該知道這裡將用到的兩個配置文件:
/WEB-INF/applicationContext.xml,它讓您可以配置Bean,或者顯示應用程序上下文。通過這個文件,您可以定義自己的業務邏輯Bean、資源以及其他可以與Web端口相關聯的所有Bean。
/WEB-INF/[servlet-name]-servlet.xml,它被用於配置Web層、視圖解析器、控制器、校驗器以及其他所有MVC框架中必需的Bean。[servlet-name]指的是在web.xml部署描述符中定義的Spring
dispatcher servlet的名稱。
那麼問題在哪兒呢?問題就出在applicationContext.xml中將包括一些特定於主機的Bean。本文將定義。其中,最明顯的一個示例就是包含了JDBC連接信息的bean,但是任何一種稍微複雜些的應用程序都有十幾個類似的Bean。看一下下面的示例:
<bean
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property >
<value>org.postgresql.Driver</value>
</property>
<property >
</property>
<property >
<value>postgres</value>
</property>
<property >
<value></value>
</property>
</bean>
這個解決方案的問題在於對applicationContext.xml文件的維護。對於初學者來說,設想一下,項目放在源代碼版本控制系統中,例如CVS。下面,假設您希望在網站中添加新的功能,那麼就需要在應用程序上下文定義中添加額外的Bean定義。問題是如何在生產服務器上體現這些改變。
通常情況下,應用程序的本地實例不會與活動站點使用同樣的數據庫,因此applicationContext.xml文件將包括讓您能夠訪問本地數據庫的設置。當您想提交在源代碼版本庫中的改變時,就需要注意這些特定於主機屬性的同步性。版本庫中的文件最終可能使用本地設置中的配置。如果想在生產服務器上更新配置,就必須手動同步這些屬性的值。這是非常枯燥的任務,而且還非常容易出錯。
對於應用程序的每個實例來說,這個問題更加重要。假如有三位開發人員正在使用代碼段基址,而且他們使用的是本地的數據庫。當您提交更改的時候,他們每個人在本地服務器上更新源代碼的時候都必須非常謹慎。他們會手動同步這些更改,然後提交他們的工作。這樣一來,版本控制系統對於這些配置文件來說已經毫無用處。如果曾經使用過Spring
MVC,那麼您應該知道applicationContext.xml是應用程序中的關鍵組件,因為是它將所有的東西粘合在一起。所以,我們需要一種機制來幫助使應用程序中各項保持有序,這點非常重要。
正如前面所提到的,這是您可能遇到的較簡單的配置問題。更難的問題出現在當需要在不同服務器中進行不同的Bean連接的時候。這類問題常會出現在日常軟件開發任務中。例如,假如您的產品有一個客戶身份驗證模塊,可以對來自關係數據庫或LDAP服務器中的用戶進行身份驗證。自然,這一身份驗證模塊可以使用抽象了特定版本庫的Bean進行配置。如果您想改變不同應用程序部署中驗證用戶的方式,就需要在applicationContext.xml文件中進行不同的Bean連接。這種配置問題常見於在部署中有可配置特性的所有應用程序。
在下文中,我們將討論這兩種配置問題。首先我們會關注同步的Bean屬性問題及其解決方案,接下來,我們會討論更加複雜的同步Bean連接問題。
解決方案
同步Bean屬性
這個問題的一種可行的解決方案是將所有特定於主機的參數都放到普通的Java屬性文件中,使用Spring的PropertyPlaceHolderConfigurer類,將這些參數寫入Bean屬性中。
使用這一解決方案,我們可以生成如下的屬性文件(/WEB-INF/jdbc.properties):
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/test
jdbc.user=postgres
jdbc.password=
我們的Bean配置如下:
<bean
class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
<property >
<value>/WEB-INF/jdbc.properties</value>
</property>
</bean>
<bean
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property >
<value>${jdbc.driver}</value>
</property>
<property >
<value>${jdbc.url}</value>
</property>
<property >
<value>${jdbc.user}</value>
</property>
<property >
<value>${jdbc.password}</value>
</property>
</bean>
如上所述,我們定義了一個PropertyPlaceholderConfigurer類的實例,並將其位置屬性設置為我們的屬性文件。該類被實現為Bean工廠的後處理器,並將使用定義在文件中的屬性來代替所有的佔位符(${…}value)。
利用這種技術,我們可以從applicationContext.xml中移除所有特定於主機的配置屬性。通過這種方式,我們可以自由地為該文件添加新的Bean,而不必擔心特定於主機屬性的同步性。這樣可以簡化生產部署和維護。
java中的JSR75 JSR135 JSR180 JSR184 JSR185是什麼意思?
JSRs: Java Specification Requests 即Java規範要求
它是Java標準化組織(Java Community Process)提交給sun的java開發草案。
對於實時應用都有對應的JSR,比如現在幾乎不用的EJB,以前都有對應的JSR,它是一種對應應用的開發標準草案。即它都是對應現在的每個Java應用的,是一些工業標準。
如:
JSR75:J2ME(用於手機的Java)的文件系統操作,Jsr75分兩個部分,一部分是File,即本地文件系統,就跟Windos里的資源管理器一樣;一部分是PIM,說白了就是電話本之類的信息。
JSR180:SIP API for J2ME這個資源開發包,它提供了在J2me平台上開發SIP(會話啟動協議)應用的能力。SIP(Session Initiation Protocol)會話啟動協議是一個面向於網絡電話和會議的的應用層的控制(信令)協議。可以把它看成主要是基於IP網絡的多媒體通訊協議。我們可以在這個協議的基礎上構建包括多媒體視頻會議,IP電話,即時消息通知系統等應用在移動終端。
JSR135:Mobile Media API,Mobile Media API 是一個J2ME 設備的多媒體性能規範。其目標是實現J2ME 多媒體應用的通用性。
JSR184:J2ME Mobile3D API,高性能手機3D開發的api。即用於手機3D開發。
JSR185:《無線領域的JAVA技術規範》(Java Technology for the Wireless Industry即JTWI,JSR185)正是為了完成「建立一個標準來保證J2ME應用程序的跨平台性」這個使命而出現的。
以上都是用於手機Java應用的開發。
Java程序:輸入圓的半徑,輸出圓的周長和面積。(用eclipse編)
步驟如下:
public static void main(String args[]){
double p =3.1415926 ;
double r;
System.out.println(“請輸入半徑”);
Scanner s = new Scanner(System.in);
r = Double.parseDouble(s.next());
System.out.println(“圓的面積為”+p*r*r);
System.out.println(“圓的周長為”+p*2*r);
}
}
注意:java里不知道有沒有π的常量 這裡我就直接打數字了
擴展資料:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程 。
Java具有簡單性、面向對象、分佈式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等。
JCP(Java Community Process)是一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新Java技術規範、參考實現(RI)、技術兼容包(TCK)。
JCP維護的規範包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程序以後,進入到下一版本的規範裏面。
JSR是早期提議和最終發佈的Java平台規範的具體描述。通常,一個新的JSR的提出是為了增加或者規範Java平台的功能。某個具體的JSR由專家組共同來制定,工作由組長協調。例如,CLDC1.0(Connected Limited Device Configuration,JSR30)由Sun公司的Antero Taivalsaari擔任組長,同時專家組的成員還包括Siemens、Motorola、Nokia、Symbian等。Java ME平台規範是在JSR68中定義的,規範組長是Sun公司的Jon Courtney。
JSR完成後,相關的規範及JavaAPI會在JCP的官方網站發佈。設備製造商可以在自己的產品中實現某個JSR,如MIDP2.0(JSRll8)。但是這些都必須要通過TCK(Technology Compatibility Kit)測試以確保技術兼容性。
按照技術類別可以分成以下幾類:
1、J2EE平台規範
2、J2SE平台規範
3、J2ME平台規範
4、運營支持系統規範(OSS)
5、綜合網絡的Java 應用(JAIN)
6、XML 操作規範
參考資料:Java (計算機編程語言)-百度百科
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/250590.html