Struts2连接MySQL数据库

来源:互联网 发布:ins韩国软件下载 编辑:程序博客网 时间:2024/05/17 07:36

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

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


Xml代码
<?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>   

<?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代码
<%@ 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>  

<%@ 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代码
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;   
    }   
  
}  

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代码
<?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>  

<?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代码
<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>  

<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"按钮,你将得到该输出页面 :