c3p0联合struts2与DBUtils组件连接SQL Server 2008数据库
2017-09-15 20:38
477 查看
大家都知道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,用户名密码正确跳转到欢迎页面,若错误则回到登录页面并提示错误信息。完成以上配置基本功能已经实现,博文为博主学习过程中所写,框架知目前识还有限,若有不足,欢迎批评指正!!!
相关文章推荐
- [sql server 2008 r2] 开启数据库远程连接
- 最新ssh框架连接sql server 2008数据库的一些列问题
- flash builder plugin BlazeDS 连接Flex和Java,数据库SQL server 2008
- MyEclipse连接SQL Server 2008数据库的操作方法
- Visual C# 2008+SQL Server 2005 数据库与网络开发--8.2.1 使用连接字符串
- Tomcat6.0配置连接池连接SQL Server 2008数据库
- ODBC 连接数据库 SQL server 2008
- 使用VS2010连接SQL Server 2008数据库混合编程以实现对数据库的操作
- SQL Server 2008 R2开启数据库的远程连接及客户端配置
- WinForm连接数据库(SQL Server 2008)
- 记录:WinForm连接数据库(SQL Server 2008 )
- Qt 与SQL SERVER 2008相连接 读取数据库中的信息
- 图解微软ReportBuilder3连接Sql Server 2008数据库表创建报表
- MyEclipse连接SQL Server 2008数据库的操作方法
- JDBC 连接 SQL Server 2005, 2008 数据库
- 关于PHP5.6连接SQL Server 2008 R2数据库驱动及一些问题
- SQL Server 2008 开启数据库的远程连接
- 使用MultipleActiveResultSets复用Sql Server 2008数据库连接
- SQL Server 2008 R2 开启数据库远程连接
- Eclipse 连接 SQL Server 2008数据库,运行JAVA代码时出现:‘sa’用户登录失败