实验室网站所遇技术(一) struts1 数据源配置
我打算把我最近做第一个网站所学的技术,有意思的都贴上来!
Struts1.2中配置数据源
写作说明:
虽然网上关于这方面的比较多,但是对于struts的初学者而言也是十分难懂,也有的有些错误。自己连接成功了,所以写下来分享一下。貌似struts的不同版本区别很大,注意自己的版本。
Struts版本:1.2.9
Tomcat 版本:6.0
1.首先还是在struts-config.xml中配置数据源:
<data-sources > <data-source key ="dataSource" type="org.apache.commons.dbcp.BasicDataSource"> <set-property value="com.microsoft.sqlserver.jdbc.SQLServerDriver" property="driverClassName"/> <set-property value="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test" property="url"/> <set-property value="lihuabest" property="username"/> <set-property value="123" property="password"/> </data-source> </data-sources>
这里有个地方和很多网上说的不一样,value="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test"
网上有很多是这样写的:
value="jdbc:Microsoft:sqlserver://localhost:1433;databasename=test"
我的测试是通过不了,这是第一个注意的地方。
2.在action中使用数据源
在action的execute方法中写入一下代码:
ServletContext context=servlet.getServletContext(); DataSource ds= (DataSource)context.getAttribute("MySource"); Connection conn = ds.getConnection();
这里ds.getConnection();的返回值就是一个Connection
3.在非action 中使用数据源连接数据库
前一种方法因为使用到了ServletContext,所以必须在action中使用。但是有的时候我们希望在其非action中使用,怎么办呢?网上搜罗了半天,终于找到一个解决办法,参看网址:
http://blog.sina.com.cn/s/blog_5f17b8e40100cltn.html
这是原文,
这是我的代码
package com.lihua.utils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.sql.DataSource; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; public class DBHelp1 implements PlugIn{ private static DataSource dataSource = null; private Connection conn = null; private PreparedStatement ps = null; private ResultSet rs = null; public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { dataSource = (DataSource) servlet.getServletContext().getAttribute("dataSource"); } public Connection DBConn() throws SQLException { if (dataSource != null) { conn = dataSource.getConnection(); } return conn; }
public void close() { try { if (rs != null) { rs.close(); rs = null; } if (ps != null) { ps.close(); ps = null; } if (conn != null) { conn.close(); conn = null; } } catch (Exception e) { e.printStackTrace(); } } public void destroy() { System.out.println("系统销毁"); } }
这个办法是继承了implements PlugIn,这个接口,实现的关键是:
dataSource = (DataSource) servlet.getServletContext().getAttribute("dataSource");
这里就得到了dataSource, 之后的就不解释了。
到这里还没有完,如果只是这样我的测试是没效果的,还必须在中加入这样一句配置:<plug-in className="com.lihua.utils.DBHelp1"></plug-in>
也就是这个类的完整包名,至此,完结。
这个在struts1的配置文件里配置数据源用的貌似不多,配置好了也是多了解一点!