在struts框架中配置SqlSserver数据源

         
                               在struts框架中配置SqlSserver数据源

运行环境:ecilpes3.2+Tomcat 5.5+SqlServer2000

呵呵,今天在热身时,又练习了下struts框架,想起第一次自己拿着书边看边练时首先遇到的问题就是在struts-config.xml文件里配置数据库了,下面与大家下自己的排错过程,思路有点乱还望大家批评指正!

常见问题javax.servlet.UnavailableException: Initializing application data source dataSource

1, 排除JDBC驱动的问题

2,定位问题原因 确定所用struts版本,struts版本不同连接数据库的配置参数就有所差异。

3, 排除连接数据库配置参数

-------------------------------------------------------------------
为避免发生错误建议按以下步骤链接sql数据库

1.  准备数据源配置所需要的jar文件

在struts框架中配置SqlServer数据源,除了需要连接sqlserver数据库的那三个jar包之外,还需要commons-collections-2.1.1.jar,commons-dbcp-1.2.1.jar,commons-pool-1.2.jar和struts-legacy.jar。而struts-legacy.jar包需要自己下载(有需要的留言留下邮箱地址)。
  将struts-legacy.jar也拷贝到tomcat5.x\common\lib里去,注意:这4个jar包除了要放在tomcat中,还要在web程序的module中的lib文件加中拷贝一份,还要在web程序的WebRoot\WEB-INF\lib中拷贝一份

2、  编写struts-config.xml文件,在里面加上数据源配置的一系列标记,例如:

以下为struts1.2版本

<!--开始定义数据源 -->
  <data-sources >
  <data-source key ="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
  <set-property  value="com.microsoft.jdbc.sqlserver.SQLServerDriver" 

property="driverClassName"/>
  <set-property  value="jdbc:Microsoft:sqlserver://localhost:1433;databasename=news_Data" 

property="url"/>
  <set-property value="sa"  property="username"/>
  <set-property  value="123456" property="password"/>
  </data-source>
  </data-sources>
  <!-- 数据源配置完毕 -->


这段标记比较简单,就不一一解释了,只要记住数据源名称就行了 ,比如我这里自己起的数据源名称是“dataSource”,在struts2.0中,部分标记的属性会有所不同

3、在Action中获得数据源连接.

现拿用户登陆为引介绍下数据源的链接
/**
 * @see 登陆验证函数
 * @param username
 * @param password
 * @author 耀阳科技
 * @deprecated 修改时请注明修改起始位置及时间
 * @version 1.0
 */
public class LoginBean {

	//获得数据库连接
	public Connection getDBConnection(DataSource db){
		
		try{
			return db.getConnection();
		}catch(SQLException e){
			System.out.println("获得数据库连接失败! "+ e.toString());
			return null;
		}
	}
	
	//检查用户身份是否合法
	public Boolean checkUser (Connection conn,String tableName,String username,String 

password)
	          throws SQLException{
		
		Boolean returnresult = false;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		if(conn != null){
			//检索用户名和密码是否正确
			String strsql = "select * form "+tableName+" where username = ?";
			pstmt = conn.prepareStatement(strsql);
			pstmt.setString(1, username);
			rs = pstmt.executeQuery();
			if(rs.next()){

				if(password.equals(rs.getString(password))){

					returnresult = true;
				}else{
					returnresult = false;
				}
			}else{
				returnresult = false;
			}
		}
		try{
			if(rs!=null){
				rs.close();
			}
			if(pstmt!=null){
				pstmt.close();
			}
			if(rs!=null){
				rs.close();
			}
		}catch(SQLException sqle){
			sqle.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return returnresult;
	}
}

你可能感兴趣的:(sql,tomcat,框架,Web,struts)