版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务二新闻发布系统-搭建开发环境实验指导手册实验1:JDK与Tomcat安装过程实验目的:1.掌握JDK的安装与环境变量的配置过程;2.掌握Tomcat的安装过程、启动方法与测试方法。实验步骤:安装JDK(1)获取JDK安装程序在Oracle官网下载Windows系统的JDK8安装包,下载地址:注意选择适合自己操作系统的安装包,如图1-1所示。图1-1下载JDK8安装包(2)下载好安装包后,直接双击安装包,进入安装界面,如图1-2所示:图1-2安装界面(3)设置安装路径,如图1-3所示:图1-3设置安装路径单击“更改”按钮,可以修改安装路径。单击“下一步”按钮,安装JDK。在这个步骤中可以在可选安装列表框中选择要安装的内容。(4)安装JRE在安装完JDK后会弹出JRE安装窗口(此处需要注意,修改安装路径必须和jdk在同一目录下,而不是安装在jdk目录下),单击“下一步”按钮进行安装,如图1-4所示。图1-4JRE安装窗口继续单击“下一步”按钮,直到安装完成。小提示从JDK9开始,JRE随JDK自动安装,不再需要单独安装。例如,当使用MSI可执行安装包安装JDK17时,不会出现安装JRE的提示,因为JDK17既包含开发Java应用程序所需的组件,也包含JRE。这意味着,在安装完JDK17后,就已经拥有了完整的Java开发和运行环境,无须再单独安装JRE。配置环境变量安装完JDK后,配置JDK环境变量可以实现在任意目录下运行JDK相关命令。(1)右击“计算机”图标,在弹出的菜单中选择“属性”。(2)点击“高级系统设置”,在“系统属性”对话框中选择“高级”选项卡,然后单击“环境变量”按钮,弹出“环境变量”对话框。如图1-5所示。图1-5环境变量配置窗口(3)在“环境变量”对话框中,新建或编辑下面四个环境变量,然后点击“确定”按钮关闭对话框。环境变量名环境变量值JAVA_HOME JDK的安装路径(如:D:\Java\jdk1.8.0_241)JAVA_DOCS%JAVA_HOME%\docs(可选项)CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarPath .;%JAVA_HOME%\bin图1-6“编辑系统变量”对话框在“环境变量”对话框的“系统变量”下,找到并单击“Path”变量,单击“编辑”按钮,然后单击“新建”按钮,添加%JAVA_HOME%\bin到变量值中。最后,单击“确定”按钮保存所做更改,如图1-7所示。图1-7添加变量值(4)打开命令提示符窗口,输入“java–version”命令并执行,测试JDK安装结果。如果显示版本号,说明JDK安装成功,如图1-8所示。图1-8JDK安装成功3.Tomcat安装与启动下载Tomcat安装包,Tomcat安装包是ZIP格式的压缩包,下载后直接解压即可使用。(1)安装直接解压Tomcat软件包,注意路径不要包含中文,如图1-9所示:图1-9Tomcat目录结构主要的子目录及其作用如表1-1所示。表1-1Tomcat主要的子目录及其作用目录作用/bin存放启动和关闭Tomcat的脚本文件/conf存放Tomcat服务器的各种配置文件及相关的文档类型定义(DocumentTypeDefinition,DTD)/lib存放Tomcat服务器运行所需的各种JAR文件/logs存放Tomcat的日志文件/temp存放Tomcat运行时产生的临时文件/webapps当发布Web应用程序时,通常把Web应用程序的目录及文件放到这个目录下/work存放JSP生成的Servlet源文件和字节码文件(2)启动Tomcat在Tomcat安装目录下的bin子目录中,有一些批处理文件(以.bat为扩展名的文件),其中startup.bat就是启动Tomcat的脚本文件,双击startup.bat,启动Tomcat。Tomcat启动窗口如图1-10所示。图1-10Tomcat启动窗口小提示1.如果Tomcat启动信息中中文乱码,可以修改conf子目录中的perties文件,将文件中java.util.logging.ConsoleHandler.encoding=UTF-8这行代码的UTF-8改为GBK,修改后这一行代码为java.util.logging.ConsoleHandler.encoding=GBK。保存修改,重新启动Tomcat,启动信息中中文即正常显示。2.如果8080端口号被占用,可以选择关闭占用端口号的程序,也可以修改Tomcat的端口号,修改方法为:修改conf子目录中的server.xml文件,将下面代码的port修改为8088。<Connectorport="8088"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>保存修改,重新启动Tomcat。3.如果Tomcat启动后闪退,请检查JDK环境变量的配置。(3)检测启动状态启打开浏览器,在地址栏中输入http://localhost:8080。其中,localhost表示本地机器,8080是Tomcat默认监听的端口号。所示,说明Tomcat启动成功,可以正常使用。图1-11通过浏览器验证Tomcat启动成功
实验2在IntellijIDEA企业版环境下创建并运行Web项目实验目的:1.掌握IntellijIDEA下载与安装方法;掌握IntellijIDEA配置方法;掌握IntellijIDEA环境下新建并运行web项目的方法。实验步骤:1.下载并安装IDEA在JetBrains官网下载IDEA安装包,双击安装包开始安装。IDEA安装过程比较简单,进入安装界面后,根据个人需要选择安装位置,一直单击“Next”按钮进行安装,安装完成后单击“Finish”按钮即可,如图2-1所示。图2-1IDEA安装完成界面2.新建Web项目并配置JDK和Tomcat新建JavaWeb项目并基于新建项目配置JDK和Tomcat。第一种方法:(1)打开IDEA,在IDEA菜单中选择新建项目的命令,在弹出的对话框中选择左侧的“JavaEnterprise”选项,输入项目名称,选择项目所在磁盘路径,项目模版(Projecttemplate)选择“Webapplication”,单击项目服务器(Applicationserver)选项右侧的“New”按钮,在弹出的对话框中选择本地解压的Tomcat目录,单击“OK”按钮,如图2-2所示。图2-2新建项目并配置Tomcat(2)单击“ProjectSDK”选项的下拉按钮,选择“AddSDK”选项,选择JDK的安装目录,单击“OK”按钮,如图2-3所示。图2-3配置JDK配置完成后,新建项目各项信息如图2-4所示。图2-4新建项目各项信息(3)图2-5项目结构(4)在图2-18所示界面左下方的Tomcat信息中可以看出项目javaeepro已经部署到了Tomcat服务器。单击左下方的绿色三角形按钮,可以启动Tomcat,启动信息如图2-6。图2-6Tomcat启动信息第二种方法:(1)创建一个普通的Java项目新建Java项目后的目录结构如下图所示:(2)右键单击项目名,在快捷菜单中单击AddFrameworkSupport。勾选WebApplication选项,单击OK创建后项目目录如下图所示。(3)配置项目,单击File菜单下ProjectStructure配置项目编译输出路径(也可以不更改默认路径)(4)配置Tomcat添加服务器配置(配置完成后可以先单击“apply”按钮,再单击“OK”按钮)部署项目提示:Artifact是maven中的一个概念,表示某个module要如何打包,一个module有了Artifacts就可以部署到应用服务器中了!默认情况下,IDEA的Modules和Artifacts的output目录已经设置好了,不需要更改。
打成war包的时候会自动在WEB-INF目录下生产classes目录,然后把编译后的文件放进去。(5)设置运行项目浏览器3.测试运行项目(1)打开index.jsp文件,将<body></body>标记之间内容修改为“我的第一个web项目!”,单击运行的绿色三角。(2)浏览器显示运行结果
实验3IDEA环境下安装通义灵码实验目的:掌握IDEA环境下安装通义灵码的方法实验步骤:安装通义灵码方法1:从插件市场安装。打开IntelliJIDEA设置窗口,在插件市场中搜索“TONGYILingma”,找到通义灵码后单击安装。方法2:下载安装包安装。登录通义灵码官网下载zip安装包。下载完成后,打开IntelliJIDEA设置窗口,在插件管理下拉菜单中单击“Installed”右侧按钮,在下拉菜单中选择“InstallPluginfromDisk...”从本地安装插件,选择下载的zip安装包后安装,如图所示。2.登录通义灵码安装通义灵码之后重启IntelliJIDEA,单击导航条的通义灵码选项,在通义灵码助手的窗口单击“登录”按钮,前往登录页面。通义灵码个人版开发者可以使用阿里云账号登录通义灵码IDE端所示。
实验4:MySQL的下载、安装、配置与连接实验目的:1.掌握MySQL的下载、安装与配置方法;2.掌握MySQL连接方法。实验步骤:1.下载、安装MySQL(1)在MySQL官网下载MySQL安装包。下载页面如图4-1所示,建议下载MSI格式的完整安装包(第二项)。(2)双击下载好的安装包进行安装。选择安装类型为“Custom”(自定义安装),单击“Next”按钮,如图4-2所示。(3)ToBeInstalled”列表框,如图4-3所示。图4-1MySQL安装包下载页面图4-2选择安装类型图4-3选择安装MySQLServer(4)单击“Next”按钮之后,建议自定义安装路径,单击“Execute”按钮执行安装。等到安装状态Status变成Complete,单击“Next”按钮进入配置阶段。在配置阶段,注意使用MySQL默认端口3306,然后进入密码配置阶段。在此阶段需要输入两遍密码,此密码是MySQL管理员用户root的登录密码,请记牢。密码配置如图4-4所示。图4-4密码配置(5)继续单击“Next”按钮,直到安装完成。小提示如果在安装过程中检测发现当前计算机系统环境缺少MySQL的依赖软件,会自动出现在线下载安装系统依赖项的选项,直接单击“Execute”按钮安装依赖项,然后单击“Next”按钮进入下一步操作,继续安装MySQL。2.连接MySQL安装完成MySQL之后,可以使用MySQL数据库管理工具来连接MySQL。可以使用MySQL自带的图形化管理工具MySQLWorkbench来连接MySQL服务器。(1)在系统菜单里找到并打开MySQLWorkbench,如图4-5所示。图4-5MySQLWorkbench(2)单击图2-28所示界面中“MySQLConnections”后面的按钮来创建MySQL连接,输入连接名、root用户的连接密码等信息,如图4-6所示。图4-6创建MySQL连接(3)主界面,如图4-7所示。在其中输入SQL查询命令,单击按钮即可查看运行结果。图4-7MySQLWorkbench主界面
实验3-1应用JDBC实现新闻信息添加实验目的:1.掌握JDBC工作原理;掌握JDBC常用类和应用程序接口及其功能;掌握应用JDBC技术连接MySQL数据库的步骤。实验步骤:1.新建实体类News打开IntelliJIDEA,在项目newspro的cn.sdcet.entity包下新建Java实体类News,类代码如下所示。packagecn.sdcet.entity;publicclassNews{
privateintn_id;
privateStringn_title;
privateStringn_content;
privateintt_id;
privateStringn_publishtime;
privateStringn_source;
publicNews(){
}
publicNews(intn_id){
this.n_id=n_id;
}
publicNews(intn_id,Stringn_title,Stringn_content,intt_id,String
n_publishtime,Stringn_source){
this.n_id=n_id;
this.n_title=n_title;
this.n_content=n_content;
this.t_id=t_id;
this.n_publishtime=n_publishtime;
this.n_source=n_source;
}
publicNews(Stringn_title,Stringn_content,intt_id,Stringn_publishtime,
Stringn_source){
this.n_title=n_title;
this.n_content=n_content;
this.t_id=t_id;
this.n_publishtime=n_publishtime;
this.n_source=n_source;
}
publicintgetN_id(){
returnn_id;
}
publicvoidsetN_id(intn_id){
this.n_id=n_id;
}
publicStringgetN_title(){
returnn_title;
}
publicvoidsetN_title(Stringn_title){
this.n_title=n_title;
}
publicStringgetN_content(){
returnn_content;
}
publicvoidsetN_content(Stringn_content){
this.n_content=n_content;
}
publicintgetT_id(){
returnt_id;
}
publicvoidsetT_id(intt_id){
this.t_id=t_id;
}
publicStringgetN_publishtime(){
returnn_publishtime;
}
publicvoidsetN_publishtime(Stringn_publishtime){
this.n_publishtime=n_publishtime;
}
publicStringgetN_source(){
returnn_source;
}
publicvoidsetN_source(Stringn_source){
this.n_source=n_source;
}
@Override
publicStringtoString(){
returnthis.n_title;
}}2.创建接口NewsDao在项目newspro的cn.sdcet.dao包下新建接口NewsDao,在接口中定义添加新闻的抽象方法add()。详细代码如下。packagecn.sdcet.dao;importcn.sdcet.entity.News;public
interfaceNewsDao{
publicBooleanadd(Newsnews);}3.创建BaseDao在项目newspro的cn.sdcet.utils包下新建BaseDao,详细代码如下。privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";// privatestaticfinalStringURL="jdbc:mysql://localhost:3306/news_2023";// privatestaticfinalStringUNAME="root";// privatestaticfinalStringUPWD="123456";//根据个人情况修改密码 protectedConnectioncon;// protectedPreparedStatementpstm;// protectedStatementstmt;// protectedResultSetrs;////创建数据库连接的方法 protectedvoidgetConnection()throwsException{ Class.forName(DRIVER); con=DriverManager.getConnection(URL,UNAME,UPWD); }//创建关闭连接对象的方法 protectedvoidcloseAll(){ if(rs!=null){ try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(pstm!=null){ try{ pstm.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(stmt!=null){ try{ stmt.close(); }catch(SQLExceptione){ e.printStackTrace(); } } try{ if(con!=null&&con.isClosed()==false){ con.close(); } }catch(SQLExceptione){ e.printStackTrace(); } }4.创建实现类NewsDaoImpl在项目源代码cn.sdcet.dao.impl包中新建实现类NewsDaoImpl(继承自BaseDao类),实现方法add(),该方法用于将新闻信息添加到数据库表中。详细代码如下。publicclassNewsDaoImplextendsBaseDaoimplementsNewsDao{@OverridepublicBooleanadd(Newsnews){Booleanflag=false;Stringsql="insertintonrc_news(n_title,n_content,t_id,n_publishtime,
n_source)value(?,?,?,?,?)";try{super.getConnection();pstm=con.prepareStatement(sql);//pstm.setInt(1,news.getT_id());pstm.setString(1,news.getN_title());pstm.setString(2,news.getN_content());pstm.setInt(3,news.getT_id());pstm.setString(4,news.getN_publishtime());pstm.setString(5,news.getN_source());i=pstm.executeUpdate();
if(i>0){
flag=true;
}}catch(Exceptione){e.printStackTrace();}finally{super.closeAll();}returnflag;}5.创建测试类,测试添加新闻功能在cn.sdcet.dao包下新建测试类TestNews,测试添加新闻功能,代码如下。publicclassTestNews{publicstaticvoidaddNews(){System.out.println("******添加新闻*********");System.out.println("请输入新闻标题:");Scannersc=newScanner(System.in);Stringntile=sc.nextLine();System.out.println("请输入新闻内容:");Stringcontent=sc.nextLine();System.out.println("请输入新闻类别编号:");inttid=sc.nextInt();System.out.println("请输入新闻发布时间:");StringpublishTime=sc.next();sc.nextLine();//读取换行符System.out.println("请输入新闻来源:");Stringsource=sc.nextLine();Newsnews=newNews(ntile,content,tid,publishTime,source);Booleanbool=newNewsDaoImpl().add(news);if(bool){System.out.println("添加新闻成功!");}else{System.out.println("添加新闻失败!");}}publicstaticvoidmain(String[]args){addNews();}}执行上述代码,运行结果如图3-6所示。图3-6运行结果
实验3-2应用数据库连接池实现新闻信息修改实验目的:理解数据库连接池的工作原理;掌握常用的数据库连接池及用法;掌握数据库连接池的配置方法;从数据库连接池获取连接以实现更新新闻信息的功能。实验步骤:1.添加Druid的依赖打开IDEA,在newspro项目的pom.xml文件中添加Druid的依赖,依赖内容如下。<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency>添加好依赖后,刷新Maven依赖项,会自动下载好Druid的依赖JAR包,如图3-7所示。图3-7自动下载好的Druid的依赖JAR包2.配置数据源在newspro项目的src/main/resources目录下新建配置文件perties,配置数据源,配置文件内容及相关含义如下。#Druid数据源配置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/news?characterEncoding=utf-8username=root#注意用户名为全小写password=123456#初始化连接数initialSize=5#最小空闲连接数minIdle=5#最大连接数maxActive=20#配置获取连接的最大等待时间maxWait=60000#配置间隔多久进行一次空闲连接的回收timeBetweenEvictionRunsMillis=60000#配置一个连接在池中生存的最短时间minEvictableIdleTimeMillis=3000003.获取连接池的连接在newspro项目源代码的cn.sdcet.util目录下,新建Java类DruidDBUtils,实现从数据库连接池获取连接。代码如下。packagecn.sdcet.util;importcom.alibaba.druid.pool.DruidDataSourceFactory;importjavax.sql.DataSource;importjava.io.FileInputStream;importjava.sql.Connection;importjava.util.Properties;publicclassDruidDBUtils{//静态资源可以被使用publicstaticDataSourceds=null;//资源只需要加载一次,后面可一直使用,直接写在静态代码块里面static{try{//加载连接池配置文件properties的内容到Properties对象中Propertiesprops=newProperties();FileInputStreamfin=newFileInputStream("src\\main\\resources\\
perties");props.load(fin);//创建Druid连接池,使用配置文件中的参数ds=DruidDataSourceFactory.createDataSource(props);if(fin!=null){fin.close();//关闭输入流}}catch(Exceptione){thrownewRuntimeException(e);}}//获取连接池中的连接publicstaticConnectiongetConnection()throwsException{returnds.getConnection();}publicstaticvoidclose(Connectioncon,PreparedStatementpstm){try{if(con!=null){con.close();//将连接释放回连接池}if(pstm!=null){pstm.close();}}catch(SQLExceptionthrowables){throwables.printStackTrace();}}publicstaticvoidclose(Connectioncon,PreparedStatementpstm,ResultSetrs){try{if(con!=null){con.close();}if(pstm!=null){pstm.close();}if(rs!=null){rs.close();}}catch(SQLExceptionthrowables){throwables.printStackTrace();}}publicstaticvoidmain(String[]args){try{Connectionconn=DruidDBUtils.getConnection();if(conn!=null){System.out.println("从连接池获取连接成功!");}}catch(Exceptione){e.printStackTrace();}}}运行上面获取连接的代码,从连接池获取连接成功的效果如图3-8所示。图3-8从连接池获取连接成功的效果4.基于连接池实现新闻信息修改在项目源代码的cn.sdcet.dao.NewsDao接口中,新增更新新闻信息的抽象方法update(),代码如下所示。packagecn.sdcet.dao;importcn.sdcet.entity.News;publicinterfaceNewsDao{publicBooleanadd(Newsnews);publicBooleanupdate(Newsnews);//更新新闻信息}在publicBooleanupdate(Newsnews){Booleanflag=false;Stringsql="updatenrc_newssetn_title=?,n_content=?,t_id=?,n_publishtime=?,
n_source=?wheren_id=?";try{Connectioncon=DruidDBUtils.getConnection();pstm=con.prepareStatement(sql);pstm.setString(1,news.getN_title());pstm.setString(2,news.getN_content());pstm.setInt(3,news.getT_id());pstm.setString(4,news.getN_publishtime());pstm.setString(5,news.getN_source());pstm.setInt(6,news.getN_id());intt=pstm.executeUpdate();if(t>0){flag=true;}}catch(Exceptione){e.printStackTrace();}finally{DruidDBUtils.close(con,pstm);//关闭连接}returnflag;}5.创建测试方法,测试更新新闻信息在函数中调用,实现更新新闻信息。详细代码如下。publicstaticvoidupdateNews(){System.out.println("******更新新闻*********");Scannersc=newScanner(System.in);System.out.println("请输入要更新的新闻编号:");intnid=sc.nextInt();sc.nextLine();//读取换行符System.out.println("请输入更新后的新闻标题:");Stringntile=sc.nextLine();System.out.println("请输入更新后的新闻内容:");Stringcontent=sc.nextLine();System.out.println("请输入更新后的新闻类别编号:");inttid=sc.nextInt();sc.nextLine();//读取换行符System.out.println("请输入更新后的新闻发布时间:");StringpublishTime=sc.nextLine();System.out.println("请输入更新后的新闻来源:");Stringsource=sc.nextLine();Newsnews=newNews(nid,ntile,content,tid,publishTime,source);Booleanbool=newNewsDaoImpl().update(news);if(bool){System.out.println("更新新闻成功!");}else{System.out.println("更新新闻失败!");}}publicstaticvoidmain(String[]args){updateNews();}运行结果如图所示。
实验1访问数据库实验目的:1.掌握如何使用JDBC获取数据库连接;掌握运用JDBC对数据进行增、删、改、查的方法实验步骤:创建一个web项目添加JDBC驱动jar包项目中新建一个测试类,测试类中新建一个main方法,并在main方法中写代码加载并注册驱动程序Class.forName(JDBC驱动类);//mySQL数据库驱动类:com.mysql.jdbc.Driver//sqlserver数据库驱动类:"com.microsoft.sqlserver.jdbc.SQLServerDriver"创建数据库连接对象Connectioncon=DriverManager.getConnection(JDBCURL,数据库用户名,密码);其中JDBCURL连接字符串是固定格式:jdbc:<子协议>:<子名称>以下为mySQL的JDBCURL示例:jdbc:mysql://localhost:3306/news“localhost”代表本机;其它机器用机器名称或IP地址或者直接在JDBCURL中直接指定数据库的字符编码格式,如:"jdbc:mysql://localhost:3306/news_2023?useUnicode=true&characterEncoding=utf8"创建一个Statement或者PrepareStatement对象并执行SQL语句//使用Connection对象创建Statement对象,并执行SQL语句以返回一个ResultSet对象,它包含执行查询后所产生的结果集Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("select*fromnrc_news");//或者创建一个PrepareStatement对象//Stringsql=“select*fromnrc_newswheret_id=?”;//pstm=con.prepareStatement(sql);//pstm.setInt(1,3);//ResultSetrs=pstm.executeQuery();处理结果while(rs.next()){//使用ResultSet对象的next()方法循环遍历结果集intn_id=rs.getInt(1);//方法getXXX提供了获取当前行中某列值的途径Stringn_title=rs.getString(2);Stringn_publishTime=rs.getString(5);System.out.println(n_id+""+n_title+""+n_publishTime);}释放数据库资源if(rs!=null){ try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(pstm!=null){ try{ pstm.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(stmt!=null){ try{ stmt.close(); }catch(SQLExceptione){ e.printStackTrace(); } } try{ if(con!=null&&con.isClosed()==false){ con.close(); } }catch(SQLExceptione){ e.printStackTrace(); }//注意关闭的顺序先ResultSet再Statement或PreparedStatement最后为Connection
实验2封装数据库连接类实验目的:1.掌握如何封闭数据库连接类掌握数据库相关数据的增删改查的方法实验步骤:新建一个类,命名为BaseDao.java定义数据库连接所需属性值或变量 privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";// privatestaticfinalStringURL="jdbc:mysql://localhost:3306/news_2023";// privatestaticfinalStringUNAME="root";// privatestaticfinalStringUPWD="123456";// protectedConnectioncon;// protectedPreparedStatementpstm;// protectedStatementstmt;// protectedResultSetrs;//3.创建数据库连接的方法 protectedvoidgetConnection()throwsException{ Class.forName(DRIVER); con=DriverManager.getConnection(URL,UNAME,UPWD); }4.创建关闭连接对象的方法 protectedvoidcloseAll(){ if(rs!=null){ try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(pstm!=null){ try{ pstm.close(); }catch(SQLExceptione){ e.printStackTrace(); } } if(stmt!=null){ try{ stmt.close(); }catch(SQLExceptione){ e.printStackTrace(); } } try{ if(con!=null&&con.isClosed()==false){ con.close(); } }catch(SQLExceptione){ e.printStackTrace(); } }新建Type类publicclassType{privateintt_id;privateStringt_name;privateStringt_memo;publicType(){}publicType(intt_id,Stringt_name,Stringt_memo){this.t_id=t_id;this.t_name=t_name;this.t_memo=t_memo;}publicintgetT_id(){returnt_id;}publicvoidsetT_id(intt_id){this.t_id=t_id;}publicStringgetT_name(){returnt_name;}publicvoidsetT_name(Stringt_name){this.t_name=t_name;}publicStringgetT_memo(){returnt_memo;}publicvoidsetT_memo(Stringt_memo){this.t_memo=t_memo;}}新建TypeDao类(用于对新闻类型数据表的查询操作)publicclassTypeDaoextendsBaseDao{publicListsearch(){ Listlist=newArrayList(); Stringsql="select*fromnrc_type"; try{ super.getConnection(); pstm=con.prepareStatement(sql); rs=pstm.executeQuery(); while(rs.next()){ Typetype=newType(); type.setT_id(rs.getInt(1)); type.setT_name(rs.getString(2)); type.setT_demo(rs.getString(3)); list.add(type); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ super.closeAll(); } returnlist; }7、使用测试类测试数据库访问与结果数据显示publicclassTest03{publicstaticvoidmain(String[]args)throwsException{TypeDaotypeDao=newTypeDao();ListtypeList=newArrayList();typeList=(ArrayList)typeDao.search();for(inti=0;i<typeList.size();i++){System.out.println(typeList.get(i));}}}运行main方法,查看控制台显示。
实验3数据库操作实验目的:1.掌握数据库新闻数据表增删改查的方法;掌握数据库新闻类别数据表增删改查的方法(自行补充);掌握数据库用户数据库增删改查的方法(自行补充)实验步骤:新建NewsDao接口publicinterfaceNewsDao{ publicList<News>search();//查询所有新闻 publicList<News>search(intt_id);//根据新闻类别ID查询新闻 publicList<News>searchByNtitle(Stringn_title);//根据新闻标题的关键字查询新闻 publicList<News>searchByNcontent(Stringn_content);//根据新闻内容的关键字查询新闻 publicNewssearchByNid(intn_id);//根据新闻ID查询新闻 publicbooleanadd(Newsnews);//添加新闻 publicbooleandelete(intid);//根据新闻ID删除新闻 publicbooleanupdate(Newsnews);//修改新闻}新建NewsDao接口的实现类NewsDaoImplpublicclassNewsDaoImplextendsBaseDaoimplementsNewsDao{}接口实现类NewsDaoImpl实现NewsDao接口中所有的抽象方法publicList<News>search(){//查询所有新闻 List<News>list=newArrayList(); Stringsql="select*fromnrc_news"; try{ super.getConnection(); pstm=con.prepareStatement(sql); rs=pstm.executeQuery(); while(rs.next()){ Newsnews=newNews(); news.setN_id(rs.getInt("n_id")); news.setN_title(rs.getString("n_title")); news.setN_content(rs.getString("n_content")); news.setT_id(rs.getInt("t_id")); news.setN_publishtime(rs.getString("n_publishtime"));news.setN_source(rs.getString("n_source")); list.add(news); } }catch(Exceptione){ e.printStackTrace(); }finally{ super.closeAll(); } returnlist; }//根据新闻类别ID查询新闻 publicListsearch(intt_id){ Listlist=newArrayList(); Stringsql="select*fromnrc_newswheret_id=?"; try{ super.getConnection(); pstm=con.prepareStatement(sql); pstm.setInt(1,t_id); rs=pstm.executeQuery(); while(rs.next()){ Newsnews=newNews(); news.setN_id(rs.getInt(1)); news.setN_title(rs.getString(2)); news.setN_content(rs.getString(3)); news.setT_id(rs.getInt(4)); news.setN_publishtime(rs.getString(5));news.setN_source(rs.getString("n_source")); list.add(news); } }catch(Exceptione){ e.printStackTrace(); }finally{ super.closeAll(); } returnlist; } //根据新闻ID查询新闻publicNewssearchByNid(intn_id){ Newsnews=null; Stringsql="select*fromnrc_newswheren_id=?"; try{ super.getConnection(); pstm=con.prepareStatement(sql); pstm.setInt(1,n_id); rs=pstm.executeQuery(); if(rs.next()){ Stringn_title=rs.getString("n_title"); Stringn_content=rs.getString("n_content"); intt_id=rs.getInt("t_id"); Stringn_publishtime=rs.getString("n_publishtime");Stringn_source=rs.getString("n_source"); news=newNews(n_id,n_title,n_content,t_id,n_publishtime,n_source); } }catch(Exceptione){ e.printStackTrace(); }finally{ closeAll(); } returnnews; }//根据新闻标题模糊查询新闻 publicListsearchByNtitle(Stringn_title){ Listlist=newArrayList(); Stringsql="SELECT*FROMnrc_newsWHEREN_TITLELIKE?ORDERBYN_IDDESC"; try{ super.getConnection(); pstm=con.prepareStatement(sql); pstm.setString(1,"%"+n_title+"%"); rs=pstm.executeQuery(); while(rs.next()){ Newsnews=newNews(); news.setN_id(rs.getInt("n_id")); news.setN_title(rs.getString("n_title")); news.setN_content(rs.getString("n_content")); news.setT_id(rs.getInt("t_id")); news.setN_publishtime(rs.getString("n_publishtime")); news.setN_source(rs.getString("n_source"));list.add(news); } }catch(Exceptione){ e.printStackTrace(); }f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灌区续建配套改造项目规划选址论证报告
- 2026-2030折叠家具行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2026年枣庄抱犊崮职业学院单招综合素质考试题库含完整答案详解【各地真题】
- 2025年四川省招募社会工作服务岗位人员笔试真题
- 2026年山东齐河职业学院高职单招职业技能考试题库【A卷】附答案详解
- 2024年湖南衡阳蒸湘职业学院高职单招职业技能考试题库(名师系列)附答案详解
- 2024年成都龙泉山职业学院单招综合素质考试模拟试卷【能力提升】附答案详解
- 工厂厂区安防周界防范技术方案
- 2024年漯河食品职业学院高职单招职业适应性测试考试模拟试卷A4版附答案详解
- 高端数控刀具项目环境影响报告书
- 河南省安全培训讲师证课件
- 凤凰模拟飞行培训课件
- 标书保密方案模板(3篇)
- 临床医学检验质控试题及答案2025版
- 2025年天津市面向甘南籍未就业高校毕业生招聘事业单位工作人员公笔试备考试题附答案详解(a卷)
- 2023隧道装配式仰拱设计与施工技术标准
- 中医诊断学舌诊介绍
- 尼康S8200中文说明书
- GB/T 4706.7-2024家用和类似用途电器的安全第7部分:真空吸尘器和吸水式清洁器具的特殊要求
- 2024年高中数学奥林匹克竞赛全真试题
- 农业机械租赁模式创新研究
评论
0/150
提交评论