jsp数据库开发
A. jsp做数据库开发用建立表间关系吗
严格来说如果表间有依赖关系最好建立表关系,这样可以在DBMS里就有约束。jsp与数据库连接你不做数据库关系约束,一样能做,这样就需要你自己仔细写代码了,注意表间的关系,否则可能得到的结果不是你想要的
B. 目前JSP开发用的最普遍的web服务器和数据库是什么啊
Tomcat和Oracle
应该是最主流,其他的服务器WebLogic,Apache也用的比较多,数据库就更多了,Postgre,Mysql等等,不过都大同小异,学通一个就可以了
C. 用JSP的Model2方式开发,连接数据库的代码封装在哪里
通常情况下,如果你使用的是普通jdbc的连接方式,可以创建一个公用类来完成数据库的连接,你可以视之为javabean,因为你的连接类会被频繁调用嘛,如果你想采用
持久层
的模式来完成连接数据库与操作数据库的工作,那连接数据库的代码已经封装在持久层框架中,或者说已经被配置好了,以
hibernate
为例,你只需要在servlet中调用实例化的数据连接对象即DAO即可,DAO中应该包含了从数据库的连接(连接参数已经在
配置文件
中准备好了)到完成
数据库操作
的一系列方法。
总之是不建议在servlet中植入数据库连接代码,
耦合度
太高。
D. JSP+TOMCAT+MYSQL开发数据库的查询问题
通常情况下都是用集合(ArrayList,Map)存储,然后用for循环遍历显示。
关于在JSP前台显示,比较通用的做法是借助于jstl标签写个for-each循环显示。
其实做法很多。楼主只需按需选用你自己比较熟悉的一种就可以了。
E. 学习JSP数据库编程,需要系统地掌握哪些基础知识
首先学习JAVA编程。
Java 2 入门经典
http://book.jqcq.com/proct/376269.html
本书是一本集综合性、实用性为一体的学习Java语言和Java 2平台API的优秀教材,在世界范围内广受欢迎,口碑极佳。书中除讲解Java程序设计语言,还广泛介绍了作为一名Java程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。 本书适合作为学习Java的教材使用,也可供Java爱好者参考。
Sun认证Java 2程序员学习指南(Exam310-025)第二版(影印本)
http://book.jqcq.com/proct/384641.html
本书介绍全面系统地介绍了Sun公司关于Java 2考试的所有要点,内容包括:语言基储生命与访问控制、操作数、流控制、特殊处理、过载、类、线程、java.lang.Math类、字符串、 java.util包 、java.awt包基储java.awt的事件处理、java.io Package包。本书适合各类Java程序员,尤其适合参加Java 2程序员考试的用户。
Java 2编程指南
http://book.jqcq.com/proct/393023.html
本书主要包括以下内容:为最新版本Java 2 SDK1.4而设计的测试代码;Java语言基础内容;应用程序中错误和异常的处理;数据和文件的管理与操纵;并行程序设计和线程;Swing(Java 的GUI);大型图形用户界面的例子Sketcher;用Java语言实现打印功能;XML新技术及其应用。
JSP程序设计 JSP程序设计
http://book.jqcq.com/proct/430739.html
JSP(JavaServer Pages)是目前热门的跨平台动态Web应用开发技术。本书由经验丰富的开发人员撰写,是一本通俗易懂的JSP入门书籍。书中主要介绍JSP基础知识、 JSP和表达式语言(EL)、JSP标记库和JSTL、JSP指令、JSP和JavaBean、错误处理、JSP和servlet、访问数据库以及MVC 等。书中展示了许多实际的代码示例,并对一些实例做� ...
JSP编程指南(第三版)
http://book.jqcq.com/proct/399242.html
这是一本有关JSP的最新着作,全面讨论了JSP的结构、配置和最新开发技术。结合具体代码介绍和剖析了JSP的组成、Servlet和配置、JSP表达式语言、JSP标志、数据库访问控制、过滤及过滤器技术等,也讨论了程序安全性、性能及伸缩性、最优设计方法等领域的解决方案,最后对Struts、 XDoclet以及其他的一些工具进行了系统的介绍。� ...
JAVA框架一共分为三层:表示层,业务层和物理层。也就是MVC。
我们来一层一层的介绍相关的书籍:
表示层:
实战Struts
http://book.jqcq.com/proct/411616.html
Struts解决了许多Web应用程序开发中的常见问题。基于Struts应用程序框架构造的应用程序,除了可以复用业已证明可用的解决方案外,同时也可以使得开发人员更加关注应用程序的特性。Struts是由Apache软件基金会支持的开源软件。本书完整介绍了Struts框架结构,涵盖了设计、数据校验、数据库访问、动态页面生成、本地化、Str ...
Jakarta Struts编程(第二版)
http://book.jqcq.com/proct/842618.html
自本书第一版发行以来,Struts开源项目变得越来越受欢迎。尽管这项技术令人振奋,但是它的说明文档却仍然少得可怜――大多数的指南都太简单,那些要编写复杂Web应用程序的开发人员根本找不到所需的关键信息。本书第二版为了填补这个信息缺口,针对最近发布的Struts 1.1版重新修订扩编,提供最新的信息。第二版增加了新的章� ...
这个框架比较老了,就介绍这两本吧!
比较高级的还有:
WebWork in Action 中文版
http://book.jqcq.com/proct/542722.html
本书是一本从头至尾都使用现实世界例子讲述有关编写Web应用程序的书籍。WebWork所强调的内容是:利用框架实现你的项目,而不是被框架所阻碍。在本书中,我们将从简单的表单及表单处理开始,逐一讲述编写Web应用程序的基础知识:action、interceptor和result,以及控制反转(IoC)模式、对象图导航语言(OGNL)和所有来自We ...
JSF实战
http://book.jqcq.com/proct/431957.html
JSF是Sun公司J2EE标准指定的Web应用框架,得到了众多厂商的支持。本书是JSF方面的名着,共分五个部分。第一部分是JSF基础知识;第二部分是构建UI;第三部分研究将原型转化为实际应用所需的应用代码;第四部分从组件开发的角度来研究JSF;第五部分基于第四部分所讲述的知识给出了大量示例。本书作者是JSF界的权威,在书中提� ...
JavaServer Faces 核心编程 JavaServer Faces 核心编程
http://book.jqcq.com/proct/540559.html
SF在Java的WEB编程中已经被认为是下一个重大的事件。通过JSF,你可以在网页上使用组件来捕获用户行为产生的事件。JSF将快速成为标准的WEB应用程序框架。本书可以帮助你掌握这个功能强大的技术。本书特色: 通过本书,你可以在网页上使用组件来捕获用户行为产生的事件。JSF将快速成为标准的WEB应用程序框架。本书可以帮助 ...
在表示层还有一些框架,就不一一介绍了。
然后是业务层,这个层就好象使用一个框架:
Spring 技术手册(含光盘)
http://book.jqcq.com/proct/542533.html
本书为Spring的诸多概念提供了清晰的讲解,通过实际完成一个完整的Spring项目示例,展示了Spring相关API的使用,能够显着地减少每一位Spring入门者摸索Spring API的时间,并且从示例学习中获得提高。作者在写作之初,深入思考了每一位入门者所可能遇到的问题,通过简单的例子加上清晰的讲解,使得本书成为学习 Spring Web开 ...
Spring 2.0 宝典(含光盘1张) Spring 2.0 宝典(含光盘1张)
http://book.jqcq.com/proct/543075.html
Spring是目前最流行的J2EE框架。本书由浅入深全面地介绍了Spring的结构体系,内容覆盖到Spring近80%的API。全书分 22章,内容涵盖了Spring的核心机制、依赖注入、资源访问、整合Hibernate、DAO支持、JDBC支持、MVC框架、整合第三方表现层和 MVC框架、远程访问支持、EJB访问和实现等。本书的示例都是精心挑选的,具有很强的� ...
Spring in Action 中文版 Spring in Action 中文版3
http://book.jqcq.com/proct/431187.html
本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域:核心层、中间层和Web层。第一部分展示了Spring框架的两个核心概念:反向控制(Inverstion of Control,IoC)和面向切面编程(Aspect-Oriented Programming,AOP),以便读者理解Spring的基础原理,这些基础原理在本书各个章节都会用到。第二部分在第1章介 ...
最后就是物理层,这个方面也一个框架:
精通 Hibernate
http://book.jqcq.com/proct/540613.html
本书深入地介绍了Hibernate实现ORM的关键技术,包括Hibernate的底层技术、Hibernate的实现架构、 Hibernate的配置和使用方法、EJB3.0技术和基于Hibernate的开发实例。通过本书,可以全面了解Hibernate的技术和开发方法,深入理解 Hibernate的数据持久化设计,掌握数据层应用开发的方法。 本书适合所有想了解、利用Hiber ...
Hibernate实战(第2版·英文版).
http://book.jqcq.com/proct/432671.html
本书全面讲述了Hibernate和Java Persistence,并对两者进行了详细的对比分析。书中通过一个应用将数百个例子融合起来,不仅深入剖析了Hibernate 3.2和Java Persistence 丰富的编程模型,还深刻阐述了数据库设计、对象/关系映射(ORM)和优化等方面的基本原则、策略和最佳实践。书中处处闪烁着作者超凡的真知灼见,将大大 � ...
更多书籍,请参考http://book.jqcq.com
希望对你有用!
F. JSPWeb开发中一个关于数据库操作类该这么写,类中要带有查询,增删改,以及关闭数据库操作方法,请高手指
package com.oa..impl; import java.sql.Connection; </SPAN></li>import java.sql.PreparedStatement; </SPAN></li>import java.sql.ResultSet; </SPAN></li>import java.sql.SQLException; </SPAN></li>import java.sql.Statement; </SPAN></li>import java.util.List; </SPAN></li>import java.util.Map; </SPAN></li> import org.apache.commons.logging.Log; </SPAN></li>import org.apache.commons.logging.LogFactory; </SPAN></li> import com.oa.core.DynaForm; </SPAN></li>import com.oa..Dao; </SPAN></li>import com.oa.jdbc.ConnectionFactory; </SPAN></li>import com.oa.jdbc.DaoAccessException; </SPAN></li>import com.oa.jdbc.DybaBean; </SPAN></li>import com.oa.jdbc.JdbcPage; </SPAN></li>import com.oa.jdbc.Page; </SPAN></li>import com.oa.jdbc.RowsDynaClass; </SPAN></li> /** </SPAN></li> * 基类DAO,实现一些基本共有方法 * * @author Gao_wx Mar 26, 2008 */ public class BaseDao implements Dao { </SPAN></li> protected Log logger = LogFactory.getLog(BaseDao.class); </SPAN></li> // 获取数据库链接 </SPAN></li> protected Connection getConnection() { </SPAN></li> return ConnectionFactory.getConnection(); </SPAN></li> } // 在此链接上,根据sql语句获取List </SPAN></li> protected List<DybaBean> getList(Connection conn, String sql) </SPAN></li> throws DaoAccessException { </SPAN></li> try { </SPAN></li> Statement st = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = st.executeQuery(sql); return getList(rs); </SPAN></li> } catch (SQLException e) { </SPAN></li> throw new DaoAccessException(sql, e); </SPAN></li> } } // 根据Result获取List </SPAN></li> protected List<DybaBean> getList(ResultSet rs) throws SQLException { </SPAN></li> RowsDynaClass rsdc = new RowsDynaClass(rs); </SPAN></li> return rsdc.getRows(); </SPAN></li> } // 根据sql语句获取List </SPAN></li> protected List<DybaBean> getList(String sql) throws DaoAccessException { </SPAN></li> Connection conn = getConnection(); return getList(conn, sql); </SPAN></li> } // 在此连接上,根据sql语句,id加载一条记录 </SPAN></li> protected DybaBean loadById(Connection conn, String sql, int id) </SPAN></li> throws DaoAccessException { </SPAN></li> try { </SPAN></li> PreparedStatement pst = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); pst.setInt(1, id); </SPAN></li> ResultSet rs = pst.executeQuery(); List list = getList(rs); if (list.size() > 1) { </SPAN></li> logger.warn("加载了2条以上的记录,请检查sql:" + sql); </SPAN></li> } if (list.size() == 0) { </SPAN></li> logger.warn("数据库没有此记录!"); </SPAN></li> return null; </SPAN></li> } else { </SPAN></li> return (DybaBean) list.get(0); </SPAN></li> } } catch (SQLException e) { </SPAN></li> throw new DaoAccessException(sql, e); </SPAN></li> } } // 根据sql语句,id,加载一条记录 </SPAN></li> protected DybaBean loadById(String sql, int id) throws DaoAccessException { </SPAN></li> Connection conn = getConnection(); return loadById(conn, sql, id); </SPAN></li> } // 在此连接上,根据Sql和id删除一条记录,返回影响行数 </SPAN></li> protected int deleteById(Connection conn, String sql, int id) </SPAN></li> throws SQLException { </SPAN></li> PreparedStatement pst = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); pst.setInt(1, id); </SPAN></li> int del = pst.executeUpdate(); </SPAN></li> return del; </SPAN></li> } // 根据sql语句,id删除一条记录 </SPAN></li> protected int deleteById(String sql, int id) throws DaoAccessException { </SPAN></li> Connection conn = getConnection(); try { </SPAN></li> int del = deleteById(conn, sql, id); </SPAN></li> return del; </SPAN></li> } catch (SQLException e) { </SPAN></li> throw new DaoAccessException(sql, e); </SPAN></li> } } protected Page getPage(DynaForm form, String sql) throws DaoAccessException { </SPAN></li> Connection conn = getConnection(); Page page = getPage(conn, form, sql); return page; </SPAN></li> } // 获取分页对象 </SPAN></li> protected Page getPage(Connection conn, DynaForm form, String sql) </SPAN></li> throws DaoAccessException { </SPAN></li> int p = form.getInt("p"); </SPAN></li> if (p < 1) { </SPAN></li> p = 1; </SPAN></li> } int size = form.getInt("size"); </SPAN></li> if (size < 10) { </SPAN></li> size = 10; </SPAN></li> } Page page; try { </SPAN></li> page = new JdbcPage(conn, sql, p, size); </SPAN></li> } catch (SQLException e) { </SPAN></li> throw new DaoAccessException(sql, e); </SPAN></li> } return page; </SPAN></li> } }