欣欣的留言板项目====超级触动的dbUtil实现留言板
留言板管理系统
我的完成效果图:

提交后:

我的留言板基本架构如图:

创建留言板数据库:

刚开始我的前台主页中写留言信息表单:
<body>
<h1>留言板</h1>
<form action="提交后的页面地址" method="post" >
留言者:<input type="text" name="author" />
留言的内容:<input type="text" name="content" rows="100 "cols=""/>
<input type="submit" value="提交信息"/>
</form>
</body>
开始建立后台Java类中层次
我先在我的实体层里写了一个实体类实现增加的实体类如图:
public class MessageBorad {
private int id;
private String message;
private String author;
private Date pastTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getPastTime() {
return pastTime;
}
public void setPastTime(Date pastTime) {
this.pastTime = pastTime;
}
}
写我Dao层里的BaseDao工具类
public class BaseDao{
public static final String driver="com.mysql.jdbc.Driver";
public static final String url="jdbc:mysql://localhost:3306/数据库名字";
public static final String username="root";
public static final String password="";
public Connection con;
public PreparedStatement ps;
public ResultSet rs;
static{
Class.forname(driver);
}
public Connection getConnection() throws Exception{
if(con==null||con.isClosed()){
con=DriverManager.getConnection(url,username,password);
}
return con;
}
public void closeResources() throws Exception{
rs.close();
ps.close();
con.close();
}
//执行增删改
public int exeuteUpdate(String sql,Object...Objs) throws Exception{
con=getConnection();
ps=con.prepareStatement(sql);
for(int i=;i<objs.length;i++){
ps.setObject(i+,objs[i]);
}
int count=ps.executeUpdate();
return count;
}
//获取结果集ResultSet
public ResultSet executeQuery(String sql,Object...Objs) throws Exception{
con=getConnection();
ps=con.prepareStatement(sql);
for(int i=;i<objs.length;i++){
ps=setObject(i+,objs[i]);
}
rs=ps.executeQuery();
return rs;
}
public int delete(int id) throws Exception{
return ;
}
}
在Dao层里写一个实现类:
public interface ImessageBorad{
//所有我接口里的方法:
public boolean addMessage(String message,String author,Date paseTime) throws Exception;
//分页的集合方法
public List<Object[]> boradList(int pageIndex,int pageSize) throws Exception;
//分页的总数
public int messageCount() throws Exception;
}
在我的实现包里写一个实现类:
用我的dbutil的时候,加入一个dbutil的jar包,链接数据库也需要jar包,中间的是文件上传的Jar包:

我的实现类的引用:

