http://community.csdn.net/Expert/topic/3517/3517995.xml?temp=.2898371 这是我的第一个Struts应用,仅仅用于用户注册;注册的用户存入数据库中。 参考《JSP应用开发详解》电子工业出版社 PART I/III 
/** SQL Server 2000 Tomcat 4.1 Struts jakarta-struts-1.1 Editplus */ 
//----数据库脚本---- create database dba create table Tuser(uname varchar(64),upassword varchar(64),uage int) 
//----Tomcat 配置---- <Context path="/struts" docBase="E:\struts" debug="0"   reloadable="true" crossContext="true"> </Context> 
//----CLASSPATH 设置---- //由于我用的是基本文本编辑器,所以struts的jar 文件需要手工配置到CLASSPATH中 .;E:\struts\WEB-INF\classes;E:\struts\WEB-INF\lib;D:\WebSet\jdk\lib\dt.jar;D:\WebSet\jdk\lib\tools.jar;D:\WebSet\jdk\lib\msbase.jar;D:\WebSet\jdk\lib\mssqlserver.jar;D:\WebSet\jdk\lib\msutil.jar;D:\WebSet\jdk\lib\iTextAsian.jar;D:\WebSet\jdk\lib\jxl.jar;E:\struts\WEB-INF\lib\struts.jar;E:\struts\WEB-INF\lib\commons-beanutils.jar;E:\struts\WEB-INF\lib\commons-collections.jar;E:\struts\WEB-INF\lib\commons-digester.jar;E:\struts\WEB-INF\lib\commons-fileupload.jar;E:\struts\WEB-INF\lib\commons-lang.jar;E:\struts\WEB-INF\lib\commons-logging.jar;E:\struts\WEB-INF\lib\commons-validator.jar 
//----Struts 配置----- E:\struts\WEB-INF\lib 的目录 2003-06-29 118,726 commons-beanutils.jar 2003-06-29 165,119 commons-collections.jar 2003-06-29 109,096 commons-digester.jar 2003-06-29 22,379 commons-fileupload.jar 2003-06-29 63,980 commons-lang.jar 2003-06-29 31,605 commons-logging.jar 2003-06-29 46,865 commons-validator.jar 2003-06-29 498,051 struts.jar 【2002-05-03 302,282 msbase.jar】 【2002-05-03 69,477 mssqlserver.jar】 【2002-05-03 67,235 msutil.jar】 
E:\struts\WEB-INF\tld 的目录 2003-06-29 8,868 struts-bean.tld 2003-06-29 66,192 struts-html.tld 2003-06-29 14,511 struts-logic.tld 2003-06-29 64,659 struts-nested.tld 2003-06-29 1,631 struts-template.tld 2003-06-29 7,850 struts-tiles.tld 
//---- 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/j2ee/dtds/web-app_2_3.dtd"> <web-app>   <display-name>Struts Blank Application</display-name>   <!--Standard Action Servlet Configuration(with debugging)-->   <servlet>    <servlet-name>action</servlet-name>  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>   <init-param>    <param-name>application</param-name>    <param-value>ApplicationResources</param-value>   </init-param>   <init-param>    <param-name>config</param-name>    <param-value>/WEB-INF/struts-config.xml</param-value>   </init-param>   <init-param>    <param-name>debug</param-name>    <param-value>2</param-value>   </init-param>   <init-param>    <param-name>detail</param-name>    <param-value>2</param-value>   </init-param>   <load-on-startup>2</load-on-startup>   </servlet>      <!--Standard Action Servlet Mapping -->   <servlet-mapping>  <servlet-name>action</servlet-name>  <url-pattern>*.do</url-pattern>   </servlet-mapping> 
  <!--The Usual Weblcome File List-->   <welcome-file-list>  <welcome-file>index.html</welcome-file>   </welcome-file-list>     <!--Struts Tag Library Descriptions-->   <taglib>    <taglib-uri>/struts-bean</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>   </taglib>   <taglib>    <taglib-uri>/struts-html</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>   </taglib>   <taglib>    <taglib-uri>/struts-logic</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>   </taglib>   <taglib>    <taglib-uri>/struts-nested</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>   </taglib>   <taglib>    <taglib-uri>/struts-tiles</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>   </taglib>   <taglib>    <taglib-uri>/struts-template</taglib-uri>  <taglib-location>/WEB-INF/tld/struts-template.tld</taglib-location>   </taglib> </web-app> 
