《JSP笔记》之十(数据库)(新2009年10月20日)
- 格式:doc
- 大小:5.56 MB
- 文档页数:23
JSP数据库应用开发:1、了解数据库的基本概念2、了解数据库mysql3、掌握在mysql中创建数据库、数据表4、熟悉sql的常用查询语句5、了解jdbc的工作原理6、掌握使用jdbc连接数据库的方法7、了解jdbc-odbc桥接8、掌握纯java驱动方式连接数据库9、掌握在web项目中创建连接数据库的工具类具体内容:1、了解数据库的基本概念:(1)数据库技术产生于20世纪60年代;(2)数据VS信息:1)数据——对客观事物描述和记载的可以鉴别的物理符号,是客观事物的基本表达;2)信息是数据的集合、含义与解释,是事物变化、特征的反映。
(3)数据库是指在计算机内按照一定形式存放、有组织、统一管理的相关数据和数据库对象的集合。
其中数据库对象是指表、视图、存储过程、触发器等。
(4)数据库管理系统:是位于用户和操作系统之间的一层数据管理软件。
它能科学的组织和存储数据、高效地获取和维护数据,并能为用户提供访问数据的方法,包括数据库的创建、查询、插入、修改和删除等。
(5)数据库系统:是指实现有组织、动态的存储大量关联数据、方便用户访问计算机硬件、软件和数据资源的系统,它主要由数据库、数据库管理系统、应用系统、数据库管理员及用户组成。
数据库系统常称为数据库。
(6)数据库分类:一句数据库管理系统的数据模型,可以分为层次数据库、网状数据库、关系数据库、面向对象数据库。
最常用的是关系数据库。
支持关系数据库的产品有:IBMDB2 Oracle Sybase Microsoft SQL Server等(7)关系数据库:是以关系模型为基础的;(8)关系模型是利用二维表格表示数据的数据模型。
(9)数据表a 也叫做关系a(10)关系的首行:叫做属性、也叫做字段、也就是关系各列的名字,属性描述了所在列的意义。
关系中每个属性都有一个取值范围,也就是这个属性的数据类型的取值范围,称为该属性的域。
(11)关系的模式:关系名和关系的属性的集合,也就是数据表的名字和数据表首行的各个字段的集合,例如数据表user,里面有三个字段id, username,userpassword,那么,关系模式是:user(id,username,userpassword)(12)记录:在关系中,字段的有序集合称为记录,记录的各个分量分别对应着关系的各个属性。
MVC:JSP + +Java:复习java基础知识Jsp:JSP、PHP、 三门技术被称为Web 后端开发的3P 技术,其中JSP 依托J2EE 平台更是Web 开发领域的一枝独秀。
学好JSP,是进入J2EE 企业开发的第一步。
通过本阶段内容的学习,你将能够搭建JSP 的开发环境,了解JSP 的基本语法及内部对象的使用。
Servlet:Servlet 是Server Applet 的缩写,也称为服务端小程序。
Servlet 技术一直处于不断的发展及进步之中,现在已经成为很多框架的技术基础,比如Spring、Struts2 等。
通过本阶段课程的学习,你将了解Servlet的运行原理,Servlet 过滤器的知识并能编写出相对复杂的Java Web 程序。
Javabean:JavaBeans是一个可重复使用的软件组件JavaBeans是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beans。
JSP页面应当将数据的处理过程指派给一个或几个beans来完成,我们只需在JSP页面中调用这个beans即可,从而有效的分离的静态工作部分和动态工作部分JDBC:JDBC 是Java 对关系型数据库进行访问的最主要的API,是Java 数据库编程的技术基础。
通过本阶段内容的学习,你能够掌握数据库的基本知识及JDBC 技术的基本原理,并能够使用JDBC编写出对数据库进行增删改查的简单程序Spring:Spring 是一个开源框架,也是一个基于控制反转、依赖注入的轻量级容器,它的出现大大简化了传统的J2EE 开发模式。
Spring 的主要优势之一就是其分层架构,该架构允许使用者自主选择任意件,同时为J2EE 应用程序开发提供集成框架。
现在,Spring 已经成为J2EE 企业开发中的标准配置。
Struts2:Spring MVC是一种基于Java的轻量级Web框架,它使用了MVC架构模式的思想,将web 层进行职责解耦,用来简化日常开发。
数据库各章记忆重点第1章数据是信息的载体,信息是数据的内涵数据库的特征:数据结构化实现数据共享减少数据冗余度数据独立性统一的数据安全保护数据模型的要求:真实模拟世界能为人理解能在计算机上实现数据模型:概念模型(信息模型):实体-联系模型基本数据模型:网状模型层次模型关系模型面向对象模型数据库系统的核心和基础:数据模型数据模型三要素:数据结构数据操作(检索更新)数据约束条件PK 主关键字FK外部关键字关系模式(对关系的描述):格式为关系名(属性名1,属性名2,...,属性名n)自然连接的前提条件:二表之间存在外键约束关系完整性约束(保证数据的完整性和相容性):实体完整性:不能存在两个完全相同的记录参照完整性:必须有外键域完整性用户定义完整性数据库应用模式:客户服务器应用模式(CS)浏览器服务器应用模式(BS)第4章ole对象P74文本框(text box):记录源组合框(combo box)列表框(list box)标签(label)按钮(button)子窗体/子报表(subform/subreport)直线(line)矩形(rectangle)图像(image)图表(chart)复选框(check box):是/否值,独立控件,用对勾表示选项按钮(option group):是/否值,只能选中一个选项按钮,用点表示选项组(option group)切换按钮(toggle button)选项卡控件(tab control)页(page)分页符(page break)超链接(hyperlink)附件(attachment)绑定对象框(bound object frame)未绑定对象框(unbound object frame)窗体类型按是否绑定数据表:绑定窗体未绑定窗体按窗体表现形式:平面窗体分割窗体多项目窗体主/子窗体数据透视图窗体数据透视表窗体选项卡窗体切换面板窗体模式对话框窗体第五章报表分类:表格式报表标签式报表报表视图:报表视图布局试图设计视图打印预览视图第七章计算机基本原理:按序编写自动执行VBA结构化编程过程:进入VBE开发环境;插入模块和过程,并在过程中输入代码;运行代码,得到结果编程界面构成:工程资源管理器窗口属性窗口代码窗口(代码窗口视图:过程视图全模块视图)Ctrl+G 显示立即窗口数据类型:具有的运算确定数据取值范围确定数据在计算机类的表示方式确定Byte 字节型(0-255),boolean布尔型(2字节存储,0变成false,其他值变成true;false 变成0,true变成-1)integer整型,single单精度,double双精度,currency(货币型,声明字符@,变比整型,小数点左边15位,右边4位),date(日期型) string(串类型-变长),学号必须是字符型,默认的是variant,string*length (定长的字符串)例题:常量:一、立即窗口显示常量及对应类型1、?2print 22、?Typename(“江西财经大学”)?Typename(#2009-12-12#)二、Option explict 强制显式声明变量:变量赋值语句let【let】<变量名>=<表达式>将右赋值给左,表达式一般是常量,但也可以是变量a,b,c 结果输出后之间有空格a;b;c 结果输出后无空格函数:系统函数自定义函数举例:monthname(month(date()))Left(b,4)从左求四个字符子串函数Mid(b,3,2)从第三个位置开始,截取2个字符其中b为表达式,如“中华人民共和国”Now()系统当前时间系统函数(其后面的表达式必须有括号,无论表达式是常量还是变量)一、数值处理函数1、三角函数(tan,sin,cos,atn反正切)2、一般计算(exp(数值表达式):自然对数e的数值表达式次方,log(<数值表达式>):数值表达式的自然对数值,sqr求平方根)3、产生随机数(rnd:返回0到1之间的随机数值)4、求绝对值(abs)5、sgn(求符号函数,正号为1,符号为-1)6、取整(int,fix)二、字符函数1、大小写转换转换为大写Lcase转换为小写Ucase2、建立重复字符的字符串建立空格函数space(3)输出3个空格重复字符函数string(3,“中华人民共和国”)将中华人民共和国共和国的第一个字“中”重复3次,即输出“中中中”3、len(“中华人民共和国”):返回中华人民共和国的字符长度,结果为74、设置字符串格式Format(8315.4,“00000.00”)将8315.4转换成后面那种格式,结果输出为08315.40 Format(now,yyyy年MM月dd日hh 时mm分)将现在的时间转换为“XXXX年XX月XX日XX时XX分”的形式5、处理字符串Instr(“江西财经大学”,“财经”):财经的财在江西财经大学第3个位置,所以输出3 Left(“江西财经大学”,4):从左数截取4个字符,得江西财经Right(“江西财经大学,4”):从右数截取4个字符,得财经大学Mid(“江西财经大学”,3,2)得财经,mid(“江西财经大学”,3)未指定长度,则直到尾部,得财经大学Ltrim删除前置空格,Rtrim删除尾部空格,Trim删除前置和尾部空格,注意是尾部,而不是后置6、ASCII值与ANSI值用asc和chr三、日期函数[日期时间类型为:2013-11-22 12:13:11]返回日期或时间计算日期dateadd日期加或减一个时间间隔后的日期Datediff求指定日期间的时间间隔Datepart求日期所在旳季度、日数、周数等转换日期或时间dateserial将时分秒转换为时间类型如dateserial(2010,07,07)得2010-07-07TimeserialDatevalue(date)求日期时间类型的日期Timevalue(date)求日期时间类型的时间Weekday(date)求日期的星期数设置日期或时间Date=#2014-12-13#Time=#13:23:34#计时Timer从午夜开始到现在的秒数四、金融函数五、输入输出函数Spc(22)在当前打印位置输出22个空格符号Tab函数Msgbox函数Msgbox(提示信息,按钮,标题)Inputbox(提示信息,标题,默认值)表达式数值表达式:mod求模运算,即求余数字符表达式:& ?“江西”&“南昌”+日期和时间表达式:?#2010-02-01#- #2013-03-03# 日期差#2010-02-01#-31 前31天的日期#2010-02-01#+31 后31天的日期关系表达式:比较运算符>,<,>=,<=,<>,=Like运算符?,*,#,【A-Z】,【!A-Z 】Is 运算符逻辑表达式not and or xor(抑或,两侧不同时为true) eqv(异同,两侧结果相同时为true),imp: A Imp B=(Not A )Or B 表达式优先级:数值表达式(字符或日期表达式)>关系表达式>逻辑表达式注释符:rem或(’)续行符:-第9章对象是类的实例,对象是由属性和方法(或事件)构成的方法或事件是对象具有的某种功能,在程序代码上表现为一个过程,方法调用属于显式调用,事件调用是隐式的,通常不存在一条语句来说明事件被调用,需要用户去操作,即事件驱动接口:可以实现交互消息:类:生产多个具有相同属性和方法(或事件)的对象模板,类是对象的抽象,对象是类的实例。
JSP复习笔记——第10章连接数据库之DAO设计模式-堕落天使- JavaEy...之前的开发可以发现以下问题:1、所有的JDBC代码写在JSP页面之中,维护困难2、JSP中不应该使用任何SQL包,即不能在JSP中直接使用java.sql.*,原因是JSP只关注于数据的显示,而不关心数据是从哪儿来,或向哪里存储3、所有的数据库操作代码最好使用PreparedStatement 区分:J2EE的组件层次客户端? 表示层? 业务层? 数据层? 数据库*.jsp/servletDAO属于J2EE数据层的操作即:在DAO中封装一个表在一个项目中所应该具有的所有的操作Java代码create table person(id varchar(32) not null primary key,name varchar(20) not null,password varchar(20) not null,age varchar(20) not null,email varchar(20) not null);create table person(id varchar(32) not null primary key,name varchar(20) not null,password varchar(20) not null,age varchar(20) not null,email varchar(20) not null);程序在变更数据库之后,前台页面不会出现过多改变?首先需要规定出整个模块之中对person表的全部操作:*增加*删除*修改* 按ID查询* 查询全部* 模糊查询按以上要求,规定出操作此张表的标准,之后只要针对于不同的数据库实现这些标准即可在JA V A中只有通过接口可以定义出标准? DAO规定的就是一个接口插入? 针对对象插入对象? VO、TO、POJO(值对象、传输对象、最根本的JA VA对象)即:只包含属性和setter、getter方法的类客户– vo ? DAOVO的对象与表中的字段对应定义好接口之后,要定义出接口的具体实现类,具体实现DAO接口中对数据库表的一切操作可以发现以下的一个重要问题:PersonDAO dao = new PersonDAOImpl();接口直接通过其子类实例化,直接的影响就是程序在调用时必须知道具体的子类,这样会造成修改不方便所以,必须使用工厂设计,是前台不关注于具体子类DAO整体设计,是采用以下模式:调用处? DAO工厂? 具体子类实现? 完成数据库操作|------------------|------------VO-----------------------|直接的好处:前台显示与后台逻辑操作分离Java代码package org.sky.darkness.factory ;import org.sky.darkness.dao.* ;import org.sky.darkness.dao.impl.* ;public class DAOFactory{public static PersonDAO getPersonDAOInstance() {return new PersonDAOImpl() ;}};package org.sky.darkness.factory ;import org.sky.darkness.dao.* ;import org.sky.darkness.dao.impl.* ;public class DAOFactory{public static PersonDAO getPersonDAOInstance() {return new PersonDAOImpl() ;}};--PersonDAO.java Java代码package org.sky.darkness.dao ;import java.util.* ;import org.sky.darkness.vo.* ;// 规定出了操作person表在此项目里的全部方法public interface PersonDAO{// 增加操作public void insert(Person person) throws Exception ;// 修改操作public void update(Person person) throws Exception ;// 删除操作public void delete(String id) throws Exception ;// 按ID查询操作public Person queryById(String id) throws Exception ;// 查询全部public List queryAll() throws Exception ;// 模糊查询public List queryByLike(String cond) throws Exception ; }package org.sky.darkness.dao ;import java.util.* ;import org.sky.darkness.vo.* ;// 规定出了操作person表在此项目里的全部方法public interface PersonDAO{// 增加操作public void insert(Person person) throws Exception ;// 修改操作public void update(Person person) throws Exception ;// 删除操作public void delete(String id) throws Exception ;// 按ID查询操作public Person queryById(String id) throws Exception ; // 查询全部public List queryAll() throws Exception ;// 模糊查询public List queryByLike(String cond) throws Exception ; }Java代码package org.sky.darkness.vo ;// 值对象,包含属性,setter,getter方法public class Person{private String id ;private String name ;private String password ;private int age ;private String email ;// 生成getter、setter方法public void setId(String id){this.id = id ;}public void setName(String name){ = name ;}public void setPassword(String password){this.password = password ; }public void setAge(int age){this.age = age ;}public void setEmail(String email) {this.email = email ;}public String getId(){return this.id ;}public String getName(){return ;}public String getPassword(){return this.password ;}public int getAge(){return this.age ;}public String getEmail(){return this.email ;}};package org.sky.darkness.vo ;// 值对象,包含属性,setter,getter方法public class Person{private String id ;private String name ;private String password ;private int age ;private String email ;// 生成getter、setter方法public void setId(String id){this.id = id ;}public void setName(String name){ = name ;}public void setPassword(String password) {this.password = password ;}public void setAge(int age){this.age = age ;}public void setEmail(String email){this.email = email ;}public String getId(){return this.id ;}public String getName(){return ;}public String getPassword(){return this.password ;}public int getAge(){return this.age ;}public String getEmail(){return this.email ;}};Java代码package org.sky.darkness.dao.impl ; import java.sql.* ;import java.util.* ;import org.sky.darkness.vo.* ;import org.sky.darkness.dbc.* ;import org.sky.darkness.dao.* ;// 此类需要完成具体的数据库操作,需要JDBC代码public class PersonDAOImpl implements PersonDAO {// 增加操作public void insert(Person person) throws Exception {String sql = "INSERT INTO person(id,name,password,age,email) V ALUES (?,?,?,?,?)" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;pstmt.setString(1,person.getId()) ;pstmt.setString(2,person.getName()) ;pstmt.setString(3,person.getPassword()) ;pstmt.setInt(4,person.getAge()) ;pstmt.setString(5,person.getEmail()) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}}// 修改操作public void update(Person person) throws Exception{String sql = "UPDATE person SETname=?,password=?,age=?,email=? WHERE id=?" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;pstmt.setString(1,person.getName()) ;pstmt.setString(2,person.getPassword()) ;pstmt.setInt(3,person.getAge()) ;pstmt.setString(4,person.getEmail()) ;pstmt.setString(5,person.getId()) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}}// 删除操作public void delete(String id) throws Exception{String sql = "DELETE FROM person WHERE id=?" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;pstmt.setString(1,id) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}}// 按ID查询操作public Person queryById(String id) throws Exception{Person person = null ;String sql = "SELECT id,name,password,age,emailFROM person WHERE id=?" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;pstmt.setString(1,id) ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;if(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;}rs.close() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return person ;}// 查询全部public List queryAll() throws Exception{List all = new ArrayList() ;String sql = "SELECT id,name,password,age,emailFROM person" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;while(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象Person person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;// 将查询出来的数据加入到List对象之中all.add(person) ;}rs.close() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return all ;}// 模糊查询public List queryByLike(String cond) throws Exception {List all = new ArrayList() ;String sql = "SELECT id,name,password,age,email FROM person WHERE name LIKE ? or email LIKE ?" ;PreparedStatement pstmt = null ;DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt =dbc.getConnection().prepareStatement(sql) ;// 设置模糊查询条件pstmt.setString(1,"%"+cond+"%") ;pstmt.setString(2,"%"+cond+"%") ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;while(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象Person person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;// 将查询出来的数据加入到List对象之中all.add(person) ;}rs.close() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return all ;}};package org.sky.darkness.dao.impl ;import java.sql.* ;import java.util.* ;import org.sky.darkness.vo.* ;import org.sky.darkness.dbc.* ;import org.sky.darkness.dao.* ;// 此类需要完成具体的数据库操作,需要JDBC代码public class PersonDAOImpl implements PersonDAO {// 增加操作public void insert(Person person) throws Exception {String sql = "INSERT INTO person(id,name,password,age,email) V ALUES (?,?,?,?,?)" ; PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作{// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ; pstmt.setString(1,person.getId()) ;pstmt.setString(2,person.getName()) ;pstmt.setString(3,person.getPassword()) ;pstmt.setInt(4,person.getAge()) ;pstmt.setString(5,person.getEmail()) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}// 修改操作public void update(Person person) throws Exception {String sql = "UPDATE person SETname=?,password=?,age=?,email=? WHERE id=?" ; PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ; pstmt.setString(1,person.getName()) ;pstmt.setString(2,person.getPassword()) ;pstmt.setInt(3,person.getAge()) ;pstmt.setString(4,person.getEmail()) ;pstmt.setString(5,person.getId()) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}}// 删除操作public void delete(String id) throws Exception{String sql = "DELETE FROM person WHERE id=?" ; PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ; pstmt.setString(1,id) ;// 进行数据库更新操作pstmt.executeUpdate() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}}// 按ID查询操作public Person queryById(String id) throws Exception {Person person = null ;String sql = "SELECT id,name,password,age,email FROMperson WHERE id=?" ;PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ; pstmt.setString(1,id) ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;if(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;}rs.close() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return person ;}// 查询全部public List queryAll() throws Exception{List all = new ArrayList() ;String sql = "SELECT id,name,password,age,email FROM person" ;PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try{// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;while(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象Person person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;// 将查询出来的数据加入到List对象之中all.add(person) ;}rs.close() ;pstmt.close() ;catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return all ;}// 模糊查询public List queryByLike(String cond) throws Exception {List all = new ArrayList() ;String sql = "SELECT id,name,password,age,email FROM person WHERE name LIKE ? or email LIKE ?" ; PreparedStatement pstmt = null ; DataBaseConnection dbc = null ;// 下面是针对数据库的具体操作try// 连接数据库dbc = new DataBaseConnection() ;pstmt = dbc.getConnection().prepareStatement(sql) ;// 设置模糊查询条件pstmt.setString(1,"%"+cond+"%") ;pstmt.setString(2,"%"+cond+"%") ;// 进行数据库查询操作ResultSet rs = pstmt.executeQuery() ;while(rs.next()){// 查询出内容,之后将查询出的内容赋值给person对象Person person = new Person() ;person.setId(rs.getString(1)) ;person.setName(rs.getString(2)) ;person.setPassword(rs.getString(3)) ;person.setAge(rs.getInt(4)) ;person.setEmail(rs.getString(5)) ;// 将查询出来的数据加入到List对象之中all.add(person) ;}rs.close() ;pstmt.close() ;}catch (Exception e){throw new Exception("操作出现异常") ;}finally{// 关闭数据库连接dbc.close() ;}return all ;}};定义一个数据库连接类,她只负责数据库的连接:Java代码package org.sky.darkness.dbc ;import java.sql.* ;// 主要功能就是连接数据库、关闭数据库public class DataBaseConnection{private final String DBDRIVER ="oracle.jdbc.driver.OracleDriver" ;private final String DBURL ="jdbc:oracle:thin:@localhost:1521:SKY" ;private final String DBUSER = "scott" ;private final String DBPASSWORD = "darkness" ;private Connection conn = null ;public DataBaseConnection(){try{Class.forName(DBDRIVER) ;this.conn =DriverManager.getConnection(DBURL,DBUSER,DBPASSWO RD) ;}catch (Exception e){}}// 取得数据库连接public Connection getConnection(){return this.conn ;}// 关闭数据库连接public void close(){try{this.conn.close() ;}catch (Exception e){}}};。
JSP学习笔记Java相关课程系列笔记之十笔记内容说明JSP(程祖红老师主讲,占笔记内容100%);目录一、JSP基础 (1)1.1什么是JSP (1)1.2为什么要使用JSP (1)1.3 JSP与Servlet的关系 (1)1.4如何写一个JSP文件 (1)1.5 JSP是如何运行的 (1)1.6隐含对象 (2)1.7指令 (2)1.8 JSP注释 (3)1.9案例:创建emplist.jsp页面,将表示逻辑交给JSP处理 (3)二、JSP标签和EL表达式 (4)2.1什么是JSP标签 (4)2.2 JSTL及其使用 (4)2.3什么是EL表达式 (4)2.4 EL表达式的使用 (4)三、JSTL中的几个核心标签 (7)3.1 if (7)3.2 choose (7)3.3 forEach (7)3.4 url (8)3.5 set (8)3.6 remove (8)3.7 catch (8)3.8 import (8)3.9 redirect (8)3.10 out (8)3.11 JSP标签是如何运行的 (8)3.12案例:将员工列表中的Java代码改为JSP标签,并添加分页 (9)四、自定义标签 (10)4.1如何写一个自定义标签 (10)4.2 JavaEE5.0中,如何使用EL表达式和JSTL (10)4.3案例:自定义标签 (10)4.4案例:修改之前员工列表中的日期显示 (11)五、MVC (13)5.1什么是MVC (13)5.2使用MVC的目的 (13)5.3如何使用MVC来开发一个Web应用程序(JavaEE) (13)5.4 MVC的优缺点 (13)5.5案例:简易贷款(贷款数小于余额数*10) (13)5.6修改5.5案例,使用户无法直接访问view.jsp页面 (15)1一、JSP基础1.1什么是JSPJSP(Java Server Page)是Java服务器端动态页面技术。
第6章 JSP数据库开发由于历史等原因,Internet上连接的数据库大多数在使用的硬件平台、操作系统或数据库管理系统等方面各不相同,如何对这些异构数据库进行查询和使用就成了首要问题。
JDBC (Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
有了JDBC,Java程序员就可以为不同的数据库编写相同的程序。
本章的内容,需要读者已经学习了数据库原理和SQL语言。
6.1 JDBC简介6.1.1 从ODBC到JDBCInternet上大量信息必须通过数据库系统才能有效管理。
由于历史等原因,Internet上的数据库系统不少是异构的。
为了在Internet环境下,基于异种系统平台实现对异构数据库的查询和联合使用,必须提供一个独立于特定的数据库管理系统的统一编程界面。
微软公司很早就提出了数据库访问接口标准,即开放数据库互连(Open Database Connectivity,ODBC)的概念,它建立了一组规范,并提供了一组对数据库访问的标准API (应用程序编程接口),这些API利用SQL来完成其大部分任务。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。
也就是说,不论是MySQL、SQL Server、Access还是Oracle数据库,均可用ODBCAPI进行访问。
由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
目前,Microsoft 的ODBC API 可能是使用最广的、用于访问关系数据库的编程接口。
它能在几乎所有平台上连接几乎所有的数据库。
但是ODBC 不适合直接在Java 中使用,因为它使用C 语言接口。
JSP个人博客系统(SQL数据库)摘要博客信息管理系统致力于为广大用户提供优质的互动交流平台,提高网站的知名度和访问量,从而获得为企业提供更多产品介绍及展示的机会,提升自己网站的价值。
为了满足博客信息管理系统的要求,实现系统静态与动态页面的相互分离,系统采用JSP+JavaBean+Servlet和SQL Server2000数据库相结合的开发模式。
论文首先论述了系统的开发背景和设计目标,并对系统开发所采用的技术进行相应的简单介绍。
在系统分析中,对系统的模型进行简单分析,明确系统的操作流程,并对系统进行可行性分析,确定在目前的条件下,开发博客信息管理系统是可行的。
在需求分析结果的基础上,对系统的功能模块进行划分。
接着对系统中的数据库进行模型设计,包括数据流图、实体联系图及数据表结构。
在系统的设计与实现中,确定系统的开发思想以及开发环境,并对系统中的JavaBean和Servlet代码进行设计。
最后给出了系统中模块的详细设计与实现,并对系统模块涉及到的关键源代码进行了详细的分析。
经过调试运行后表明,系统可以满足用户创建个人博客的各项要求。
关键词:MVC,设计模式,知识共享,博客信息管理系统ABSTRACTThe blog information management system is concentrates on high-quality interactive exchanges platform for a large number of users, increasing the visits and making the website more and more famous, thereby can acquiring for the opportunity that business enterprise providing more introductions and shows of products, promoting the value of the website.Satisfy for the functions of blog information management system, achieving the system's static page separate with dynamic page mutually, using JSP+ JavaBean+ Servlet with the mode ofdevelopment that the database of SQL Server2000 combine together.The paper discusses the background of development of the system and the design of the target first, and introduces the tecknique which used to develop simply.In the analyse of system, proceeded the simple analysis to the model of the system, made sure the operation process of the system, proceed the analyse to the system, ensure that under the current term, developing blog information management system is feasible. At the foundation of requirement with the analyse result, proceeding the providing of the function module of the system. Follow, designing the database model, including the data flow diagram, entity relation diagram and data tables. during the design and realization of the system, making sure the development thought of the system and install the environment of development,at last show the design details with realize finally an a key for of detailed design with realization, and analyzed the program which relate to the system module.After debugging and running ,it shows that the system can satisfy with users to create personal blog.Keywords: MVC,Design Patterns,Knowledge sharing,The Blog Information Management System目录第1章绪论 11.1 博客信息系统概述 11.2 博客发展趋势 21.3 系统开发的背景 21.4 技术路线 31.5 系统设计目标分析 3第2章基本技术方案 42.1 JSP中的各种技术 42.1.1 JSP概述 42.1.2 SERVLET概述 42.1.3 JAVABEAN概述 52.2 基于B/S的WEB应用体系结构 5 2.2.1 传统的两层体系结构 52.2.2 三层体系结构 62.2.3 JSP网站开发模式 62.3 ECLIPSE简介 72.4 TOMCAT简介 72.5 SQL SERVER简介 82.6 MVC设计模式 8第3章系统分析与总体设计 103.1 系统需求分析 103.1.1 用户需求分析 103.2 数据分析 113.3 系统流程 113.4 功能模块划分 143.5 功能模块介绍 153.5.1 博客注册登录管理模块 153.5.2 博客及文章检索查询模块 153.5.3 博客页面显示模块 163.5.4 博客个人维护管理模块 16 第4章系统详细设计 174.1 数据库分析 174.1.1 数据库设计E-R图 174.2 系统数据表设计 204.3 数据连接 23第5章系统功能的具体实现 24 5.1 系统的主窗口 245.2 公共核心类的设计 265.2.1 数据库相关 265.2.2 编写JAVABEAN类 28 5.2.3 管理类设计 295.3 系统主要功能模块详述 31 5.3.1 博客管理员登陆模块 31 5.3.2 日志管理显示模块 325.3.3 撰写日志模块 355.3.4 删除日志模块 365.3.5 修改日志模块 385.3.6 日志搜索模块 39结论 40参考文献 41致谢 42第1章绪论1.1 博客信息系统概述“博客”(Blog或Weblog)一词源于“Web Log(网络日志)”的缩写,是一种十分简易的傻瓜化个人信息发布方式。
JSP 学习笔记 8.18.2012 1. JSP 简介 1)JSP 全称是 Java Server Pages——java 服务页面。
jsp 最终是翻译为 servlet 使用的。
2)Jsp 是一种动态 web 资源开发技术:因为 jsp 中允许编写 java 代码,并且允许获取 request、response 等常用 web 开发对象,实现与浏览器交互,所以称 jsp 为动态 web 资源开发技术。
3)jsp 实例 1:输出当前时间(day0812) 分析:jsp 会转为 servlet 去执行,其中 jsp 页面中的 html 元素会在 service 方法中 的 out.write()中输出,而其中的 java 代码将原样呈现为 java 代码。
2. JSP 最佳实践 Servlet 作为 web 应用中的控制器组件,jsp 作为数据显示模版。
IE 将请求发给 servlet,servlet 处理数据以后通过请求转发(forward)技术转发到 jsp 做显示输出。
此时 servlet 及其转向的 jsp 页面共享同一个请求,在 servlet 中通 过 req.setAttribute(“data”);将数据传给 request 域,然后再 forward 就可以将 request 转发过去。
3. Jsp 语法 1)Jsp 模版元素 jsp 页面中的 html 内容,定义了网页的结构和外观。
2)jsp 脚本表达式(expression)用于将程序数据输出到客户端 语法:<%=变量或表达式 %> Jsp 中向页面输出数据的方法: 使用 jsp 的内置对象 out 输出:out.write(date); 使用脚本表达式输出:<%=date %> 3) jsp 脚本片段(scriptlet)用于在 jsp 页面中嵌入多行 java 代码。
语法: <% 多行 java 代码 %> 多个脚本片段中的代码可以互相访问。
《JSP笔记》之十第七章JSP中使用数据库在本章中,我们使用SQL Server 2000数据库管理系统。
特别约定,建立新的数据库名为:student,在其下创建表:表1:student;表2:login 。
§7.1 SQL Server 2000数据库管理系统§7.2 JDBCJDBC是Java数据库连接API,它由一些Java类和接口组成。
在JSP中可以使用JDBC 实现对数据库中表记录的查询、修改、插入和删除等操作。
JDBC技术在JSP开发中占有很重要的地位。
经常使用JDBC进行如下操作:1.与一个数据库建立连接2.向已连接的数据库发送SQL语句3.处理SQL语句返回的结果§7.3 数据库连接的常用方式应用程序必须首先与数据库建立连接。
本节介绍常用的两种连接方式:建立JDBC-ODBC桥接器和加载纯Java数据库驱动程序。
§7.3.1 JDBC-ODBC桥接器使用JDBC-ODBC桥接器方式与数据库建立连接,要经过:创建ODBC数据源――>建立JDBC-ODBC桥接器――>和ODBC数据源指定的数据库建立连接共3个步骤。
1.创建ODBC数据源:步骤见教材,这里规定:数据源名:student,数据库名:student, 用户名:sa 密码:sa。
2.建立JDBC-ODBC桥接器为了连接student数据源的student数据库,首先要建立一个JDBC-ODBC桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);这里,Class是包ng中的一个类,该类通过调用它的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。
建立桥接器时可能发生异常,因此捕获这个异常。
所以建立桥接器的标准语句是:try{Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);}Catch(ClassNotFoundException e){out.println(e)}3.与ODBC数据源指定的数据库建立连接编写连接数据库的Java代码不会出现数据库的名称,只能出现数据源的名字。
先使用java.sql包中的Connection类声明一个连接对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个对象:Connection con=DriverMagager.getConnection(“jdbc:odbc:数据源名字”,”login name”,”password”);其中login name 和password 是建立数据源时所使用的用户名和密码。
建立连接时应捕获SQLException异常:try{Connection con=DriverManager.getConnection(“jdbc:odbc:student”,”sa”,”sa”);}catch(SQLException e){out.println(e);}这样就与数据源student建立了连接。
应用程序一旦与某个数据源建立连接,就可以通过SQL语句与该数据源所指定的数据库中的表交互信息,如查询、修改、更新表中的记录。
下例中是一个简单的JSP页面,该页面中的Java程序片代码负责连接到数据源student,查询该数据源中的数据库student中的表student的全部记录。
例1用JDBC-ODBC连接数据库,并显示表student中的全部记录。
chap9-1(odbc).jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><HTML><BODY><%Connection con;Statement sql;ResultSet rs;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){out.println(e);}try {con=DriverManager.getConnection("jdbc:odbc:student","sa","sa");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM student");%><Table Border bgcolor="#CCFFFF"><TR><TH width=100><font face="宋体">学号</font><TH width=100><font face="宋体">姓名</font><TH width=50><font face="宋体">学分</font></TR><%while(rs.next()){%><TR><TD ><div align="center"><%=rs.getString(1)%></div></TD><TD ><div align="center"><%=rs.getString(2)%></div></TD><TD ><div align="center"><%=rs.getInt(3)%></div></TD></TR><% }%></Table><% con.close();}catch(SQLException e1) {}%></BODY></HTML>§7.3.2 使用纯Java数据库驱动程序方式实现连接用Java语言编写的驱动程序称为纯Java驱动程序。
简单地说,JDBC可以调用本地的纯Java驱动程序和相应的数据库建立连接。
这种连接数据库方式要经过2个步骤:加载纯Java驱动程序->与指定的数据库连接。
1.加载纯Java驱动程序:这种方式下不需要设置数据源,由于不依赖于ODBC,使得应用程序具有很好的移植性。
目前,许多数据库厂商都提供了自己的相应的纯Java驱动程序。
当使用纯Java驱动程序访问数据库时,必须要保证在连接数据库的应用程序所驻留的计算机上安装相应DBMS提供的纯Java驱动程序。
比如,Tomcat服务器上的某个Web应用程序想访问SQKServer2000数据库管理系统所管理的数据库,Tomcat服务器所驻留的计算机上必须要安装SQLServer 2000提供的纯Java驱动程序。
我们这里,使用的是MS SQL Server 2000数据库管理系统。
所以需要把该厂商提供的jar包:mssqlserver.jar、msutil.jar、msbase.jar挎贝到Java的jre\lib\ext中,或复制到Tomcat 服务器安装目录的文件夹的common\lib中。
准备好了后,加载纯Java驱动程序:try{Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();}catch(Exception e){out.println(e);}2.和指定的数据库建立连接假设应用程序要与SQL Server 数据库服务器管理的数据库student建立连接,而有权访问数据库student的用户的id和密码分别是sa、sa,那么建立连接的代码如下:try{String url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student”;String user=”sa”;String password=”sa”;con=DriverManager.getConnection(url,user,password);}catch(SQLException e){out.println(e);}下面的例子是采用纯Java数据库驱动程序方式来实现上一个例题的例子。
例2使用纯Java数据库驱动方式显示表中的全部记录chap9-2(jdbc).jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><HTML><BODY><%Connection con;Statement sql;ResultSet rs;try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();}catch(Exception e){out.print(e);out.print("***************");out.print("<br>");}try{String url;url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";String user="sa";String password="sa";con=DriverManager.getConnection(url,user,password);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM student");%><CENTER><TABLE border="" bgcolor="#74bbc0"><TBODY><TR><TH width="100">学号</TH><TH width="100">姓名</TH><TH width="50">学分</TH></TR><%while(rs.next()){%><TR align="center"><TD><%=rs.getString(1)%></TD><TD><%=rs.getString(2)%></TD><TD><%=rs.getInt(3)%></TD></TR><%}%></TBODY></TABLE></CENTER><%con.close();}catch(SQLException e1){out.println(e1);}%></BODY></HTML>§7.3.3 关闭与数据库的连接当程序不再使用与数据库的连接时,应使用Connection对象的close方法关闭与数据库的连接。