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

|