Struts2连接MySQL数据库(Struts2 MySQL)

在本章你将学习如何使用struts2连接MySQL数据库.

按照如下步骤连接MySQL数据库 :

第一步 : 创建struts.xml并向其中添加如下xml代码 :

Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts    
  4.         Configuration 2.0//EN"   
  5.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  6.   
  7. <struts>  
  8.   
  9.     <!-- Rose India Struts 2 Tutorials -->  
  10.     <constant name="struts.enable.DynamicMethodInvocation"    
  11.      value="false" />    
  12.     <constant name="struts.devMode" value="true" />  
  13. <include file="struts-default.xml"/>       
  14.   
  15.     <!-- Add packages here -->  
  16.   
  17.   
  18.   <package name="roseindia" namespace="/roseindia"    
  19.    extends="struts-default">  
  20.   
  21. <!-- inserting data into data base through JDBC -->  
  22.   
  23.     <action name="insert">  
  24.       <result>/pages/insertData.jsp</result>  
  25.     </action>  
  26.   
  27.     <action name="insertData" class="net.roseindia.insert">  
  28.       <result  name="error">/pages/insertData.jsp</result>  
  29.       <result>/pages/insertSuccess.jsp</result>  
  30.     </action>  
  31.      
  32.     </package>  
  33.   
  34.   
  35. </struts>   
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts 
        Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <!-- Rose India Struts 2 Tutorials -->
    <constant name="struts.enable.DynamicMethodInvocation" 
     value="false" /> 
    <constant name="struts.devMode" value="true" />
<include file="struts-default.xml"/>    

    <!-- Add packages here -->


  <package name="roseindia" namespace="/roseindia" 
   extends="struts-default">

<!-- inserting data into data base through JDBC -->

    <action name="insert">
      <result>/pages/insertData.jsp</result>
    </action>

    <action name="insertData" class="net.roseindia.insert">
      <result  name="error">/pages/insertData.jsp</result>
      <result>/pages/insertSuccess.jsp</result>
    </action>
  
    </package>


</struts> 

 

第二步 : 创建一个JSP输入表单 :

insertData.jsp

Html代码 复制代码
  1. <%@ taglib prefix="s" uri="/struts-tags" %>  
  2. <html>  
  3. <head>  
  4. <title>Struts 2 Insert Data Application!</title>  
  5.   
  6. <link href="<s:url value="/css/main.css"/>" rel="stylesheet"  
  7. type="text/css"/>  
  8.   
  9. </head>  
  10. <body>  
  11.   
  12.   
  13. <s:form action="insertData" method="POST" validate="true">  
  14.   
  15. <tr>  
  16. <td colspan="2">  
  17. Please enter   
  18. </td>  
  19.   
  20. </tr>  
  21.   
  22. <s:actionerror />  
  23. <s:fielderror />  
  24.   
  25. <s:textfield name="username" label="User Name"/>  
  26. <s:password name="password" label="Password"/>  
  27. <s:submit value="Save" align="center"/>  
  28.   
  29. </s:form>  
  30.   
  31. </body>  
  32.   
  33. </html>  
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts 2 Insert Data Application!</title>

<link href="<s:url value="/css/main.css"/>" rel="stylesheet"
type="text/css"/>

</head>
<body>


<s:form action="insertData" method="POST" validate="true">

<tr>
<td colspan="2">
Please enter
</td>

</tr>

<s:actionerror />
<s:fielderror />

<s:textfield name="username" label="User Name"/>
<s:password name="password" label="Password"/>
<s:submit value="Save" align="center"/>

</s:form>

</body>

</html>

第三步 : 创建一个Action类.

首先通过MySQL驱动的帮助("org.gjt.mm.mysql.Driver")建立一个MySQL数据库连接.现在,在MySQL数据库中创建一个账户以连接数据库.创建连接后,你可以向MySQL数据库的表中检索,添加,更新数据.

