JDBC新闻管理系统增删改查监听器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简介:(1)JDBC新闻管理系统--(2)有cookie和session的设置--(3)有增删改查的管理--(4)有在线文本编辑器的应用--(5)有图片上传的功能--(6)有EL表达式和JSTL的使用--(7)有监听器的使用--(8)过滤器的使用ps:我是一只爱刘诗诗的小狮子基类包--连接数据库1、BaseDao类packagecommon.dao;importjava.sql.*;importcom.dao.util.ConfigManager;importcommon.*;publicclassBaseDao{//数据库操作通用类protectedConnectionconn;/**定义静态变量接收加载驱动*/privatestaticStringdriver;/**定义静态变量得到连接*/privatestaticStringurl;privatestaticStringuserName;//数据库用户名privatestaticStringpassword;//数据库密码//静态的Connection对象static{driver=ConfigManager.getInstance().getString(driver);url=ConfigManager.getInstance().getString(url);userName=ConfigManager.getInstance().getString(userName);password=ConfigManager.getInstance().getString(password);}protectedResultSetrs;protectedStatementstmt;protectedPreparedStatementps;//获取链接的方法publicbooleangetConnection(){if(conn!=null){//判断连接对象是否为空returnfalse;}try{Class.forName(driver);//加载驱动//根据url,用户名和密码获取链接获取的是connection对象conn=DriverManager.getConnection(url,userName,password);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returntrue;}//增删改的方法子类可以调用这个方法帮助执行sql语句publicintexecute(Stringsql,Object[]params){try{PreparedStatementps=conn.prepareStatement(sql);//预编译传过来的sql语句if(params!=null){//如果子类传过来的参数不为空的话遍历循环判断使参数兼容for(inti=0;iparams.length;i++){//遍历参数数组Objectobj=params[i];//参数是Object类型的所以Object先接收然后判断if(objinstanceofString){ps.setString((i+1),(String)obj);//如果该参数是String类型的就强转设置数组的的该位置元素是String类型}elseif(objinstanceofInteger){ps.setInt((i+1),(Integer)obj);}elseif(obj==null){//这样判断一下因为有图片传入判断不了类型obj=;//赋值为空ps.setString((i+1),(String)obj);//默认设置为String类型}}}intcount=ps.executeUpdate();returncount;}catch(SQLExceptione){e.printStackTrace();return0;}}//获取结果集的方法publicResultSetexcuteSql(Stringsql,Object[]params){try{rs=stmt.executeQuery(sql);for(inti=0;iparams.length;i++){if(params[i]instanceofString){ps.setString((i+1),(String)params[i]);}elseif(params[i]instanceofInteger){ps.setInt((i+1),(Integer)params[i]);}}}catch(SQLExceptione){e.printStackTrace();}returnrs;}//关闭资源的方法publicvoidcloseResource(Connectionconn,Statementstmt,ResultSetrs){try{if(rs==null){rs.close();rs=null;}if(stmt==null){stmt.close();stmt=null;}if(conn==null){conn.close();}}catch(SQLExceptione){e.printStackTrace();}}//方法重载如果需要关闭几个资源就选择哪个方法publicvoidcloseResource(Connectionconn){if(conn==null){try{conn.close();}catch(SQLExceptione){e.printStackTrace();}}}}2、配置数据库的database.properties#驱动oracledriver=oracle.jdbc.driver.OracleDriver#MyOracle在tnsname下可以找到这个名字url=jdbc:oracle:thin:@localhost:1521:MyOracle#用户名userName=liftmine#密码password=liftpwd3、ConfigManager类packagecommon.util;importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;/***构造数据库访问的工具类用于读取配置文件*@authorAdministrator**/publicclassConfigManager{privatestaticConfigManagerconfigManager;//自身对象privatestaticPropertiesproperties;//读取配置文件类//在构造工具类时,进行配置文件的读取privateConfigManager(){//私有的构造方法StringconfigFile=database.properties;//定义配置文件路径properties=newProperties();//定义Properties对象//将文件读取成流的方法--加载获得资源流InputStreamin=ConfigManager.class.getClassLoader().getResourceAsStream(configFile);try{properties.load(in);//加载流里面的数据读到配置文件中去in.close();}catch(IOExceptione){e.printStackTrace();}}//因为构造方法是私有的所以通过这个方法实例化一个对象//设置实例化对象的个数publicstaticConfigManagergetInstance(){if(configManager==null){//如果自身对象为空就实例化一个对象configManager=newConfigManager();}returnconfigManager;}//通过key获得对应的value到配置流里面读取指定的数据publicStringgetString(Stringkey){returnproperties.getProperty(key);}}---------分割线--------------------数据访问层的接口及实现1、NewsDao接口packagecommon.dao;importjava.util.List;importcommon.dto.NewsDto;importcommon.dto.PageDto;importcommon.*;publicinterfaceNewsDao{publicListNewsDtogetNewsList(PageDtopagedto)throwsException;//获得新闻集合的方法--所有信息//增加一条新闻信息publicintinsertNews(NewsDtoinsertNews)throwsException;//根据新闻编号删除新闻publicintdelete(StringnewsId)throwsException;//修改信息--传入的是新闻对象publicintupdate(NewsDtonews)throwsException;//根据新闻编号查找新闻publicNewsDtoquery(StringnewsId)throwsException;//获得总记录的方法publicintgetAllRowCount()throwsException;}2、实现NewsDao接口的实现类--NewsDaoImplpackagecommon.dao.impl;importjava.sql.*;importjava.sql.Date;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importcommon.dao.BaseDao;importcommon.dao.NewsDao;importcommon.dto.NewsDto;importcommon.dto.PageDto;importcommon.*;/***这是一个实现类NewsDaoImpl继承了BaseDao类实现了NewsDao类**/publicclassNewsDaoImplextendsBaseDaoimplementsNewsDao{//1、查询所有信息返回一个带有泛型的集合publicListNewsDtogetNewsList(PageDtopagedto)throwsClassNotFoundException,SQLException{//定义一个集合集合是对应的要返回出去的泛型集合ListNewsDtonewsList=newArrayListNewsDto();super.getConnection();//获得连接通过父类的方法//pagedto.setPageIndex(1);//默认显示第一页}Stringsql=select*from(selectn.*,rownumrnfrom(select*fromnewsorderbynewslastdate)n)newswherern=?andrn?;ps=conn.prepareStatement(sql);//预编译sql语句intstart=pagedto.getStartIndex();//分页查询开始intend=pagedto.getEndIndex();//分页查询结束ps.setInt(1,start);//设置第一个参数的值ps.setInt(2

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功