开始写我的类:
public class ImpMessageBorad implements ImessageBorad {
con=bd.getConection();
DbUtils ut=new DbUtil();
QueryRunner qr=new QueryRunner();
BaseDao bd=new BaseBao();
ArrayListHandler al=new ArrayListHandler();
public boolean addMessage(String boradContent, String author, Date time) throws Exception {
int num=qr.update(con,"insert into message(message,author,pastTime) values (?,?,?)",boradContent,author,DateTime);
if(num>){
flag=true;
}
ut.closeQuietly(con);
}
public List<Object[]> boradList(int pageIndex,int pageSize) throws Exception{
String sql="select * from message limit ?,?";
Object[] parameters={
(pageIndex)';
(pageSize);
};
return qr.query(con,sql,parameters,al);
}
public int messageCount() throws Exception{
string sql="select count(1) as co from message";
int num=;
ResultSet rs=bd.executeQuery(sql);
if(rs.next()){
num=rs.getInt("co");
}
return num;
}
}
service 就是调用我的Dao层里的方法和实现
所以直接写我的servlet调用我的service里的方法:
//先解决乱码问题:
ImessageBoradService msg=new MessageBoradServiceImp();
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
if(“da”.equest.getParameter("action")){
String boradContent=request.getParameter("name");
String author=request.getParameter("message");
Date dt=new Date();
try{
if(msg.addMessage(boradContent, author, dt)){
request.setAttribute("success", "添加成功");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else {
request.setAttribute("success", "添加失败");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); } }
int pageSize=2;
int pageIndex=0;
if("ww".equals(request.getParameter("ca"))){
String index=request.getParameter("pageIndex");
System.out.println(index);
if(index.equals("0")){
pageIndex=pageIndex+pageSize; }else{
System.out.println(2);
int in=Integer.parseInt(index);
pageIndex=in+pageSize;
System.out.println(3);
}
} if("ws".equals(request.getParameter("ca"))){
String index=request.getParameter("pageIndex");
System.out.println(index);
if(index.equals("0")){ pageIndex=0;
}
else {
int in=Integer.parseInt(index); pageIndex=in-pageSize;
} }
request.setAttribute("pageIndex", pageIndex);
try {
request.setAttribute("list", msg.boradList(pageIndex, pageSize)) ;
request.getRequestDispatcher("/index.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
在我的前台页面中form表单:
<h1>留言板:</h1>
<br>
<%
List<Object[]> list=(List<Object[]>)request.getAttribute("list"); for(Object[] object:list){ %>
<p style="backcolor:red">作者:<%=object[2] %> <%=object[0] %>楼</p>
<lable>内容</lable>
<label><%=object[1] %></label>
<p> <%=object[3] %></p>
<%
} %> <br>
<a href="MessageServlet?ca=ww&&pageIndex=${pageIndex}">下一页</a>
<a href="MessageServlet?ca=ws&&pageIndex=${pageIndex}">上一页</a> <form action="MessageServlet?action=da" method="post"> 请输入你的姓名:<br><input type="text" name="name"><br> 留言内容:<br><textarea rows="15" cols="20" name="message"></textarea><br><br>
<input type="submit" value="提交信息"><br>
</form>
<label style="color:red">${success }</label>
我还在这里 奋斗着 你在哪里 在奋斗吗 地狱的镰刀
欣欣的留言板项目====超级触动的dbUtil实现留言板的更多相关文章
- vue+egg.js+mysql一个前后端分离留言板项目
一.前序 我相信每个人前端搬运工和我想法都是一样的,都有一个做全栈的梦,无奈面对众多的后台语言,却不从下手,今天由我来带你们潜入全栈的门槛,注意是门槛.能不能学的会后面的内容全靠坚持了. 我今天主要做 ...
- ARM核心板_迅为imx6工控核心板_核心板中的小新潮
ARM核心板_迅为imx6工控核心板_核心板中的小新潮核心板参数 尺寸 51mm*61mm CPU Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz 内存 2GB DD ...
- [安卓开发板]迅为IMX6 四核Android开发板
工业级核心板-Android开发板 10层高速PCB设计,充分保证电磁兼容 处理器:开发板默认是四核商业扩展级芯片,可根据用户需求更换单核.双核.工业级.汽车级处理器,批量更省成本. 扩展引脚:320 ...
- asp.net留言板项目源代码下载
HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...
- Django入门3 简单留言板项目案例及mysql驱动的安装配置
新建jangostart项目 使用manager.py新建app即单独的应用 创建一个message应用 manage.py@djangostart > startapp message 如果a ...
- Java基础重点知识之欣欣向然
题目: 第一题:二重循环: public class Text01 { //完成歌曲排序的效果 public static void main(String[] args) { String[] zi ...
- Asp.net mvc5开源项目"超级冷笑话"
业务时间做了个小网站,超级冷笑话,地址:http://www.superjokes.cn/ 开发技术: asp.net mvc5 +SQLServer2012 ORM:NPoco 用了简单的三层结构 ...
- Android Studio 第一次新建Android Gradle项目超级慢的解决方案
大家有什么问题,欢迎问我! 注:Android Studio在第一次新建一个Gradle项目时需要下载Gradle,所以启动很慢(Gradle-bin大约三十几兆),所以我们应该事先帮他下载好. 首先 ...
- vue项目中使用bpmn-番外篇(留言问题总结)
前情提要 “vue项目中使用bpmn-xxxx”系列的七篇文章在上周已经更新完成,发表后,有小伙伴在使用时提出了一些文章中没有讲到的问题,此篇作为番外篇,将大家提出的共性问题解答一下,欢迎大家支持原创 ...
随机推荐
- js 鼠标拖拽效果实现
效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 自己写的第一个Schema文件
<Schema name="FinSchema" description="财务模式" measuresCaption="财务模式"& ...
- Little Sub and Piggybank (杭师大第十二届校赛G题) DP
题目传送门 题意:每天能往存钱罐加任意实数的钱,每天不能多于起那一天放的钱数.如果某一天的钱数恰好等于那天的特价商品,则可以买,求最后的最大快乐值. 思路:先来一段来自出题人的题解: 显然的贪心:如果 ...
- php尝试调用一个图灵机器人
1.需要到图灵机器人的网址,去注册一下账号.网址:http://www.tuling123.com/sso-web/index.html?ReturnURL=http%3A%2F%2Fwww.tuli ...
- pycharm入门的简易使用教程
1.安装python3.5包: 本人安装到C盘,如下所示: Ps:安装时候,路径一定要添加到环境变量中,安装完,需要更新环境变量,所以要重启电脑 2.安装pycharm 下载相应的安装包,步骤不重复了 ...
- iview2.0 bug之+8 区的 DatePicker
请看以上细节图:工作案例小Demo 用心去做,不留遗憾!
- Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- inline元素、inline-block元素在float、position:fixed、position:absolute之后出现的问题
我们知道内联元素是不能设置宽.高的,但是一旦使其脱离了文档流,就可以了,这是因为它已经变成了块级元素. 例1: <!DOCTYPE html> <html lang="en ...
- Selenium+excel实现参数化自动化测试
使用到的技术:POI对excel的解析.selenium自动化测试.junit 测试用例:登陆www.1905.com执行登陆-退出的操作 执行步骤: 1.首先创建一个excel,里面有用户名和密码列 ...
- Light Table 编辑器修改字体 更新
view->command->use.behaviors 加上这一句 (:lt.objs.style/font-settings "Inconsolata" 14 1 ...