c3p0联合struts2与DBUtils组件连接SQL Server 2008数据库

大家都知道C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目Hibernate,Spring等。最近在学struts2框架,所以一时来了兴趣,将c3p0与struts2配置在一起了。

网上查的资料中基本都是采用mysql数据库,由于本人的mysql没装,故采用SQLServer 2008数据库,基本配置都类似,功能实现也能完成!在操作数据库时采用apache的DBUtiils组件,对数据库进行CRUD操作。接下来说配置了:

一、导入的jar包:c3p0-0.9.1.2.jar,commons-dbutils-1.4.jar,连接sqlserver数据库的sqljdbc4.jar,另外加struts2的11个jar。

二、c3p0的配置:方法有两种,一种是采用配置文件:文件名为c3p0-config.xml(有且只有这一个),另一种方法是创建java类,然后在进行配置,网上资源很多,这里就采用配置文件的方式:

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
	<!-- 注释部分采用jtds.jar连接sqlserver数据库 -->
       <!-- <property name="driverClass">net.sourceforge.jtds.jdbc.Driver</property>  -->
       <!--  <property name="jdbcUrl">jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=Demo</property> -->
		<property name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
		<property name="jdbcUrl">jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Demo</property>
		<property name="user">sa</property>
		<property name="password">123456</property>
		
	<!-- 当连接池耗尽时候,一次获得连接数-->
	<property name="acquireIncrement" value="5" />
	<property name="minPoolSize" value="0" />
	<property name="maxPoolSize" value="15" />
	<property name="maxIdleTime" value="1800" />
	
	<property name="maxStatements" value="0" />
	<!-- 当连接池连接耗尽时,客户端getConnection(),所等待的时间-->
	<property name="idleConnectionTestPeriod" value="120" />
	<!-- 当连接失效时,获得连接的次数,0为无限次(重连)-->
	<property name="acquireRetryAttempts" value="30" />
</default-config> 
</c3p0-config> 

二、DBUtils.java负责得到数据库的连接

package it.jsw.struts.dbutils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Dbutils {
private static DataSource datasource= new ComboPooledDataSource();

public static DataSource getDateSource(){
	return datasource;
}

	public static Connection getConnection() throws SQLException{
		return datasource.getConnection();
	}

}
三、LodginAction.java;判断用户输入的用户名及密码是否正确,在查询数据库时用到DBUtils中QueryRunner类的query查询方法,关于QuerryRunner的用法这里不再详细解释。

package it.jsw.struts.action;
import java.beans.PropertyVetoException;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import it.jsw.struts.dbutils.Dbutils;
import it.jsw.struts.entity.Users;
public class LoginAction  extends ActionSupport{
	public String execute() throws SQLException, PropertyVetoException {
		String username = ServletActionContext.getRequest().getParameter("username");
		String password=ServletActionContext.getRequest().getParameter("password");
		System.out.println(username+password);
		QueryRunner queryrunner=new QueryRunner(Dbutils.getDateSource());
	       String sql="select * from users where name='"+username+"'"+"and password='"+password+"'";
		Users user=null;
		user=queryrunner.query(sql, new BeanHandler<Users>(Users.class));
		System.out.println(user);
		if(user!=null){
			ServletActionContext.getRequest().getSession().setAttribute("user", username );
			return SUCCESS;
		}
		else {
			ServletActionContext.getRequest().setAttribute("msg","<font color='red'>您输入的用户名或密码有误!</font>");
			return INPUT;
		}
	}
}

四、struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true"   />
    <constant name="struts.action.extension" value="action,,"></constant>
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- struts2的包 -->
    <package name="default" namespace="/" extends="struts-default">
		<action name="login" class="it.jsw.struts.action.LoginAction">
			<result name="input">/login.jsp</result>
			<result name="success" type="">/wel.jsp</result>
		</action>
   
    </package>
    
  
  
</struts>

五、Users实体类,仅有两个属性,用户名和密码,加上get与set方法,数据库中users表也为这两个属性

六、登录页面与成功页面,登录页面提交表单到LoginAction,用户名密码正确跳转到欢迎页面,若错误则回到登录页面并提示错误信息。

完成以上配置基本功能已经实现,博文为博主学习过程中所写,框架知目前识还有限,若有不足,欢迎批评指正!!!



相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页