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 氓氓 阅读(238) | 评论 (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 氓氓 阅读(703) | 评论 (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 氓氓 阅读(452) | 评论 (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。
 
  3. Java学习源代码检索系统  http://www.chinaitlab.com/www/school/codesearch/index.html
   难得看见国产的,好歹也要支持一下,分类也算清楚。
 
  4. Koders  http://www.koders.com/
   是个综合查询的网站,不过它好像是从代码中查找关键词,包含的语言挺多的。
  5. Resources for Java server-side developers  http://www.java201.com/
   确切的说,它是一个资源收集的网站,代码查询并不多。不过它分类相当细,如Articles、Books、Examples、Extensions、Frameworks等类,你可以输入Spring或Hibernate作为关键词搜索一下看看。
posted @ 2006-03-20 16:07 氓氓 阅读(181) | 评论 (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 氓氓 阅读(940) | 评论 (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 氓氓 阅读(1813) | 评论 (0)编辑 收藏

仅列出标题
共2页: 上一页 1 2