用struts开发的时候,数据库连接大家看我这样写好不好?
倪明123 2007-08-06 09:32:43 1:我看精通struts 邮电出版社的那本书的时候,讲的是使用struts-config.xml中的datasource配置数据源。
然后在每个action都写一个获得数据源 DataSource dataSource=(DataSource)this.getDataSource(request,"datasource");然后在写数据库的读取或者增加或者删除操作。最后相应的每个数据库资源的释放。代码贴出:
stuts-config.xml:
<struts-config>
<data-sources>
<data-source key="datasource" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<set-property property="url"
value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shopping"/>
<set-property property="maxActive"
value="5" />
<set-property property="username"
value="sa" />
<set-property property="password"
value="" />
<set-property property="autoCommit"
value="true" />
</data-source>
</data-sources>
.....
</struts-config>
相关的action类:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.wnkj.struts.action.corporation;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.wnkj.struts.form.NewloginForm;
/**
* MyEclipse Struts
* Creation date: 07-07-2007
*
* XDoclet definition:
* @struts.action path="/newlogin" name="newloginForm" input="/form/newlogin.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/struts/ok1.jsp"
*/
public class NewloginAction extends Action {
String howemail="@ny114.cn";
Connection con=null;
Statement stat=null;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewloginForm newloginForm = (NewloginForm) form;// TODO Auto-generated method stub
String username=newloginForm.getUsername();
String psd=newloginForm.getPassword1();
String email=newloginForm.getEmail();
String standemail=username+howemail;
try{
DataSource dataSource=(DataSource)this.getDataSource(request,"datasource");
con=dataSource.getConnection();
stat=con.createStatement();
String sql="insert into t_user(f_nickName,f_password,f_email,f_regtime,f_standemail) values ('"+username+"','"+psd+"','"+email+"',getdate(),'"+standemail+"')";
int i=stat.executeUpdate(sql);
if(i>0){
request.setAttribute("insert", sql);
HttpSession session=request.getSession();
session.setAttribute("username", username);
}
else{
request.setAttribute("error", sql);
}
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
if(con!=null){
try{
con.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
close();
}
return mapping.findForward("success");
}
public void close(){
try{
if(stat!=null){
try{
stat.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
以上是第一种方法,下面是第二种方法。
见下帖: