请教大虾:如何在struts2中实现datasource的方式访问mysql数据库
在struts1。0中按照如下的方式可以实现利用datasource访问数据库,但是在struts2。0中似乎不支持getDatasource方法,请各位大虾明示如何在struts2中实现datasource访问mysql数据库:(另外在struts2中我的loginaction继承的是actionsupport类,而不是在struts1中那样继承的是action类)
LoginBean.java源代码:
package dummies.struts;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
public class LoginBean
{
private DataSource dataSource = null;
public LoginBean(DataSource dataSource)
{
this.dataSource = dataSource;
{
public boolean validateUser(String username, String password)
{
boolean valid = false;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
con = dataSource.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(
“SELECT * FROM Users “ +
“WHERE username = ‘“ + username + “‘ “ +
“AND password = ‘“ + password + “‘“);
if (rs.next())
valid = true;
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
try { if (rs != null) rs.close(); } catch (SQLException e) {};
try { if (stmt != null) stmt.close(); } catch (SQLException e) {};
try { if (con != null) con.close(); } catch (SQLException e) {};
}
return valid;
}
}
LoginAction.java源代码:
package dummies.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LoginAction extends Action
{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// create a new LoginBean with valid users in it
LoginBean lb = new LoginBean(getDataSource(request,
“musiccollection”));
// check to see if this user/password combination are valid
if(lb.validateUser(((LoginForm)form).getUserName(),
((LoginForm)form).getPassword()))
{
request.setAttribute(“userName”,((LoginForm)form).getUserName());
return (mapping.findForward(“success”));
}
else // username/password not validated
{
// create ActionError and save in the request
ActionErrors errors = new ActionErrors();
ActionError error = new ActionError(“error.login.invalid”);
errors.add(“login”,error);
saveErrors(request,errors);
return (mapping.findForward(“failure”));
}
}
}
struts-config.xml Data Source Definition
<struts-config>
<!-- ========== Data Source Definitions ================================ --
>
<data-sources>
<data-source key=”musiccollection”
type=”org.apache.commons.dbcp.BasicDataSource”>
<set-property property=”description” value=”Music Collection
Database”/>
<set-property property=”driverClassName” value=”com.mysql.jdbc.Driver”/>
<set-property property=”username”
value=”theDatabaseUserName”/>
<set-property property=”password”
value=”theDatabaseUserPassword”/>
<set-property property=”url”
value=”jdbc:mysql://localhost/musiccollection”/>
<set-property property=”maxCount” value=”8”/>
<set-property property=”minCount” value=”2”/>
</data-source>
</data-sources>
...
</struts-config>
我就希望在struts2中使用如struts1中datasource访问数据库的方式,不想将每次访问数据库的代码都放到不同的文件,跪求大师!!!