下面的Action类通过方法适当的类型的帮助和API接口建立了与MySQL数据库的连接.如果建立了连接输入的数据会添加到MySQL数据库表中否则显示错误信息.

insert.java

Java代码 复制代码
  1. package net.roseindia;   
  2. import com.opensymphony.xwork2.ActionSupport;   
  3. import java.util.Date;   
  4. import java.sql.*;   
  5.   
  6.   
  7. /**  
  8.  * <p> Validate a user login. </p>  
  9.  */  
  10. public  class insert  extends ActionSupport {   
  11.      
  12.   public String execute() throws Exception {   
  13.     String url = "jdbc:mysql://localhost:3306/";   
  14.     String dbName = "taskproject";   
  15.     String driverName = "org.gjt.mm.mysql.Driver";   
  16.     String userName = "root";   
  17.     String password = "root";   
  18.     Connection con=null;   
  19.     Statement stmt=null;   
  20.     try{   
  21.       Class.forName(driverName).newInstance();   
  22.       con=DriverManager.getConnection(url+dbName, userName,    
  23.           password);   
  24.       stmt=con.createStatement();   
  25.     }   
  26.     catch(Exception e){   
  27.       System.out.println(e.getMessage());   
  28.     }   
  29.     String uname=getUsername();   
  30.     String pws=getPassword();   
  31.     stmt = con.createStatement();   
  32.         int val = stmt.executeUpdate("INSERT employee VALUES   
  33.                   ('"+uname+"','"+pws+"')");    
  34.     if(val == 0){   
  35.       return ERROR;   
  36.     }   
  37.     else{   
  38.       return SUCCESS;   
  39.     }   
  40.   }   
  41.   // ---- Username property ----   
  42.   
  43.     /**  
  44.      * <p>Field to store User username.</p>  
  45.      * <p/>  
  46.      */  
  47.     private String username = null;   
  48.   
  49.   
  50.     /**  
  51.      * <p>Provide User username.</p>  
  52.      *  
  53.      * @return Returns the User username.  
  54.      */  
  55.     public String getUsername() {   
  56.         return username;   
  57.     }   
  58.   
  59.     /**  
  60.      * <p>Store new User username</p>  
  61.      *  
  62.      * @param value The username to set.  
  63.      */  
  64.     public void setUsername(String value) {   
  65.         username = value;   
  66.     }   
  67.   
  68.     // ---- Username property ----   
  69.   
  70.     /**  
  71.      * <p>Field to store User password.</p>  
  72.      * <p/>  
  73.      */  
  74.     private String password = null;   
  75.   
  76.   
  77.     /**  
  78.      * <p>Provide User password.</p>  
  79.      *  
  80.      * @return Returns the User password.  
  81.      */  
  82.     public String getPassword() {   
  83.         return password;   
  84.     }   
  85.   
  86.     /**  
  87.      * <p>Store new User password</p>  
  88.      *  
  89.      * @param value The password to set.  
  90.      */  
  91.     public void setPassword(String value) {   
  92.         password = value;   
  93.     }   
  94.   
  95. }  
package net.roseindia;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;
import java.sql.*;


/**
 * <p> Validate a user login. </p>
 */
public  class insert  extends ActionSupport {
  
  public String execute() throws Exception {
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "taskproject";
    String driverName = "org.gjt.mm.mysql.Driver";
    String userName = "root";
    String password = "root";
    Connection con=null;
    Statement stmt=null;
    try{
      Class.forName(driverName).newInstance();
      con=DriverManager.getConnection(url+dbName, userName, 
          password);
      stmt=con.createStatement();
    }
    catch(Exception e){
      System.out.println(e.getMessage());
    }
    String uname=getUsername();
    String pws=getPassword();
    stmt = con.createStatement();
        int val = stmt.executeUpdate("INSERT employee VALUES
                  ('"+uname+"','"+pws+"')"); 
    if(val == 0){
      return ERROR;
    }
    else{
      return SUCCESS;
    }
  }
  // ---- Username property ----

    /**
     * <p>Field to store User username.</p>
     * <p/>
     */
    private String username = null;


    /**
     * <p>Provide User username.</p>
     *
     * @return Returns the User username.
     */
    public String getUsername() {
        return username;
    }

    /**
     * <p>Store new User username</p>
     *
     * @param value The username to set.
     */
    public void setUsername(String value) {
        username = value;
    }

    // ---- Username property ----

    /**
     * <p>Field to store User password.</p>
     * <p/>
     */
    private String password = null;


    /**
     * <p>Provide User password.</p>
     *
     * @return Returns the User password.
     */
    public String getPassword() {
        return password;
    }

    /**
     * <p>Store new User password</p>
     *
     * @param value The password to set.
     */
    public void setPassword(String value) {
        password = value;
    }

}

 

代码的描述 :

Connection :

这是java.sql包中的一个接口,通过指定的数据库像MySQL, Ms-Access, Oracle等和java文件建立连接.SQL语句执行于Connection接口的上下文中.

Class.forName(String driver):

该方法是static的.它试图动态加载类并返回类实例.当它匹配类的指定string时,它获得String类型值(driver).

DriverManager:

它是java.sql包中的一个类,管理一系列JDBC的驱动.每个驱动都通过该类注册.

getConnection(String url, String userName, String password):

该方法通过指定的数据库url建立数据库连接.它需要三个String类型的参数如 :

    url: - 需要连接的数据库url

userName: - 数据库用户名

password: - 数据库密码

con.close():

该方法用来断开连接.它释放了数据库占用的所有资源.

第四步 : 创建验证器.

验证文件的格式应该是<ActionClassName>-validation.xml或<ActionClassName>-<ActionAliasName>-validation.xml.

insert-validation.xml

Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE validators PUBLIC    
  3.       "-//OpenSymphony Group//XWork Validator 1.0.2//EN"    
  4.       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
  5.          
  6. <validators>  
  7.   <field name="username">  
  8.     <field-validator type="requiredstring">  
  9.       <param name="trim">true</param>  
  10.       <message>User name is required</message>  
  11.     </field-validator>  
  12.   </field>  
  13.   <field name="password">  
  14.     <field-validator type="requiredstring">  
  15.       <param name="trim">true</param>  
  16.       <message>Password is required</message>  
  17.     </field-validator>  
  18.   </field>  
  19. </validators>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
      "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
      "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
      
<validators>
  <field name="username">
    <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>User name is required</message>
    </field-validator>
  </field>
  <field name="password">
    <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>Password is required</message>
    </field-validator>
  </field>
</validators>

 

当在文本域中输入正确的数据后,用户将在insertSuccess.jsp页面得到输入的数据.

insertSuccess.jsp

Html代码 复制代码
  1. <html>  
  2.   
  3. <head>  
  4.   
  5. <title>Inserted Data List</title>  
  6.   
  7. </head>  
  8.   
  9. <body>  
  10. <b> Inserted Data: </b>  
  11. <b>User name = </b><%=request.getParameter("username") %>!   
  12. <b>Password = </b><%=request.getParameter("password") %>!   
  13. </body>  
  14.   
  15. </html>  
<html>

<head>

<title>Inserted Data List</title>

</head>

<body>
<b> Inserted Data: </b>
<b>User name = </b><%=request.getParameter("username") %>!
<b>Password = </b><%=request.getParameter("password") %>!
</body>

</html>

 

输出 :

当程序执行时用户得到如下页面 :

不填写任何字段并点击"Save"按钮,你将得到如下输出页面 :

如果你只输入"Password"并不输入其它字段并点击"Save"按钮,你将得到该输出页面 :

 

如果你只输入"User Name"并不输入其它字段并点击"Save"按钮,你将得到该输出页面 :

当两个字段都填写 :

 

你将得到 :

 

posted on 2009-12-10 10:22  草原和大树  阅读(10738)  评论(0编辑  收藏  举报