本章將教如何使用Struts 2的簡(jiǎn)單的步驟來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。 Struts是一個(gè)MVC框架,而不是一個(gè)數(shù)據(jù)庫(kù)框架,但它提供了極好的支持JPA/ Hibernate集成。我們將看看在的Hibernate集成在后面的章節(jié),但在這一章中,我們將使用純JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。
在這一章中的第一個(gè)步驟是設(shè)置我們的數(shù)據(jù)庫(kù)。我作為我的數(shù)據(jù)庫(kù)在這個(gè)例子中使用MySQL。在機(jī)器上安裝MySQL,我創(chuàng)建了一個(gè)新的數(shù)據(jù)庫(kù)稱為“struts_tutorial”。創(chuàng)建了一個(gè)表稱為 login,填充了一些值。下面是使用的腳本來(lái)創(chuàng)建和填充表。
MYSQL數(shù)據(jù)庫(kù)默認(rèn)的用戶名“root”和密碼為:“root123”
CREATE TABLE `struts_tutorial`.`login` ( `user` VARCHAR( 10 ) NOT NULL , `password` VARCHAR( 10 ) NOT NULL , `name` VARCHAR( 20 ) NOT NULL , PRIMARY KEY ( `user` ) ) ENGINE = InnoDB; INSERT INTO `struts_tutorial`.`login` (`user`, `password`, `name`) VALUES ('scott', 'navy', 'Scott Burgemott');
下一步是下載 MySQL Connector jar文件,并把這個(gè)文件的WEB-INF lib文件夾下。之后,已經(jīng)做到了這一點(diǎn),我們現(xiàn)在準(zhǔn)備創(chuàng)建的動(dòng)作類(lèi)。
動(dòng)作類(lèi)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中的列的屬性。我們有字符串屬性的用戶名,密碼和名稱。在操作方法,我們使用用戶和密碼參數(shù),以檢查用戶是否存在,如果存在,我們?cè)谙乱粋€(gè)畫(huà)面中顯示的用戶名。如果用戶輸入了錯(cuò)誤的信息,我們把他們?cè)俅蔚降卿浧聊?。以下是LoginAction.java文件的內(nèi)容:
package com.yiibai.struts2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String user; private String password; private String name; public String execute() { String ret = ERROR; Connection conn = null; try { String URL = "jdbc:mysql://localhost/struts_tutorial"; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(URL, "root", "root123"); String sql = "SELECT name FROM login WHERE"; sql+=" user = ? AND password = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, user); ps.setString(2, password); ResultSet rs = ps.executeQuery(); while (rs.next()) { name = rs.getString(1); ret = SUCCESS; } } catch (Exception e) { ret = ERROR; } finally { if (conn != null) { try { conn.close(); } catch (Exception e) { } } } return ret; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password;