`
yeshaoting
  • 浏览: 684419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[小结]Java数据库连接 - 配置 Struts 数据源

    博客分类:
  • J2SE
 
阅读更多

 

7. 配置 Struts 数据源

 

一般步骤:

7.1 配置JNDI数据源

struts-config.xml配置文件<struts-config>标签下加入类似如下配置内容

<data-source>属性type用来定义数据源javax.sql.DataSource实现类:org.apache.commons.dbcp.BasicDataSource

<set-property>标签各属性设置可参考实现类:org.apache.commons.dbcp.BasicDataSource中各数据库连接相关属性的定义.<set-property>的作用就是根据实现类中的setXXX()方法,设置其内容.这就好像<jsp:setProperty>用来设置bean属性一样.

    <data-sources>

       <data-source type="org.apache.commons.dbcp.BasicDataSource">

           <set-property property="driverClassName" value="com.mysql.jdbc.Driver" />

           <set-property property="url" value="jdbc:mysql://localhost:3306/mydb" />

           <set-property property="username" value="root" />

           <set-property property="password" value="root" />

           <set-property property="maxActive" value="30" />

           <set-property property="maxIdle" value="10" />

           <set-property property="maxWait" value="1000" />

       </data-source>

    </data-sources>

 

7.2 获取数据源实例

通过org.apache.struts.action.Action类中定义的二个方法:

protected DataSource getDataSource(HttpServletRequest request, String key)

protected DataSource getDataSource(HttpServletRequest request)

 

关键代码:

    DataSource ds = this.getDataSource(request); 

 

查看org.apache.struts.action.Action类源代码:

    /**

     * <p>Return the specified data source for the current module.</p>

     *

     * @param request The servlet request we are processing

     * @param key     The key specified in the <code>&lt;data-sources&gt;</code>

     *                element.

     *

     * @since Struts 1.1

     */

    protected DataSource getDataSource(HttpServletRequest request, String key) {

 

        // Identify the current module

        ServletContext context = getServlet().getServletContext();

        ModuleConfig moduleConfig =

            ModuleUtils.getInstance().getModuleConfig(request, context);

 

        return (DataSource) context.getAttribute(key + moduleConfig.getPrefix());

    }

 

    protected DataSource getDataSource(HttpServletRequest request) {

 

        return (getDataSource(request, Globals.DATA_SOURCE_KEY));

 

    }

 

由此可知,数据源需要在自定义的Action处理类(继承自Action)中获取数据源.

参数说明:

request    一次用户请求

key    <data-source>标签设置的key属性.未设置key属性时,默认值为Globals.DATA_SOURCE_KEY

       通过protected DataSource getDataSource(HttpServletRequest request)方法获取数据源

       默认调用key值为Globals.DATA_SOURCE_KEY的数据源

 

引用自struts-config_1_2.dtd

     key             Servlet context attribute key under which this data source

                     will be stored.  Default is the value specified by string

                     constant defined by Globals.DATA_SOURCE_KEY. The application

                     module prefix (if any) is appended to the key

                     (${key}$prefix}).

                     [org.apache.struts.Globals.DATA_SOURCE_KEY]

 

: 该方法权限是protected,因为可以在不同包的子类中使用,无法在不同包非子类中被调用.另外,自定义的Action处理类构造函数只在第一次请求时,被调用.因此,自定义的Action处理类的实例化很可能用到单例模式.

 

7.3 数据库操作

 

一般步骤:

a) 通过数据源实例建立数据库连接

b) 创建Statement对象

c) 获取结果集

d) 关闭数据库连接资源(包括ResultSet,Statement,Connection实例)

 

关键代码:

    Connection conn = ds.getConnection();

    PreparedStatement stmt = conn.prepareStatement(sql);

 

    stmt.setString(1, username);

    stmt.setString(2, password);

    ResultSet rs = stmt.executeQuery();

 

    if(rs.next())

    {

       request.setAttribute("hint", bundle.getString("login.check.hint.success"));

       return mapping.findForward("success");

    }

 

分享到:
评论

相关推荐

    Struts框架中struts-config.xml文件配置小结

    - **作用**:配置应用程序所需的数据源。 - **子元素**:`&lt;data-source&gt;`,用于定义具体的数据源。 - **属性**: - `type`:数据源的具体实现类,例如`org.apache.commons.dbcp.BasicDataSource`。 - `key`:当...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - 数据源配置文件,指定数据源的类型和参数。 - **3.3.4 其他重要属性配置** - 如缓存配置、事务配置等。 **3.4 事务** - **3.4.1 JDBC API操作事务** - 使用JDBC原生API进行事务管理。 - **3.4.2 Hibernate ...

    J2EE电子商务系统开发从入门到精通:基于Struts和Hibernate技术实现

    - **数据源配置**:指定数据源实现。 - **其他重要属性配置**:如缓存策略、日志级别等。 - **事务**: - **JDBC API操作事务**:直接通过JDBC接口管理事务。 - **Hibernate API操作事务**:利用Hibernate提供的...

    JAVA程序开发大全---上半部分

    1.4 本章小结 5 第2章 MyEclipse集成开发环境的使用 6 2.1 MyEclipse集成开发工具界面 6 2.1.1 MyEclipse的菜单栏 7 2.1.2 MyEclipse的工具栏 13 2.1.3 MyEclipse的透视图 14 2.1.4 MyEclipse的视图 17 2.1.5 ...

    J2EE电子商务系统开发从入门到精通基于Struts和Hibernate技术实现

    - **3.3.3 数据源配置**:配置数据源,使Hibernate能够正确连接数据库。 - **3.3.4 其他重要属性配置**:配置其他重要的Hibernate属性。 - **3.4 事务** - **3.4.1 JDBCAPI操作事务**:使用JDBC API进行事务管理...

    Hibernate+struts实例学习

    - 在Java Web工程中配置数据源,了解不同数据库的配置方法和差异。 - Hibernate配置文件的编写,包括SessionFactory的配置和Hibernate属性的设置,对Hibernate的运行性能有直接影响。 - Hibernate映射文件的编写是...

    struts2+ireport学习小结(一)

    在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》所涉及的源代码 布衣暖,菜根香,好书滋味长!清华大学出版社长期以来一直秉承为读者多出好书的宗旨,多年来为读者奉献了大量脍炙人口的精品...

    Struts2+Hibernate+Spring项目小结――Hibernate部分

    你需要指定数据源(dataSource)、Hibernate配置属性以及映射文件的位置。例如: ```xml &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.Oracle9Dialect &lt;prop key="hibernate.show_sql"&gt;false &lt;!-...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》所涉及的源代码 布衣暖,菜根香,好书滋味长!清华大学出版社长期以来一直秉承为读者多出好书的宗旨,多年来为读者奉献了大量脍炙人口的精品图书...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     19.1.3 从容器中获得数据源  19.1.4 由Java应用本身提供数据库连接  19.2 配置事务类型  19.3 把SessionFactory与JNDI绑定  19.4 配置日志  19.5 使用XML格式的配置文件  19.6 小结  19.7 思考题 第20章 ...

    MyEclipse 6 Java EE 开发中文手册

    **2.7 小结** 完成上述步骤后,您已经搭建好了完整的Java EE开发环境,包括JDK、应用服务器(如Tomcat、JBoss)、数据库服务器(如MySQL)以及集成开发环境(如Eclipse、MyEclipse)。 #### 第三章:开发第一个...

    J2EE电子商务系统开发从入门到精通

    - **3.3.3 数据源配置** - 配置数据源的信息。 - **3.3.4 其他重要属性配置** - 如缓存策略、日志级别等。 **3.4 事务** - **3.4.1 JDBC API操作事务** - 使用JDBC API进行事务的开启、提交和回滚。 - **3.4.2 ...

    Spring配置的5种方式

    - **DataSource**: 数据源配置,用于连接数据库。 - **TransactionManager**: 事务管理器配置,负责事务的开始、提交或回滚等操作。 - **代理机制**: 通过AOP(面向切面编程)来实现事务管理。 接下来,我们将详细...

    J2EE程序设计 下册 第二版

    - **修改hibernate配置文件**:通常使用`hibernate.cfg.xml`文件来配置数据库连接和其他选项。 - **创建数据库操作类**:用于执行基本的CRUD(Create, Read, Update, Delete)操作。 - **测试**:确保能够正确地读取...

    ssi框架学习个人小结

    - **iBatis配置文件**(SqlMapConfig.xml):配置数据源、映射文件路径等。 #### 四、示例项目分析 假设有一个用户管理系统的开发需求,我们可以按照SSI框架的结构进行设计: - **Model层**:如`User.java`类,...

Global site tag (gtag.js) - Google Analytics