在本篇文章中,小编将介绍在jsp页面中通过表格显示数据库的实现:下面我们以“新闻发布系统”中显示一级标题的信息为例进行讲述,在新闻发布系统中存在一二级标题,在后台可以对标题进行管理,可查询标题等信息
【step one】
1-1 建立数据库
在jsp中,我们使用的是mysql数据库,对于此数据的优缺点本篇不予以讲述,首先建立news数据库,其数据库中表的信息为:
eg:< id :1 ; name:娱乐; creator:ibbon;createTime:2014-11-21 22:17:43>
【step two】 建立web项目(news)
2-1:首先,我们在web项目的src文件夹写入链接数据库的相关的类,他们分别是:链接数据库的类,数据的实体类
-----------------------------------------------------------------------------------------------------------------------------------------------------
2-1-1 : 数据库实体类,在此类中主要含有数据库的字段,<包:cn.edu.bzu.entity ;实体类:Title.java;>
1 package cn.news.jsp.entity;
2
3 import java.sql.Date;
4
5 public class Title {
/**
*下面这四个属性为数据库表中的四个属性
*/ 6 private int id;
7 private String name;
8 private String creator;
9 private Date createTime;
10
11 public int getId() {
12 return id;
13 }
14 public void setId(int id) {
15 this.id = id;
16 }
17 public String getName() {
18 return name;
19 }
20 public void setName(String name) {
21 this.name = name;
22 }
23 public String getCreator() {
24 return creator;
25 }
26 public void setCreator(String creator) {
27 this.creator = creator;
28 }
29 public Date getCreateTime() {
30 return createTime;
31 }
32 public void setCreateTime(Date createTime) {
33 this.createTime = createTime;
34 }
35 public Title(int id, String name, String creator, Date createTime) {
36 super();
37 this.id = id;
38 this.name = name;
39 this.creator = creator;
40 this.createTime = createTime;
41 }
42
43 }
ps:<实体类的作用>
/**
*实体类的作用
*在JAVAWeb中,实体类里面的某一个类,相当于是数据库里的一张表,一个类里面的某个字段相当于表的列名
*在实体里有getter和setter方法,getter是只读,setter是写入
*/
-----------------------------------------------------------------------------------------------------------------------------------------------------
2-2-2 数据库操作类 :下面以对数据库的查询功能书写代码,<包:cn.edu.bzu.dao;类:TitleDAO.java>
1 package cn.edu.bzu.dao;
2 import java.sql.*;
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import cn.edu.bzu.entity.Title;
7
8 public class TitleDAO {
9 public List readFirstTitle(){
10 List<Title> list =new ArrayList<Title>();
11 Connection con=null;
12 PreparedStatement psmt=null;
13 ResultSet rs=null;
14 try {
15 Class.forName("com.mysql.jdbc.Driver");
16 } catch (ClassNotFoundException e) {
17 e.printStackTrace();
18 }
19
20 try {
21 con=DriverManager.getConnection("jdbc:mysql://localhost:3306/news","root","baby123");
22 String sql="select * from title";
23 psmt=con.prepareStatement(sql);
24 rs=psmt.executeQuery();
25
26 while(rs.next())
27 {
28 int id=rs.getInt("id");
29 String name=rs.getString("name");
30 String creator=rs.getString("creator");
31 Date createTime=rs.getDate("createTime");
32 Title tl=new Title(id, name, creator, createTime);
33 list.add(tl);
34 }
35
36 } catch (SQLException e) {
37 e.printStackTrace();
38 }finally
39 {
40 try {
41 if(rs!=null)
42 {
43 rs.close();
44 }
45 if(psmt!=null)
46 {
47 psmt.close();
48 }
49 if(con!=null)
50 {
51 con.close();
52 }
53 } catch (SQLException e) {
54 e.printStackTrace();
55 }
56 }
57 return list;
58 }
59
60 }
ps:现在分析一下上述代码,
one:创建方法(public List readFirstTitle()),之所以选择返回值是List是因为一个标题含有id,name,creator,cteateTime信息,这些信息存在集合中,便于管理,操作
two:创建变量,链接数据库,在这个web project使用的是JDBC技术链接的数据库,这技术需要一类三接口<DriverManager类,Connection接口,Statement接口,ResultSet接口>
ps:与数据库建立链接的步骤:1.注册数据库驱动;2.获取数据库连接;3.获取statement对象;4.关闭资源;
具体的实现步骤,请看上述代码
three:在数据库中读取的信息需要使用List接口,以实现对数据库的一列信息进行封装起来进行来进行后续的使用,就好比:在桌子上有很多的糖,装糖的瓶子,装瓶子的箱子-------->>>>>就好比之前的属性为糖,好几个属性为一个瓶子,好几个瓶子放在箱子中(List)
Four:下面进行细节讲解:
public List readFirstTitle()方法对每一行的数据进行封装, 通过为实体类建立对象(entity),调用他的构造方法,通过构造方法的方式进行复制,然后把通过赋值完成的数据加入list集合中,这样一行的数据就进行封装完成,通过while()循环,从而实现对数据的遍历,进而实现对多行数据的存储,但是在此之前需要创建list对象,并且导入list对象的相关类-------------List<Title> list =new ArrayList<Title>();
----------------------------------------------------------------------------------------------------------------------------------------------------------
2-2-3 在web页面中显示数据库信息<在webroot下建立titleList.jsp,使用TitleDao.java中的查询方法得到所有的记录,然后用表格在页面显示>其具体的代码:
1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
2 <%@page import="cn.edu.bzu.dao.TitleDAO,cn.edu.bzu.entity.Title"%>
3 <%
4 String path = request.getContextPath();
5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6 %>
7
8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9 <html>
10 <head>
11 <title>Test-newsTitle</title>
12 </head>
13
14 <body>
15 <table border="1">
16 <tr>
17 <td>id</td>
18 <td>name</td>
19 <td>creator</td>
20 <td>createTime</td>
21 </tr>
22 <%
23 TitleDAO dao=new TitleDAO();
24 List<Title> list =dao.readFirstTitle();
25 for(Title tl:list)
26 {%>
27 <tr>
28 <td><%=tl.getId() %></td>
29 <td><%=tl.getName() %></td>
30 <td><%=tl.getCreator() %>></td>
31 <td><%=tl.getCreateTime() %></td>
32 </tr>
33 <%}
34 %>
35 </table>
36 </body>
37 </html>
ps: <%%>小脚本的内容解释:
1.通过TitleDAO dao=new TitleDAO(); 创建对象
2.List <Title> list =dao.readFIrstTitle(); 接口List创建list对象,然后通过对象dao调用TitleDAO中的readFirstTitle()方法,从而把返回的list赋予给list
3.for-each()进行数据的遍历
4.遍历的需要放在行(<tr></tr>)标签外面,这样的话才能把数据进行行存储,由于使用了遍历,所以说明把数据库中的Title表中的数据全部以表格的形式输出
5.具体美化,敬请学习html+css
-----------------------------------------------------------------------------------------------------------------------------------------------------
附录:
小编推荐几个网页学习的链接:
w3c菜鸟教程:http://www.w3cschool.cc/
慕课网:http://www.imooc.com/
Bootstrap中文网:http://www.bootcss.com/-----------------------------------------------------------------------------------------------------------------------------------------------
PS:小编技术有限,如有不足,请指出,谢谢
来源:网络
mysql基础入门的总结 关于数据库: 数据库是软件开发人员要掌握的基本工具,软件的运行的过程就是操作数据的过程,数据库中的数据无非就是几个操作:增-删-查-改。 Mysql安装完成后,需要配置变量环境,找到配置路径path,然后把mysql安装目录bin文件导入就可以了。 然后运行cm...
adb常用命令: 查看手机是否连接:adb devices 连接设备:adb connect 设备ip:端口号 若有连接多个设备需指明设备ip及端口号 安装APP:adb install [-r] 包名 -r表示覆盖安装,首次安装可省略 卸载APP:adb uninstall 包名 列出设备中所有应用包名:adb shell pm list packages ...
以谷歌浏览器为例,注意有些浏览器并不支持该功能。 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置--》隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图片,其中也可以只禁用某些网站图片,或者只开启自己想显示图片的网站...
IDEA中使用springMVC 出现 404请求的资源不可用的其他一个可能原因 如果你确认你在视图解析器中的路径设置没有问题,各种文件名都没问题,却依然出现资源不可用错误 你可以检查这个页面中是否为web部署了工件,没有的话部署一下就好了。...
1.安装完系统后在该目录下新建wpa_supplicant.conf文件填入以下信息 ssid是wifi名字 psk是wifi密码 priority:连接优先级,数字越大优先级越高 2.插入sd卡开机自动连接 3.利用ssh登陆树莓派 4. 输入命令 sudo apt-get install xrdp 安装 5.利用windows远程桌面登陆 6.输入登陆用户名密码,完成...
Office 365中,将Word与SharePoint/One drive for business相结合,实现协作编辑,是一个特别好的功能。虽然可能大部分时间一个文档同时只有一人编辑,但总会出现这样的情况 - 比如之前公司的一个项目,几个人协作写Statement of Work, 售前工程师在写文档的主题,售后工程师在Verify售前工程师所写的细节并且进行修正,项目经理在向文档中添加项目管...
交叉表主要是通过设置数据的不同展开方向实现的。 如图所示: A1为交叉表的表头,B1为表中一列数据,定义它的数据展开方向为向右,A2为表中另外一列数据,定义它的展开方向向下,于是A2和B1分别形成了交叉表的标题。 B2则为具体的数据统计内容。 预览效果为: B2的数据展开方式的不同会造成报表展示结果不同。 此时多列数据用逗号隔开,放在同一行。 此时多列数据放在不同行。 此时多列数据放在不同的列上。...
本文是从"金老师的计算机自学网站"上的学习笔记,强推!内容特别好。有需要可以去学学哦~ 1、闭区间 注:只能是整型,默认升序! 2、定义区间 3、区间的遍历 4、降序区间与半开半闭区间 本文是从"金老师的计算机自学网站"上的学习笔记,强推!内容特别好。有需要可以去...
本文首发于知乎日报,转载请注明出处 Henry-航,Don't say if, build something. 算是纪录片的狂热爱好者吧,以前就一直断断续续收藏了不少蓝光纪录片,看的也断断续续。最近一年多来一狠心,一直保持着每天看 20 多分钟纪录片、每两天看一集纪录片的节奏。现在回头看看还真的看了不少的纪录片。 好看的纪录片非常之多,但看了不少题材的纪录片之后发现相同题材下的纪录片同质化现象也...
I'm currently trying out the google cloud messaging service with its sample application "Guestbook." https://developers.google.com/cloud/samples/mbs/ I'm attempting to send notifications tha...
Now I came across an article that distinguishes between an Asynchronous function and Synchronous functions. From my understanding of the different examples and explanations, synchronous functions are ...
Good day all I'm busy creating a small costing calculator for the signage department. I'm not getting the calculator to output the amount. Brief Description: You enter the height and width and then wh...
I have 3 models created with Flask-SQLalchemy: User, Role, UserRole role.py: user.py: user_role.py: If I try (in the console) to get all users via User.query.all() I get AttributeError: 'NoneType' obj...
I have many particles that follow an stochastic process in parallel. For each particle, there is a PRNG associated to it. The simulation must go through many repetitions to get average results. For ea...