//----  WEB-INF\struts-config.xml  ---- <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE struts-config PUBLIC      "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"     "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config>  <form-beans>   <form-bean name = "userForm" type="com.stru.UserForm" />  </form-beans>  <global-forwards>   <forward name = "userCreated" path="/viewUser.jsp" />  </global-forwards>  <action-mappings>   <action path = "/createUser"     type = "com.stru.UserAction"     name = "userForm"     scope= "request"     validate="true"     input ="/createUser.jsp">   </action>  </action-mappings>  <message-resources parameter = "ApplicationResources" /> </struts-config> 
//---- WEB-INF\ApplicationResources.properties ---- index.title = Struts Tutorial  
PART II/III //---- 类的编写 ---- E:\struts\WEB-INF\classes\com\stru 的目录 Dbcon.class //封装基本的数据库操作 User.class //基本的 getter,setter 方法 UserBean.class //实现具体的业务逻辑(通常是数据库的操作),被Action 类调用 UserAction.class //Action UserForm.class  //Form 
//---- Dbcon.java ---- package com.stru; /** 基本的数据库操作类 */ import java.sql.*; import java.net.*; import java.util.StringTokenizer; public class Dbcon{   String driverStr="com.microsoft.jdbc.sqlserver.SQLServerDriver";   String dbIp="127.0.0.1";   String dbName="dba";   String dbUser="sa";   String dbPwd="jnxr@))$";   String errTag="";   String dbUrl="";  
  public void setDbIp(String value){  dbIp=value;   }   public String getDbIp(){  return dbIp;   }   public void setDbName(String value){  dbName=value;   }   public String getDbName(){  return dbName;   }   public void setDbUser(String value){  dbUser=value;   }   public String getDbUser(){  return dbUser;   } 
  public void setDbPwd(String value){  dbPwd=value;   }   public String getDbPwd(){  return dbPwd;   } 
  public void setErrbz(String value){  errTag=value;   }   public String getErrbz(){  return errTag;   }     public boolean dbtry(){  try{   dbUrl="jdbc:microsoft:sqlserver://"+dbIp+":1433;DatabaseName="+dbName;   Class.forName(driverStr);  //加载驱动   Connection conn= DriverManager.getConnection(dbUrl,dbUser,dbPwd); //加载数据库连接   return true;     }catch(Exception e){   return false;  }   } 
  public String dbTest(){  try{   dbUrl="jdbc:microsoft:sqlserver://"+dbIp+":1433;DatabaseName="+dbName;   Class.forName(driverStr);  //加载驱动   Connection conn= DriverManager.getConnection(dbUrl,dbUser,dbPwd); //加载数据库连接   return "Database Connection OK!";     }catch(Exception e){   return "Error:\n"+e.toString();  }   } 
  public void dbexe(String sqlstr){  Connection conn=null;  Statement   stmt=null;  try{   dbUrl="jdbc:microsoft:sqlserver://"+dbIp+":1433;DatabaseName="+dbName;   Class.forName(driverStr);   conn= DriverManager.getConnection(dbUrl,dbUser,dbPwd);   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   stmt.execute(sqlstr);   errTag="ok";  }catch(Exception e){   System.out.println(e.toString());   System.out.println(sqlstr);   errTag="error";  }finally{   try{    if(stmt!=null) stmt.close();    if(conn!=null) conn.close();   }catch(SQLException ee){    System.out.println(ee.toString());   }  }   } 
  public ResultSet dbqry(String sqlstr){ //数据源未关闭  Connection conn=null;  Statement  stmt=null;  ResultSet rs=null;  try{   dbUrl="jdbc:microsoft:sqlserver://"+dbIp+":1433;DatabaseName="+dbName;   Class.forName(driverStr);   conn= DriverManager.getConnection(dbUrl,dbUser,dbPwd);   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   rs=stmt.executeQuery(sqlstr);   errTag="ok";  }catch(Exception e){   System.out.println(e.toString());   System.out.println(sqlstr);   errTag="error";  }  return rs;   } 
  public int qnum(String sqlstr){  Connection conn=null;  Statement  stmt=null;     ResultSet rs=null;  int num=-1;  try{   dbUrl="jdbc:microsoft:sqlserver://"+dbIp+":1433;DatabaseName="+dbName;   Class.forName(driverStr);   conn= DriverManager.getConnection(dbUrl,dbUser,dbPwd);   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   rs=stmt.executeQuery(sqlstr);   if(rs.next()){    num=rs.getInt(1);    errTag="ok";   }  }catch(Exception e){   System.out.println(e.toString());   System.out.println(sqlstr);   errTag="error";  }finally{   try{    if(rs!=null) rs.close();    if(stmt!=null) stmt.close();    if(conn!=null) conn.close();   }catch(SQLException ee){    System.out.println(ee.toString());   }  }  return num;   } } 
//---- User.java ---- 
package com.stru; /**  最基本的getter,setter 方法 */ public class User {  public void setName(String aName){   this.name = aName;  }  public String getName(){   return this.name;  }  public void setPassword(String aPassword){   this.password = aPassword;  }  public String getPassword(){   return this.password ;  }  public void setAge(int aAge){   this.age = aAge;  }  public int getAge(){   return this.age ;  } 
 public static void main(String[] args) {    System.out.println("Current User");  } 
 private String name;  private String password;  private int age; } 
PART III/III 
//---- UserBean.java ----- 
package com.stru; import java.sql.*; import javax.sql.*; import java.io.*; /**  实现具体的业务逻辑(通常是数据库的操作),被Action 类调用;  但和HttpRequest 无关 */ public class UserBean {  private Dbcon dbcon ; 
 public UserBean () throws Exception{   dbcon = new Dbcon();    }  public void addUser(User user) throws SQLException{   String sql = "insert into Tuser(uname,upassword,uage) values('"+user.getName()+"','"+user.getPassword()+"',"+user.getAge()+")";   dbcon.dbexe(sql);  } } 
//----  UserAction.java  ---- package com.stru; import javax.servlet.http.*; import org.apache.struts.action.* ; /** ACTION */ public class UserAction extends Action {  public ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){   UserForm f =(UserForm)form;   try{    UserBean userBean = new UserBean();    userBean.addUser(f.getUser());   }   catch (Exception e){    e.printStackTrace();   }   request.setAttribute("User",f.getUser());//   return (mapping.findForward("userCreated"));  } } 
//---- UserForm.java ---- package com.stru; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.* ; 
/** FORM */ public class UserForm extends ActionForm {  public void setUserName(String aUserName){   user.setName(aUserName);   }  public String getUserName(){   return user.getName();  }  public void setUser(User user){   this.user = user ;  }  public User getUser(){   return this.user ;  }  /**   reset the form  */  public void reset(ActionMapping mapping,HttpServletRequest request){   this.user = new User() ;  }  /**  check the form  */  public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){   ActionErrors errors = new ActionErrors() ;   if (user.getName() == null || user.getName().trim().equals("") || user.getPassword().trim().equals("")){    errors.add("userInputError",new ActionError("errorInput:name/password"));   }   return errors ;  }  private User user = new User(); } 
//---- JSP 页面的编写 ---- 2004-11-15 createUser.jsp //输入区域 2004-11-15 viewUser.jsp //执行返回 
//---- createUser.jsp ----- <%@ page contentType="text/html; charset=GB2312"%> <%@ taglib uri="/struts-logic" prefix="logic" %> <%@ taglib uri="/struts-bean" prefix="bean" %> <%@ taglib uri="/struts-html" prefix="html" %> <html:html locale ="true"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta http-equiv="Pragma" content="no-cache">  <meta http-equiv="Cache-Control" content="no-cache">  <meta http-equiv="Expires" content="0"> <html:base/> <title><bean:message key = "index.title" /></title> </head> <body> <h2>创建一个新用户</h2> <html:errors/> <html:form action = "createUser.do" method="GET">  name:<html:text property = "user.name" /></br>  password:<html:password property = "user.password" /></br>  age :<html:text property = "user.age" /></br>  <html:submit property ="submit" /> </html:form> </body> </html:html> 
//----- viewUser.jsp ---- <%@ page contentType="text/html; charset=GB2312" import="com.stru.User"%> <%@ taglib uri="/struts-logic" prefix="logic" %> <%@ taglib uri="/struts-bean" prefix="bean" %> <%@ taglib uri="/struts-html" prefix="html" %> 
<html:html locale ="true"> <head> <html:base/> <title><bean:message key = "index.title" /></title> </head> 
<body> <%User user = (User)request.getAttribute("User"); %> 已经创建了用户7<br> Name:<%=user.getName()%><br> Password:<%=user.getPassword()%><br> Age:<%=user.getAge()%><br> </body> </html:html> 
//---- 最后测试 ----  http://localhost:8080/struts/createUser.jsp 
  
   
 
  |