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

来源:互联网 发布:网络暴力 论文 编辑:程序博客网 时间:2024/06/10 00:36

大家都知道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,用户名密码正确跳转到欢迎页面,若错误则回到登录页面并提示错误信息。

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


 
原创粉丝点击