skyful

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            16 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

          #

          實際用在HTML中的標簽有forminputtextareaselectoption

          表單標簽form定義的表單里頭,必須有行為屬性action,它告訴表單當提交的時候將內容發往何處。

          可選的方法屬性method告訴表單數據將怎樣發送,有get(默認的)和post兩個值。常用到的是設置post值,它可以隱藏信息(get的信息會暴露在URL中)。

          所以一個表單元素看起來是這樣子的:

          				
          						<form action="processingscript.php" method="post">
          				
          				
          						</form>
          				
          		

          input標簽是表單世界中的“老大”。有10種形式,概括如下:

          • <input type="text" />是標準的文本框。它可以有一個值屬性value,用來設置文本框里的默認文本。
          • <input type="password" /> 像文本框一樣,但是會以星號代替用戶所輸入的實際字符。
          • <input type="checkbox" />復選框,用戶可以快速的選擇或者不選一個條目。它可以有一個預選屬性checked,像這樣的格式<input type="checkbox" checked="checked" />.
          • <input type="radio" /> 與復選框相似,但是用戶只可在一個組中選擇一個單選按鈕。它也有一個預選屬性checked,使用方法跟復選框一樣。
          • <input type="file" /> 是展示你電腦上的文件的一個區域,就像你在一個軟件中打開或者保存一個文檔一樣。
          • <input type="submit" /> 是一個被點擊后提交表單的按鈕。你可以用值屬性value來控制按鈕上顯示的文本(下面的buttonreset類型也可以這樣,稍后介紹),如下: <input type="submit" value="Ooo. Look. Text on a button. Wow" />.
          • <input type="image" />以圖像代替按鈕文本,src屬性是必須的,像img標簽一樣。
          • <input type="button" />是一個如果沒有其他代碼的話什么都不做的按鈕。
          • <input type="reset" /> 是一個點擊后會重置表單內容的按鈕。
          • <input type="hidden" /> 不會顯示任何東西,它用來傳輸諸如用戶正在用的頁面的名字或者Email地址等表單必須傳輸的東西。

          注意輸入標簽input也是用“/>”自關閉的。

          多行文本輸入框標簽textarea基本上就是一個比較大的文本框。它必須有行屬性rows和列屬性cols,用法像這樣:

          <textarea rows="5" cols="20">A big load of text here</textarea>

          選定標簽select與選項標簽option一起可以制作一個下拉選框。是這樣工作的:

          				
          						<select>
          				
          				
          						<option value="first option">Option 1</option>
          				
          				
          						<option value="second option">Option 2</option>
          				
          				
          						<option value="third option">Option 3</option>
          				
          				
          						</select>
          				
          		

          當表單被提交時,被選中選項的值將被發送。

          與復選框和單選按鈕的預選屬性checked一樣,選項標簽option也有一個預選屬性selected,它可以用在這樣的格式中:<option value="mouse" selected="selected">Rodent</option>

          上述的標簽中在網頁中看起來都不錯,但是,如果你有一個程序來處理這個表單,這些標簽都不起作用。這是因為,表單字段需要名稱。所以所有的字段中都需要增加名稱屬性name,比如 <input type="text" name="talkingsponge" />

          一個表單看起來應該像下面這樣(注意:這個表單不會工作,除非有一個用來提交數據的“contactus.php”的文件,它位于表單標簽form的行為屬性action中。)

          				
          						<form action="contactus.php" method="post">
          				
          				
          						<p>Name:</p>
          				
          				
          						<p><input type="text" name="name" value="Your name" /></p>
          				
          				
          						<p>Comments: </p>
          				
          				
          						<p><textarea name="comments" rows="5" cols="20">Your comments</textarea></p>
          				
          				
          						<p>Are you:</p>
          				
          				
          						<p><input type="radio" name="areyou" value="male" /> Male</p>
          				
          				
          						<p><input type="radio" name="areyou" value="female" /> Female</p>
          				
          				
          						<p><input type="radio" name="areyou" value="hermaphrodite" /> An hermaphrodite</p>
          				
          				
          						<p><input type="radio" name="areyou" value="asexual" checked="checked" /> Asexual</p>
          				
          				
          						<p><input type="submit" /></p>
          				
          				
          						<p><input type="reset" /></p>
          				
          				
          						</form>
          				
          		

          HTML高級指南中還有更復雜的高階水平教程等著你,如果你想進一步了解和學習。

          posted @ 2006-04-27 10:59 氓氓 閱讀(248) | 評論 (0)編輯 收藏

          在頁面中有8個復選框,名字都是checkbox,在這里這些checkbox組成了一個復選框組,可以通過checkbox[x]來調用具體的某一個復選框。

          <form name="form1" onSubmit="return check()" action="/alws/orgcodeapply.do" method="post">

          ?????? <td width="69" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 延期">
          ????????????? 延期</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 遷址">
          ????????????? 遷址</span></td>
          ????????????? <td width="71" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 名稱">
          ????????????? 名稱</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 地址">
          ????????????? 地址</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 法人">???????????????
          ????????????? 法人</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 資金">???????????????
          ????????????? 資金</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 性質">
          ????????????? 性質</span></td>
          ????????????? <td width="70" bgcolor="#FFFFFF"><span class="style5">
          ????????????? <input type="checkbox" name="checkbox" value=" 其他">???????????????
          ????????????? 其它</span></td>

          </form>

          在form標簽中,有onSubmit方法,通過在form中申明這個方法,可以實現在點擊submit按鈕時,先調用這個return check()方法,然后再執行
          action。
          下面是這個check()函數有關語句:

          <script language="JavaScript" type="text/JavaScript">
          function check()
          {
          ?<!--可以在這里檢驗表單的完整性-->

          ??? ?if(document.form1.checkbox[0].checked==true)
          ?? {
          ? ? ?document.form1.test.value=document.form1.checkbox[0].value;
          ? }
          ???? if(document.form1.checkbox[1].checked==true)
          ?? {
          ? ? ?document.form1.test2.value=document.form1.checkbox[1].value;
          ? }
          ????? if(document.form1.checkbox[2].checked==true)
          ?? {
          ? ? ?document.form1.test3.value=document.form1.checkbox[2].value;
          ? }
          ????? if(document.form1.checkbox[3].checked==true)
          ?? {
          ? ? ?document.form1.test4.value=document.form1.checkbox[3].value;
          ? }
          ????? if(document.form1.checkbox[4].checked==true)
          ?? {
          ? ? ?document.form1.test5.value=document.form1.checkbox[4].value;
          ? }
          ????? if(document.form1.checkbox[5].checked==true)
          ?? {
          ? ? ?document.form1.test6.value=document.form1.checkbox[5].value;
          ? }
          ????? if(document.form1.checkbox[6].checked==true)
          ?? {
          ? ? ?document.form1.test7.value=document.form1.checkbox[6].value;
          ? }
          ????? if(document.form1.checkbox[7].checked==true)
          ?? {
          ? ? ?document.form1.test8.value=document.form1.checkbox[7].value;
          ? }
          }
          </script>
          在上面這個函數中,如果某一個checkbox[x]被選中,則document.form1.checkbox[x].checked==true,執行賦值操作,這些復選框的值value被賦給test x,然后將test x的值傳入ActionForm中,就可以得到復選框的相對應的值了,如果test x,沒有被賦值,則為NULL
          下面是test相關語句,type=hidden,隱藏表單控件??????

          ?????? <input name="test" type="hidden" class="input" id="test" size="20">
          ????????????? <input name="test2" type="hidden" class="input" id="test2" size="20">
          ????????????? <input name="test3" type="hidden" class="input" id="test3" size="20">
          ????????????? <input name="test4" type="hidden" class="input" id="test4" size="20">
          ????????????? <input name="test5" type="hidden" class="input" id="test5" size="20">
          ????????????? <input name="test6" type="hidden" class="input" id="test6" size="20">
          ????????????? <input name="test7" type="hidden" class="input" id="test7" size="20">
          ????????????? <input name="test8" type="hidden" class="input" id="test8" size="20">

          posted @ 2006-04-27 10:55 氓氓 閱讀(712) | 評論 (0)編輯 收藏

          轉自: csdn.net

          JEE5到底有什么系列

          Java EE5作為新一代Java企業開發平臺的規范,從開始設計就引來了整個java開發社區的注目,引起無數的辯論和帶來了眾多的期盼。Java EE5作為J2EE平臺誕生幾近6年后的第4代規范重點關注的是目前java開發的幾個熱點:開發效率,運行效率和企業應用整合。目標也是讓J2EE開發簡單,簡單再簡單。那我們就看看J2EE5規范到底有什么,是否真的能給開發者/企業帶來真正的實惠?

          Java EE5規范是一個所謂的雨傘規范(Umbrella),在其下是一系列的子規范,主要包括:
          EJB 3.0 (JSR 220)
          Java Persistence API 1.0 (JSR 220)
          JSP 2.1 (JSR 245)
          JSF 1.2 (JSR 252)
          JAX-WS 2.0 (JSR 224)
          StAX 1.0 (JSR 173)
          JAXB 2.0 (JSR 222)
          Web Services Annotations 1.0 (JSR 181)
          Common Annotations 1.0 (JSR 250)
          SAAJ 1.3 maintenance
          JTA 1.1 maintenance
          JavaMail 1.4 & JAF 1.1 maintenance
          JSTL 1.2 maintenance
          Java EE Mgmt maintenance
          JACC maintenance
          Servlet maintenance
          Java EE Deployment maintenance
          WSEE maintenance

          Java Persistence API 1.0( EJB3 Entity Bean) 在Java EE5中, Entity Bean做為EJB規范中負責持久化的組件將逐漸成為一個歷史名詞了,作為J2EE 4規范中最為人所垢病的Entity Bean在Java EE5中被推到重來,取而代之的是java開發的通用持久化規范Java Persistence API 1.0, 其實就是完全重新定義了的Entity Bean規范(目前在很多場合中,由于歷史原因我們仍然使用ejb3持久化來稱呼這個規范)。JPA作為java中負責關系數據持久化的組件已經完全獨立出來成為一個單獨的規范,而不再屬于Enterprise Java Bean的范疇(EJB更多的是指Stateless/Stateful session bean和Message Driven Bean)。

          Java Persistence AP(JPA)可以說是java持久化技術的一個集大成者,它吸取了Hiberante,JDO,TopLink等優秀技術和框架,將這幾年發展成熟起來的基于POJO模型的O/R Mapping技術標準化,成為在J2EE和J2SE環境中通用的java持久化API。值得注意的是Java Persistence API并不是J2EE環境專用,而是在java中的通用API。意味著我們可以在任何需要訪問關系數據庫的地方使用JPA,甚至包括swing開發的桌面應用。JPA也不要求一定在J2EE容器中才能運行,而是任何有JVM的環境都可以運用。 這就使得我們可以很容易的把JPA作為一個持久化組件自由地和各種容器/框架(EJB3容器, Spring等等)組合。

          JPA如何簡化原來EJB2中Entity Bean的開發,看一個簡單對比:

          ?EJB2.0EJB3.0(JPA)
          Business Interface
          public inerface HelloWold extends EJBLocalObject{
              Public String getResult();
          }
                
          無需定義接口
          映射配置文件編寫EJB3 Deployment descriptor可選
          EJB實現
          public class HelloWorldEntityBean 
                   implements HelloWold, EntityBean{
              private int id;
              private String result;
              private EntityContext txt;
             
              public HelloWorldEntityBean(){}
              public void setEntityContext( EntityContext text ){ 
                  txt = text;
              }
             
              public String getResult(){ 
                  Return result; 
              }
                  
              public int getId(){
                  return id; 
              }
              
              public void setResult( String result ){ 
                  this.result = result;
              }
              
              public String cretaeByName( String name ) throws EJBException{
                  .....
              }
             
           }      
                
          @Entity
          @Table(name=”hellotable”)
          public class HelloWoldEntity{   
              @Id
              private int id; p
              private String result; 
              
              public HelloWoldEntity(){} 
              
              public String getResult(){ 
                  return result;
              }
              
              public int getId(){
                  return id;
              }  
              
              public void setResult( String result ){ 
                  this.result = result;
              }
          }      
             

          在JPA 中,ejb3的Entity Bean就是一個簡單的java bean,即POJO( Plain Old Java Object)。不象EJB2中的EntityBean需要跟容器有密切的關聯(EJB2中必須有EntityContext),EJB3 中的entityBean和容器無關,事實上在JPA中,EntityBean也不再稱為EntityBean,而是Entity,和Session Bean/Message Driven Bean的仍然存在的EJB區別開來。

          為了簡化O/R Mapping的配置,JPA大量采用JDK1.5的最重要的新特性annotaion直接在java代碼中進行配置的標注。 采用annotation標注O/R Mapping配置可以大幅度減少以往使用xml配置O/R Mapping工作量,提高效率和可維護性。

          下面是一個最簡單的一對一關聯關系采用annotation和xml的配置比較。

          ?Java Persistence API(EJB3 Persistence)Hiberante
          配置文件可選需要
          One-To-One配置可選
          <one-to-one        
              name="address"        
              class="com.foo.Address"        
              cascade="All"        
              lazy="false"/>
          
          Java代碼
          public class Order{     
           @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZYL)    
           Address address;
              ...... 
          }
                
          public class Order{    
              Address address;
              ......   
          }
          

          采用annotation的優勢在于:

          • 減少了配置文件的數量,特別是在實體(Entity)比較多的系統中,維護大量的O/R Mapping xml配置文件是不少的工作量。
          • 減少了配置需要標注的內容。由于annotation由java compiler來編譯解析,很多需要在xml配置中顯式聲明的內容不再需要(比如變量名稱,類型,集合中的對象類型等)。
          • Annotation的編譯期檢查可以避免xml文件中容易出現的配置語法錯誤,在IDE中及時發現和糾正。
          • 無需在xml配置文件和java代碼中切換,較少思維的跳躍,提高了開發效率。
          • annotation被編譯到java bytecode中,省略了xml的解析過程,極大的提升應用的啟動速度和內存占用(特別是Entity多的情況)。

          JPA在啟動上做了很多程度的簡化,使我們能夠很容易地在容器內(container)和J2SE環境中使用JPA。JPA擁有一個最基本的工廠類EntityManagerFactory。通過調用這個工廠類的createEntityManager()方法獲得EntityManager。所有對實體(Entity)的操作包括持久化,查詢,刪除等等操作都都定義EntityManager上。

          public interface EntityManager {
              public void persist(Object entity);
              public  T merge(T entity);
              public void remove(Object entity);
              public  T find(Class entityClass, Object primaryKey);
              public  T getReference(Class entityClass, Object primaryKey);
              public void flush();
              public void setFlushMode(FlushModeType flushMode);
              public FlushModeType getFlushMode();
              public void lock(Object entity, LockModeType lockMode);
              public void refresh(Object entity);
              public void clear();
              public boolean contains(Object entity);
              public Query createQuery(String ejbqlString);
              public Query createNamedQuery(String name);
              public Query createNativeQuery(String sqlString);
              public Query createNativeQuery(String sqlString, Class result-
              Class);
              public Query createNativeQuery(String sqlString, String result-
              SetMapping);
              public void close();
              public boolean isOpen();
              public EntityTransaction getTransaction();
          }
              
              

          那又如何獲得EntityManagerFactory呢?不管是在J2EE或者J2SE中,都需要通過一個persistence.xml配置文件對EntityMangaerFactory進行配置。下面是一個最簡單的persistence.xml的范例。

          <entity-manager>
              <name>myEntityManager>/name>
              <provider>com.redsoft.ejb3.PersistenceProviderImpl>/provider>
              <class>com.redsoft.samples.HelloEntityBean>/class>
              <properties>
                  <property name="ConnectionDriverName" value="/"com.mysql.jdbc.Driver"/>
          "        <property name="ConnectionURL" value="jdbc:mysql://localhost/EJB3Test"/>
                  <property name="ConnectionUserName" value="ejb3"/>
                  <property name="ConnectionPassword" value="ejb3"/>
             >/properties>
          </entity-manager> 

          name – 定了當前這個EntityMangaerFactory的名字,我們可以在一個persistence.xml中定義多個EntityManagerFactory。

          Provider – 定了提供EntityManagerFactory的具體實現類。這個實現類由不同的持久化產品開發商提供。例子中采用的是國產紅工場的ejb3持久化實現的 EntityManagerFactory實現類。如如果我們需要更換成其他廠商的產品,就需要更換具體的實現類。

          class – 列出所有需要被JPA管理的實體類。為了保證在J2SE/J2EE中的通用性和可移植性,JPA要求這里必須列出所有被JPA管理的實體類。

          properties – 由持久化廠商自行定義的屬性。

          如果使用JTA事務,也可以使用 <jta-data-source>myDataSource</ jta-data-source>來定義連接池。

          在J2EE容器環境中和J2SE環境中,都是通過讀取這個配置文件來初始化EntityMangaerFactory。在J2EE容器環境下,ejb3容器負責讀取persistence.xml并初始化EntityManagerFactory,并將EntityManagerFactory幫定到JDNI中,這樣我們就可以通過訪問JNDI獲得EntityManagerFactory, 進而獲得EntityManager。由于EJB3容器支持IOC模式,我們也可以通過IOC將EntityMangerFactory直接注射給需要的使用JPA持久化的java類。通過IOC注射的方式獲得EntityManagerFactory或者EntityManager是更方便,合理和推薦的方式。

          而在J2SE環境中,我們可以通過標準的javax.persistence.Persistence類來獲得EntityManagerFactory。Javax.persistence.Persistence會在當前classpath或者jar包的META-INF/下搜索并讀persistence.xml后初始化EntityManagerFactory。

          下面是一個簡單的示例如何在J2SE環境中獲得EntityManagerFactory并獲得EntityManager,運用EntityManager持久化HelloWorldEntityBean.

          public class HelloWorld {
              public static void main( final String[] args ){
                  /*
                   * Obtain an EJB3 entity manager
                   */
                  final EntityManagerFactory emf = Persistence.createEntityManagerFactory();
                  final EntityManager entityManager = emf.createEntityManager();
                  // Construct a HelloEntityBean
                  final HelloEntityBean hello = new HelloEntityBean( 1, "foo" );
                  EntityTransaction trans = entityManager.getTransaction();
                  trans.begin();
                  entityManager.persist( hello );
                  trans.commit();
                  System.out.println( "Successfully persist hello: " + hello );
                  // Look up the HelloEntityBean by primarky key
                  final HelloEntityBean anotherHello = entityManager.find( HelloEntityBean.class, new Integer( hello.getId() ) );
                  System.out.println( "Found hello: " + anotherHello );
                  // close the EntityManager
                  entityManager.close();
                  emf.close();
              }
          }
              

          事實上不管是在J2SE還是J2EE中我們都可以這樣通過javax.persistence.Persistence來初始化EntityManagerFactory。

          在上面HelloWorld的例子中我們需要顯式調用javax.persistence.Persistence.createEntityManagerFactory, 并且顯式地開始事務和關閉事務。在今天大量使用IOC托管容器的時代,這樣的編碼已經顯得落后。

          作為J2EE一個部分的JPA自然可以利用EJB3的IOC容器托管事務和注射資源,同樣的也可以使用開源IOC容器spring來托管事務和注射資源。紅工場也提供了一個開源的spring DAO擴展 http://sourceforge.net/projects/ejb3daosupport 是來支持JPA和Spring的結合。

          下面是一個如何在Spring中托管事務和在DAO中注入EntityManager的配置范例:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "file://spring-beans.dtd">
          <beans>
           <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
            <property name="url"><value>jdbc:mysql://localhost/EJB3Test</value></property>
            <property name="username"><value>ejb3</value></property>
            <property name="password"><value>ejb3</value></property>
           </bean>
           <bean id="entityManagerFactory"
            class="org.springframework.orm.ejb3.LocalEntityManagerFactoryBean">
            <property name="persistenceInfo"><ref local="persistenceInfo"/></property>
            
           </bean>
           <bean id="persistenceInfo" class="com.redsoft.ejb3.PersistenceInfoImpl">
            <property name="nonJtaDataSource"><ref local="dataSource"/></property>
            <property name="entityManagerName"><value>myEntityManager</value></property>
            <property name="persistenceProviderClassName">
             <value>
              com.redsoft.ejb3.PersistenceProviderImpl
             </value>
            </property>
            <property name="entityClassNames">
            <list>
             <value>com.redsoft.ejb3.spring.Child</value>
             <value>com.redsoft.ejb3.spring.Father</value>
            </list>
            </property>
            <property name="properties">
             <props>
             <prop key="javax.jdo.PersistenceManagerFactoryClass">
              com.redsoft.jdo.PersistenceManagerFactoryImpl
             </prop>
             </props>
            </property>
           </bean>
           <bean id="transactionManager" class="org.springframework.orm.ejb3.EJB3TransactionManager"
            singleton="true">
            <property name="entityManagerFactory">
             <ref local="entityManagerFactory" />
            </property>
           </bean>
           
           <bean id="dao"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
            singleton="true">
            <property name="transactionManager">
             <ref local="transactionManager" />
            </property>
            <property name="target">
             <bean class="com.redsoft.ejb3.spring.DAOImpl">
              <property name="entityManagerFactory">
               <ref local="entityManagerFactory" />
              </property>
             </bean>
            </property>
            <property name="transactionAttributes">
             <props>
              <prop key="save*">PROPAGATION_REQUIRED</prop>
              <prop key="remove*">PROPAGATION_REQUIRED</prop>
              <prop key="del*">PROPAGATION_REQUIRED</prop>
              <prop key="update*">PROPAGATION_REQUIRED</prop>
              <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
              <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
              <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
             </props>
            </property>
           </bean>
          </beans>
              

          文中的例子可以從紅工場主頁下載 http://www.redsoftfactory.com/chinese/index.html

          posted @ 2006-03-20 16:09 氓氓 閱讀(458) | 評論 (0)編輯 收藏

          Java代碼查詢站點
          ?1.?java2s ?http://www.java2s.com/
          ???這個網站非常好,分成三大類,分別是ExampleProductsArticles,每個大類下又分別設許多小類,還有搜索功能,這樣查找起來非常方便。。比如,如果要學習SWT/JFace,只要把Example下的SWT JFace Eclipse研究一下也就可以了。另外,這個網站還有JavaScript DHTMLC# / C SharpC / ANSI-CSQL / MySQL等類。總之,非常好。
          ?? 這是O'Reily旗下的,除了Java之外,還有Ruby、Python。
          ?
          ?? 難得看見國產的,好歹也要支持一下,分類也算清楚。
          ?
          ???是個綜合查詢的網站,不過它好像是從代碼中查找關鍵詞,包含的語言挺多的。
          ? 5. Resources for Java server-side developers? http://www.java201.com/
          ?? 確切的說,它是一個資源收集的網站,代碼查詢并不多。不過它分類相當細,如Articles、Books、Examples、Extensions、Frameworks等類,你可以輸入Spring或Hibernate作為關鍵詞搜索一下看看。
          posted @ 2006-03-20 16:07 氓氓 閱讀(186) | 評論 (0)編輯 收藏

          JSP數據庫數據分頁顯示 ???[ 日期:2005-05-14 ]???[ 來自:轉載 ]

          <%--??
          功能:JSP數據庫操作例程?-?數據分頁顯示?-?JDBC?2.0?-?Oracle??
          --%>??

          <%@?page?contentType=\"text/html;charset=8859_1\"?%>??

          <%??
          //變量聲明??
          java.sql.Connection?sqlCon;?//數據庫連接對象??
          java.sql.Statement?sqlStmt;?//SQL語句對象??
          java.sql.ResultSet?sqlRst; //結果集對象??

          java.lang.String?strCon;  //數據庫連接字符串??
          java.lang.String?strSQL;  //SQL語句??

          int?intPageSize;     ?//一頁顯示的記錄數??
          int?intRowCount;     ?//記錄總數??
          int?intPageCount;     //總頁數??
          int?intPage;       ?//待顯示頁碼??
          java.lang.String?strPage;??

          int?i;??

          //設置一頁顯示的記錄數??
          intPageSize?=?2;??

          //取得待顯示頁碼??
          strPage?=?request.getParameter(\"page\");??
          if(strPage==null){//表明在QueryString中沒有page這一個參數,此時顯示第一頁數據??
           ?intPage?=?1;??
          }??
          else{//將字符串轉換成整型??
           ?intPage?=?java.lang.Integer.parseInt(strPage);??
           ?if(intPage<1)?intPage?=?1;??
          }??

          //裝載JDBC驅動程序??
          java.sql.DriverManager.registerDriver(new?oracle.jdbc.driver.OracleDriver());??

          //設置數據庫連接字符串??
          strCon?=?\"jdbc:oracle:thin:@linux:1521:ora4cweb\";??

          //連接數據庫??
          sqlCon?=?java.sql.DriverManager.getConnection(strCon,\"hzq\",\"hzq\");??

          //創建一個可以滾動的只讀的SQL語句對象??
          sqlStmt?=?sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);??

          //準備SQL語句??
          strSQL?=?\"select?name,age?from?test\";??

          //執行SQL語句并獲取結果集??
          sqlRst?=?sqlStmt.executeQuery(strSQL);??

          //獲取記錄總數??
          sqlRst.last();??
          intRowCount?=?sqlRst.getRow();??

          //記算總頁數??
          intPageCount?=?(intRowCount+intPageSize-1)?/?intPageSize;??

          //調整待顯示的頁碼??
          if(intPage>intPageCount)?intPage?=?intPageCount;??
          %>??

          <html>??
          <head>??
          <meta?http-equiv=\"Content-Type\"?content=\"text/html;?charset=gb2312\">??
          <title>JSP數據庫操作例程?-?數據分頁顯示?-?JDBC?2.0?-?Oracle</title>??
          </head>??

          <body>??

          <table?border=\"1\"?cellspacing=\"0\"?cellpadding=\"0\">??
          <tr>??
           ?<th>姓名</th>??
           ?<th>年齡</th>??
          </tr>??

          <%??
          if(intPageCount>0){??
           ?//將記錄指針定位到待顯示頁的第一條記錄上??
           ?sqlRst.absolute((intPage-1)?*?intPageSize?+?1);??

           ?//顯示數據??
           ?i?=?0;??
           ?while(i<intPageSize?&&?!sqlRst.isAfterLast()){??
             %>??
          <tr>??
           ?<td><%=sqlRst.getString(1)%></td>??
           ?<td><%=sqlRst.getString(2)%></td>??
          </tr>??
             <%??
             sqlRst.next();??
             i++;??
           ?}??
          }??
          %>??

          </table>??

          第<%=intPage%>頁??共<%=intPageCount%>頁??<%if(intPage<intPageCount){%><a?href=\"jdbc20-oracle.jsp?page=<%=intPage+1%>\">下一頁</a><%}%>??<%if(intPage>1){%><a?href=\"jdbc20-oracle.jsp?page=<%=intPage-1%>\">上一頁</a><%}%>??

          </body>??
          </html>??

          <%??
          //關閉結果集??
          sqlRst.close();??

          //關閉SQL語句對象??
          sqlStmt.close();??

          //關閉數據庫??
          sqlCon.close();
          posted @ 2006-03-20 16:06 氓氓 閱讀(965) | 評論 (2)編輯 收藏

          一、JDK安裝環境配置
          Java環境配置大全
          安裝JDK

          http://Java.sun.com/ 下載jdk-1_5_0_04-windows-i586-p.exe

          安裝到指定路徑,我選擇D:\jdk1.5.0

          配置環境變量:

          Java_HOME: D:\jdk1.5.0? (注意不能有;也不能有\)
          PATH: D:\jdk1.5.0\bin;
          CLASSPATH: .;D:\jdk1.5.0\lib\tools.jar;
          D:\jdk1.5.0\jre\lib\rt.jar;

          安裝WTK

          http://Java.sun.com/ 下載j2me_wireless_toolkit-2_2-windows.exe

          安裝到指定路徑,我選擇D:\WTK22

          安裝Eclipse

          http://www.eclipse.org/ 下載eclipse-SDK-3.0.1-win32.zip和

          NLpack-eclipse-SDK-3.0.x-win32.zip(語言包)

          解壓縮eclipse-SDK-3.0.1-win32.zip即可,我的路徑:D:\MyDevelopTools\eclipse

          解壓縮NLpack-eclipse-SDK-3.0.x-win32.zip,得到features和plugins兩個文件夾,把里面的文件分別拷

          入eclipse中相應的目錄下即可

          安裝Tomcat

          http://jakarta.apache.org/ 下載jakarta-tomcat-5.5.9.zip

          解壓縮jakarta-tomcat-5.5.9.zip即可

          配置環境變量:

          Tomcat_Home: D:\MyDevelopTools\tomcat-5.5.9

          PATH: D:\MyDevelopTools\tomcat-5.5.9;

          在eclipse中配置J2ME開發環境:

          安裝eclipseme:

          http://www.eclipseme.org/ 下載eclipseme.feature_0.9.4_site.zip,在eclipse中選擇幫助-〉軟件

          更新-〉查找并安裝-〉搜索要安裝的新功能部件-〉新建已歸檔的站點。選擇

          eclipseme.feature_0.9.4_site.zip,打開-〉選擇eclipseme.feature_0.9.4_site.zip,剩下的一直下

          一步就可以了。安裝完成會在窗口-〉首選項中出現J2ME

          修改Java-〉調試:

          選中Java-〉調試,把暫掛執行的前兩項點去,通信中的調試器超時改為15000

          配置WTK

          窗口-〉首選項-〉J2ME-〉Platform Components

          右鍵單擊對話框右側的Wireless Toolkit,選擇Add Wireless Toolkit,

          選擇WTK安裝目錄,eclipse會自動匹配。

          在eclipse中配置J2EE開發環境(Tomcat5.5.9):

          安裝EMF-RunTime:

          http://www.eclipseme.org/ 下載emf-sdo-runtime-2.0.1.zip

          解壓縮emf-sdo-runtime-2.0.1.zip,得到features和plugins兩個文件夾,把里面的文件分別拷入eclipse

          中相應的目錄下即可。

          安裝Lomboz:

          http://forge.objectweb.org 下載org.objectweb.lomboz_3.0.1.N20050106.zip解壓縮

          org.objectweb.lomboz_3.0.1.N20050106.zip,得到features和plugins兩個文件夾,把里面的文件分別拷

          入eclipse中相應的目錄下。如果在窗口-〉首選項中有Lomboz選項就安裝正確,如果沒有,在

          D:\eclipse\configuration\下刪除org.eclipse.update這個文件夾,再重起eclipse就可以了。

          配置Lomboz:

          在D:\eclipse\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers下新建一個文件tomcat559.server,

          里面的內容從tomcat50x.server全部復制過來,把name="Apache Tomcat v5.0.x"替換成name="Apache

          Tomcat v5.5.9",然后把所有的

          “${serverRootDirectory}/bin;${serverRootDirectory}/common/endorsed”替換成

          “${serverRootDirectory}/common/endorsed”就可以了。然后進入eclipse,窗口-〉首選項-〉Lomboz

          ,把JDK Tools.jar改為:D:\jdk1.5.0\lib\tools.jar,窗口-〉首選項-〉Lomboz-〉Server

          Definitions,在Server types中選擇Tomcat5.5.9在Application Server Directory和Classpath

          Variable的路徑改為D:/MyDevelopTools/tomcat-5.5.9先應用,再確定就可以了。
          ?

          ----------------------------------------------

          -------
          二、tomcat + jsp/ servlet/ javabean 環境配置
          第一步:下載j2sdk和tomcat:到sun官方站點(
          http://java.sun.com/j2se/1.4.2/download.html)下載

          j2sdk,注意下載版本為Windows Offline Installation的SDK,同時最好下載J2SE 1.4.2 Documentation

          ,然后到tomcat官方站點( http://www.apache.org/dist/jakarta/tomcat-4/ )下載tomcat(下載最新

          4.1.x版本的tomcat);

          第二步:安裝和配置你的j2sdk和tomcat:執行j2sdk和tomcat的安裝程序,然后按默認設置進行安裝即可


          1.安裝j2sdk以后,需要配置一下環境變量,在我的電腦->;屬性->;高級->;環境變量->;系統變量中添加

          以下環境變量(假定你的j2sdk安裝在c:\j2sdk1.4.2):
          JAVA_HOME=c:\j2sdk1.4.2
          classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因為它代表當前

          路徑)
          path=%JAVA_HOME%\bin
          接著可以寫一個簡單的java程序來測試J2SDK是否已安裝成功:
          public class Test{
          public static void main(String args[]){
          System.out.println("This is a test program.");
          }
          }
          將上面的這段程序保存為文件名為Test.java的文件。
          然后打開命令提示符窗口,cd到你的Test.java所在目錄,然后鍵入下面的命令?
          javac Test.java
          java Test?
          此時如果看到打印出來This is a test program.的話說明安裝成功了,如果沒有打印出這句話,你需要

          仔細檢查一下你的配置情況。

          2.安裝Tomcat后,在我的電腦->;屬性->;高級->;環境變量->;系統變量中添加以下環境變量(假定你的

          tomcat安裝在c:\tomcat):
          CATALINA_HOME=c:\tomcat;
          CATALINA_BASE=c:\tomcat;
          然后修改環境變量中的classpath,把tomat安裝目錄下的common\lib下的servlet.jar追加到classpath中

          去,修改后的classpath如下:
          classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%

          \common\lib\servlet.jar;
          接著可以啟動tomcat,在IE中訪問
          http://localhost:8080 ,如果看到tomcat的歡迎頁面的話說明安裝成

          功了。

          第三步:建立自己的jsp app目錄
          1.到Tomcat的安裝目錄的webapps目錄,可以看到ROOT,examples, tomcat-docs之類Tomcat自帶的的目錄


          2.在webapps目錄下新建一個目錄,起名叫myapp;
          3.myapp下新建一個目錄WEB-INF,注意,目錄名稱是區分大小寫的;
          4.WEB-INF下新建一個文件web.xml,內容如下:
          <?xml version="1.0" encoding="ISO-8859-1"?>;

          <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "
          http://java.sun.com/dtd/web-app_2_3.dtd ">;

          <web-app>;
          <display-name>;My Web Application</display-name>;
          <description>;
          A application for test.
          </description>;
          </web-app>;
          5.在myapp下新建一個測試的jsp頁面,文件名為index.jsp,文件內容如下:
          <html>;<body>;<center>;
          Now time is: <%=new java.util.Date()%>;
          </center>;</body>;</html>;
          6.重啟Tomcat
          7.打開瀏覽器,輸入
          http://localhost:8080/myapp/index.jsp 看到當前時間的話說明就成功了。

          第四步:建立自己的Servlet:
          1.用你最熟悉的編輯器(建議使用有語法檢查的java ide)新建一個servlet程序,文件名為Test.java,

          文件內容如下:
          package test;
          import java.io.IOException;
          import java.io.PrintWriter;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          public class Test extends HttpServlet {
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          PrintWriter out=response.getWriter();
          out.println("<html>;<body>;<h1>;This is a servlet test.</h1>;</body>;</html>;");
          out.flush();
          }
          }
          2 .編譯
          將Test.java放在c:\test下,使用如下命令編譯:
          C:\Test>;javac Test.java
          然后在c:\Test下會產生一個編譯后的servlet文件:Test.class
          3 .將結構test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那

          個test目錄到classes目錄下,如果classes目錄不存在,就新建一個。 現在webapps\myapp\WEB-

          INF\classes下有test\Test.class的文件目錄結構
          4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping
          編輯后的web.xml如下所示,紅色為添加的內容:
          <?xml version="1.0" encoding="ISO-8859-1"?>;

          <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "
          http://java.sun.com/dtd/web-app_2_3.dtd ">;

          <display-name>;My Web Application</display-name>;
          <description>;
          A application for test.
          </description>;
          <servlet>;
          <servlet-name>;Test</servlet-name>;
          <display-name>;Test</display-name>;
          <description>;A test Servlet</description>;
          <servlet-class>;test.Test</servlet-class>;
          </servlet>;
          <servlet-mapping>;
          <servlet-name>;Test</servlet-name>;
          <url-pattern>;/Test</url-pattern>;
          </servlet-mapping>;
          </web-app>;
          這段話中的servlet這一段聲明了你要調用的Servlet,而servlet-mapping則是將聲明的servlet“映射”

          到地址/Test上
          5 .好了,啟動Tomcat,啟動瀏覽器,輸入
          http://localhost:8080/myapp/Test 如果看到輸出This is a

          servlet test.就說明編寫的servlet成功了。
          注意:修改了web.xml以及新加了class,都要重啟Tomcat

          第四步:建立自己的Bean:
          1.用你最熟悉的編輯器(建議使用有語法檢查的java ide)新建一個java程序,文件名為TestBean.java

          ,文件內容如下:
          package test;
          public class TestBean{
          private String name = null;
          public TestBean(String strName_p){
          this.name=strName_p;
          }?
          public void setName(String strName_p){
          this.name=strName_p;
          }
          public String getName(){
          return this.name;
          }?
          }
          2 .編譯
          將TestBean.java放在c:\test下,使用如下命令編譯:
          C:\Test>;javac TestBean.java
          然后在c:\Test下會產生一個編譯后的bean文件:TestBean.class
          3 .將TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,
          4 .新建一個TestBean.jsp文件,文件內容為:
          <%@ page import="test.TestBean" %>;?
          <html>;<body>;<center>;
          <%
          TestBean testBean=new TestBean("This is a test java bean.");
          %>;
          Java bean name is: <%=testBean.getName()%>;
          </center>;</body>;</html>;?
          5 .好了,重啟Tomcat,啟動瀏覽器,輸入
          http://localhost:8080/myapp/TestBean.jsp 如果看到輸出

          Java bean name is: This is a test java bean.就說明編寫的Bean成功了。

          這樣就完成了整個Tomcat下的jsp、servlet和javabean的配置。接下來需要做的事情就是多看書、多讀別

          人的好代碼,自己多動手寫代碼以增強自己在這方面開發的能力了。
          ----------------------------------------------

          -------
          三、tomcat + mysql / mssql 環境配置
          jsp+ mysql + tomcat 實例
          不休和尚 發表于 2005-9-22 18:06:59?
          呵呵 一邊忙著準備補考,一邊慢慢的在弄這些個jsp,快想瘋掉了我。哎呀,,,真是命苦啊。
          ?這個是關于連接mysql的代碼,保留一下,方便以后查看吧,要是對你有幫助的話,不用感謝我,呵呵。

          因為我也是在網上搜索整理出來的。只是我的使用過程而已。
          ???? --------------------------------------------------------------------------------------

          ------------
          ?Mysql
          下載版本:mysql-4.1.13-win32.zip(Windows downloads)
          http://dev.mysql.com/downloads/mysql/4.1.html
          JDBC驅動
          下載版本:mysql-connector-java-3.1.10.zip
          好象已經有 3.2.0出現了哦,不過我還是用了這個版本的。
          http://dev.mysql.com/downloads/connector/j/3.1.html
          ?
          ?關于jsdk 的東西就不用說咯。

          安裝Mysql
          ? 別人寫的,抄一下 ^_^
          解壓縮mysql-4.1.13-win32.zip,運行setup.exe
          首先出現的是安裝向導歡迎界面,直接點擊“Next”
          繼續,選擇安裝類型,選擇“自定義”custom安裝,然后點“Next”下一步,出現自定義安裝界面
          選擇安裝路徑:C:\MySQL Server 4.1(可自定義)
          點“OK”返回到自定義安裝界面,路徑已改為設置的路徑
          點“Next”,準備開始安裝
          點“Install”開始安裝
          完成后出現創建MySQL.com帳號的界面
          如果是首次使用MySQL,選“Create anew free MySQL.com accout”
          點“Next”,輸入你的Email地址和自己設定的用于登錄MySQL.com的密碼
          填完后點“Next”進入第二步
          填寫姓名等相關信息,填完點“Next”,進入第三步
          填完電話號碼、公司名稱等信息后,點“Next”,
          然后出現預覽你剛才填的信息的界面,點“Next”出現安裝完成界面
          注意,這里有個配置向導的選項(Configure the MySQL Server now),
          建議勾選立即配置你的MySQL。許多說安裝完MySQL后無法啟動,原因就在于沒有配置MySQL。
          點擊“Finish”完成安裝,并開始配置MySQL
          點“Next”,進入配置類型選擇頁面。選“Detailed configuration”(詳細配置)
          點“Next”,進入服務類型選擇頁面。選“Developer Machine”(開發者機器),這樣占用系統的資源

          不會很多
          點“Next”后,進入數據庫用法選擇頁面。選擇“Multifunctional Database”
          點“Next”,進入選擇InnoDB數據存放位置頁面
          不用更改設置,直接放在Installation Path安裝目錄里即可,然后點“Next”,選擇MySQL的同時聯接數
          選擇“Manual Setting”,設置為100(根據自己需要,酌情設置)
          點“Next”,配置MySQL在TCP/IP通訊環境中的端口選擇默認的3306端口即可。
          點“Next”,選擇MySQL中的字符設置
          注意,這里的選擇將會影響你是否能在MySQL中使用中文。選擇gb2312字符集以便支持簡體中文
          點“Next”,設置Windows服務選項
          注意,這里的選擇很關鍵。
          “Install As Windows Service”一定要勾選,這是將MySQL作為Windows的服務運行。
          “Service Name”就用默認的“MySQL”
          下面的“Launch the MySQL Server automatically”一定要勾選,這樣Windows啟動時,MySQL就會自動

          啟動服務,要不然就要手工啟動MySQL。
          許多人說安裝MySQL后無法啟動、無法連接、出現10061錯誤,原因就在這里。
          點“Next”,設置根帳號root的登錄密碼
          “Modify Security Settings”是設置根帳號的密碼,輸入你設定的密碼即可。
          “Create An Anonymous Account”是創建一個匿名帳號,這樣會導致未經授權的用戶非法訪問你的數據

          庫,有安全隱患,建議不要勾選。
          點“Next”,MySQL配置向導將依據你上面的所有設定配置MySQL,以便MySQL的運行符合你的需要
          點“Execute”開始配置,當出現“Service started successfully”時,說明你的配置完成,MySQL服務

          啟動成功
          點“Finish”完成,整個MySQL的配置完成,剩下的就是用MySQL客戶端連接MySQL服務器,然后使用了。

          安裝JDBC驅動:
          解壓縮mysql-connector-java-3.1.10.zip
          將要使用的是mysql-connector-java-3.1.10-bin-g.jar和mysql-connector-java-3.1.10-bin.jar

          配置
          在C:\Program Files\Java目錄下建立mysqlforjdbc子目錄,進入該目錄將mysql-connector-java-

          3.1.10-bin.jar到該目錄下
          進入C:\Program Files\Java\jdk1.5.0_04\lib目錄將mysql-connector-java-3.1.10-bin-g.jar拷貝到該

          目錄下
          然后配置classpath,追加%JAVA_HOME%\lib\mysql-connector-java-3.1.10-bin-g.jar;C:\Program

          Files\Java\mysqlforjdbc\mysql-connector-java-3.1.10-bin.jar;到該環境變量中去

          配置這個的目的是讓java應用程序找到連接mysql的驅動.

          還有一點就是不要忘記了把沙鍋難免的兩個驅動拷貝到tomcat目錄下面哦,否則還是找不到的哦哦哦哦

          ,因為我就是遇到過咯,經驗。 不信自己試

          最后就是源代碼咯:

          我在Mysql上面建了一個testsql 數據庫 表名: test? 共有5個字段
          <%@ page contentType="text/html; charset=gb2312" %>
          <%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.* "%>
          <html>
          <body>
          <% Class.forName("org.gjt.mm.mysql.Driver").newInstance();

          String url="jdbc:mysql://localhost/testsql";
          Connection? conn=DriverManager.getConnection(url,"bonze","");
          Statement stmt = conn.createStatement();
          String sqlstr="select * from test";
          ResultSet rs= stmt.executeQuery(sqlstr);

          while(rs.next()){
          out.println(rs.getString(1));
          out.println(rs.getString(2));
          out.println(rs.getString(4));
          out.println(rs.getString(5));

          }
          out.println("<br>");
          out.print("恭喜~! 打開數據庫操作成功!");
          rs.close();
          stmt.close();
          conn.close();
          %>

          </body>
          </html>

          好了就那么多咯

          要是成功了 就能看到你數據庫里面的東西了撒,呵呵
          下次就是關于一些操作的東西咯,準備做個簡單點的jsp 網站放出來,丟下人。呵呵
          還有, 估計關于oracle的連接的代碼要等段時間了啊,補考完了再說,還有現在正在上oracle課,呵呵

          ,老是翹課滴~? 嘿嘿。。。。。。 大肆都這樣,沒辦法哦。。。
          ?
          ?


          -------------------------------------------------------------------------------------------

          ---------
          四、Jboss

          安裝配置Jboss完全篇
          1、???????????? Jboss的配置安裝
          1.1、????????? Jboss的下載
          Jboss的下載地址為:
          http://www.jboss.org/ 。目前的最新版本是:Jboss2.2.1。建議你下載Jboss2.2.1

          和tomcat3.2.1集成的下載包,這樣避免了單個下載后兩者之間配置的問題。下載地址是:

          http://prdownloads.sourceforge.net/jboss/JBoss-2.2.1_Tomcat-3.2.1.zip

          下載完成后,解壓到一個目錄,這個目錄名為E:\program files\jb_tom(這個目錄名是筆者自定的)。

          下面有如下子目錄:

          E:\program files\jb_tom\jboss和E:\jb_tom\tomcat

          注意:這里的目錄稍微做了改動,建議你將TOMCAT_HOME加到CLASSPATH中,否則E:\program

          files\jb_tom\jboss里的run_with_tomcat.bat這個文件要做相應改動才能正常運行。

          1.2、????????? 配置運行
          在啟動Jboss前應該先安裝好JDK,建議安裝JDK1.3以上的版本(目前最新的正式版本是JDK1.3.1),然后

          將系統的Classpath設置好。Jboss不要任何配置和修改,當然,最好將TOMCAT_HOME加到Classpath中,這

          樣,E:\program files\jb_tom\jboss里的run_with_tomcat.bat這個文件前的TOMCAT_HOME就可以去掉了

          運行E:\program files\jb_tom\jboss里的run_with_tomcat.bat這個文件,這樣,Tomcat端口在8080,

          Jboss為8083,運行 http://localhost:8080/ 將出現tomcat首頁,運行 http://localhost:8083/ 將出現無

          錯誤的空白頁。

          2、???????????? 測試EJB
          2.1、????????? 啟動JBOSS:
          方法么,這里就不多作描述了,因為前面已經寫過了^&^。

          2.2、????????? 下載并配置EJB例程
          http://www.wodejia.net/softdownload/java/interestejb.zip 下載interestejb.zip,這就是我們用

          于測試的EJB例程。將壓縮包解開,出現如下目錄:

          interest/com

          interest/docs

          ……

          將該目錄下所有文件全部copy到jboss安裝目錄下的examples目錄下,如果沒有examples目錄,就自己建

          立一個,結構如下:

          E:\ program files\jb_tom \jboss\examples\interest...

          將文件E:\program files\jb_tom\jboss\examples\interest\interest.jar復制到:E:\program

          files\jb_tom\jboss\deploy下。

          在Classpath中加入如下文件:e:\program files\jb_tom\tomcat\lib\servlet.jar;e:\program

          files\jb_tom\jboss\client\jboss-client.jar;e:\program files\jb_tom\jboss\client\jnp-

          client.jar;e:\program files\jb_tom\jboss\lib\ext\ejb.jar;e:\program

          files\jb_tom\jboss\examples\interest\interest-client.jar

          為了測試Client通過servlet調用EJB,必須將: E:\program files\jb_tom\jboss\examples\interest下

          EJB.class和EJB.java復制到:

          E:\program files\jb_tom\tomcat\webapps\ROOT\WEB-INF\classes目錄下

          將目錄E:\jb_tom\jboss\examples\interest\com以及此下的所有文件都復制到E:\program

          files\jb_tom\tomcat\webapps\ROOT\WEB-INF\classes下。

          重新啟動JBOSS_TOMCAT。

          2.3、????????? command下client測試運行:
          command下,進入目錄E:\ program files\jb_tom\jboss\examples\interest

          java InterestClient

          將出現:

          Got context

          Got reference

          Interest on 1000 units, at 10% per period, compounded over 2 periods is: 210.00000000000023

          Jboss窗口將出現:

          [Interest] Someone called `calculateCompoundInterest!'

          2.4、????????? web下client通過Servlet測試運行:
          http://localhost:8080/servlet/EJB

          將出現:

          Interest on 1000 units, at 10% per period, compounded over 2 periods is: 210.00000000000023

          Jboss窗口將出現:

          [Interest] Someone called `calculateCompoundInterest!'

          到此已經成功了。

          注意:這里將JBoss-2.2.1_Tomcat-3.2.1.zip解壓后復制到E:\program files\jb_tom目錄下。

          ------------------------------------------------------------------------------------------
          五、Struts

          Java:Struts入門初步知識
          ?
          1.如何安裝Struts:
            首先到
          http://jakarta.apache.org/Struts 下載Struts,建議使用release版,現在最高版本為1.2.6

          ,有多種OS版本(windows,linus...),下載后解壓開來,可以看到這個目錄:lib和webapps,webapps下有

          一些WAR文件。假設你的Tomcat裝在c:\Tomcat下,則將那些WAR文件拷貝到C:\Tomcat\webapps,重新啟動

          Tomcat即可。打開瀏覽器,在地址欄中輸入: http://localhost:8080/Struts-example/index.jsp ,若能

          見到“powered by Struts”的深藍色圖標,即說明成功了。這是Struts自帶的一個例子,附有詳細的說

          明文檔,可以做為初學者的入門教程。另外,Struts還提供了一系統實用對象:XML處理、通過Java

          reflection APIs自動處理JavaBeans屬性、國際化的提示和消息等

          2.練習做一個實例:
            一個用戶注冊系統,用戶通過網頁輸入相關信息:注冊ID號,密碼,EMAIL,若注冊成功,則返回成

          功提示信息,反之出現注冊失敗提示信息。?

            項目建立:
            正式開發前,需要在Tocmat(我的tomcat裝在c:\tomcat)中建立此項目。比較快的一種建立方式為

          :在C:\tomcat\webapps下新建目錄test,再將C:\tomcat\webapps\struts-example下的WEB-INF目錄拷貝

          到test目錄下,然后將test\WEB-INF下的src和classes目錄清空,以及struts-config.xml文件中內容清

          空即可。這樣,我們需要的Struts類包及相關的配置文件就都齊了。
            開發時,將JSP文件放在test目錄下,Java原文件放在test\WEB-INF\src下,編譯后的類文件放在

          test\WEB-INF\classes下。

            注冊頁面:reguser.jsp

          <%@ page contentType="text/html;charset=UTF-8" language="java"
          %>

          <%@ taglib uri="/WEB-INF/Struts-bean.tld" prefix="bean"
          %>

          <%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="html"
          %>

          <html:html locale="true">

          <head>

          <title>RegUser</title>

          <html:base/>

          </head>

          <body bgcolor="white">

          <html:errors/>

          <html:form action="/regUserAction" focus="logname">


          <table border="0" width="100%">

          <tr>

          <th align="right">

          Logname:

          </th>

          <td align="left">

          <html:text property="logname" size="20" maxlength="20"/>


          </td>

          </tr>

          <tr>

          <th align="right">

          Password:

          </th>

          <td align="left">

          <html:password property="password" size="20" maxlength="20"/>


          </td>

          </tr>

          <tr>

          <th align="right">

          E-mail:

          </th>

          <td align="left">

          <html:password property="email" size="30" maxlength="50"/>


          </td>

          </tr>

          <tr>

          <td align="right">

          <html:submit property="submit" value="Submit"/>

          </td>

          <td align="left">

          <html:reset/>

          </td>

          </tr>

          </table>

          </html:form>

          </body>

          </html:html>


            此JSP頁面不同于普通的JSP頁,因為它大量運用了taglib,這些taglib對初學者而言,可能難于掌握

          ,可這卻是Struts的精華之一。靈活運用,將大大提高開發效率。

          Struts-config.xml:


          <Struts-config>

          <form-beans>

          <form-bean name="regUserForm"

          type="org.cjea.Struts.example. RegUserForm "/>

          </form-beans>

          <action-mappings>

          <action path="/regUserAction"

          type=" org.cjea.Struts.example.RegUserAction "

          attribute=" regUserForm "

          scope="request"

          validate="false">

          <forward name="failure" path="/ messageFailure.jsp"/>


          <forward name="success" path="/ messageSuccess.jsp"/>

          ?


            Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,

          Struts-config.xml集中了所有頁面的導航定義。對于大型的WEB項目,通過此配置文件即可迅速把握其脈

          絡,這不管是對于前期的開發,還是后期的維護或升級都是大有裨益的。掌握Struts-config.xml是掌握

          Struts的關鍵所在。

          FormBean:RegUserForm


          package org.cjea.Struts.example;
          import javax.Servlet.http.HttpServletRequest;
          import org.apache.Struts.action.ActionForm;
          import org.apache.Struts.action.ActionMapping;

          public final class RegUserForm extends ActionForm{

          private String logname;
          private String password;
          private String email;

          public RegUserForm(){
          logname = null;
          password = null;
          email = null;
          }

          public String getLogName() {
          return this.logname;
          }
          public void setLogName(String logname) {
          this.logname = logname;
          }
          public void setPassWord(String password) {
          this.password = password;
          }
          public String getPassWord() {
          return this.password;
          }
          public void setEmail(String email) {
          this.email = email;
          }
          public String getEmail() {
          return this.email;
          }

          public void reset(ActionMapping mapping, HttpServletRequest request)
          {
          logname = null;
          password = null;
          email = null;
          }
          }


            每一個FormBean 都必須繼承ActionForm類,FormBean是對頁面請求的封裝。即把HTTP request 封裝

          在一個對象中,需要說明的一點就是多個HTTP request可以共用一個FormBean,便于維護和重用。

          ActionBean:RegUserAction


          package org.cjea.Struts.example;

          import javax.Servlet.http.*;
          import org.apache.Struts.action.*;

          public final class RegUserAction extends Action
          {

          public ActionForward perform(ActionMapping mapping,
          ActionForm form, HttpServletRequest req,
          HttpServletResponse res)
          {
          String title = req.getParameter("title");
          String password = req.getParameter("password");
          String email = req.getParameter("email");
          /*
          取得用戶請求,做相應數據庫操作,略
          */
          }
          }


            FormBean的產生是為了提供數據給ActionBean,在ActionBean中可以取得FormBean中封裝的數據,經

          相應的邏輯處理后,調用業務方法完成相應業務要求。

            Servlet的演變:在常規的 JSP,Servlet,JavaBean三層結構中,JSP實現View的功能,Servlet實現

          Controller的功能,JavaBean實現Model的實現。

            在Struts中,將常規情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個部分。

          ActionServlet配合Struts-config.xml,專職完成頁面導航,而不再負責具體的數據獲取與相應邏輯,這

          兩部分功能由FormBean和ActionBean來完成。

          3.Struts優缺點
            優點:
            Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優點。使開發者能更

          深入的了解其內部實現機制。
            除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,

          靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,

          很少開發自己的標記,或許Struts是一個很好的起點。
            關于頁面導航,我認為那將是今后的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過

          一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有著莫大的好處。尤其是當另一

          批開發者接手這個項目時,這種優勢體現得更加明顯。

            缺點:
            Taglib是Struts的一大優勢,但對于初學者而言,卻需要一個持續學習的過程,甚至還會打亂你網頁

          編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。
            Struts將MVC的Controller一分為三,在獲得結構更加清晰的同時,也增加了系統的復雜度。
            Struts從產生到現在還不到半年,但已逐步越來越多運用于商業軟件。雖然它現在還有不少缺點,但

          它是一種非常優秀的J2EE MVC實現方式,如果你的系統準備采用J2EE MVC架構,那么,不妨考慮一下

          Struts。

          4.Struts實施經驗:
            1)、基于Struts架構的項目開發,首先需要有一個很好的整體規劃,整個系統中包括哪幾個模塊,每

          個模塊各需要多少FormBean和ActionBean等,而且最好有專人負責Struts-config.xml的管理。開發基于

          Struts的項目的難點在于配置管理,尤其是對Struts-config.xml的管理。

            2)、如果你的項目非常緊,并且項目組中又沒有富有經驗的Struts開發人員,建議不要冒然采用

          Struts。Struts的掌握需要一個過程,對于一個熟練的JSP程序員,自學大概需要半個月左右的時間。如

          果結合titls,則需要更長的時間。

            3)、如果你在網頁中大量運用taglib,那么你的美工將做出部分犧牲。當你結合Tiles,功能增強的

          同時,這種犧牲尤為明顯。當然,你對功能和美觀的取舍由你自己決定。

            4)、Taglib是一個好東西,但靈活運用它卻需要一個過程,如果你不想在Taglib上花太多的時間,那

          么只需理解與FORM有關的幾個標記,其它的標記就放著吧,以后再看,先去研究ActionServlet和Struts

          -config.xml,你會覺得很有成就感。

            5)、Struts是否只適合于大型項目呢?No!Struts適合于各種大小的項目,當然,對于大型項目,它

          所體現出來的優勢更加明顯。

          posted @ 2006-03-20 16:04 氓氓 閱讀(1822) | 評論 (0)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 敖汉旗| 班戈县| 石嘴山市| 辽源市| 千阳县| 武陟县| 黔东| 关岭| 泊头市| 卓尼县| 宣威市| 高州市| 宝山区| 五寨县| 运城市| 柘城县| 武义县| 五家渠市| 安康市| 延津县| 潼关县| 濮阳县| 临泽县| 阜南县| 安岳县| 渑池县| 昭觉县| 裕民县| 栾城县| 东明县| 定结县| 永济市| 开原市| 昆山市| 满洲里市| 乐平市| 庆安县| 手游| 昂仁县| 公安县| 富锦市|