【新手入门】JDBC+Servlet+jsp【新闻系统的增删改查】:持续学习,持续优化,争取做一个真正的新闻系统出来!
新闻的增删改查

学习了一些博客知识【结尾会贴上,大家可以参考】在借鉴的基础上又进行了代码的优化,从而实现了CRUD,下面分享我的代码过程:
包结构,是为了方便管理,所以我们要这样进行设计:

在数据库进行表结构的插入和设计:(目前小辣鸡制作了新闻的crud)

接着我们进行类的实现,即完善domain类
public class NoteEntity {
private int id;
private String type;
private String text;
public NoteEntity() {
}
public NoteEntity(int id, String type, String text) {
this.id = id;
this.type = type;
this.text = text;
}
@Override
public String toString() {
return "NoteEntity{" +
"id='" + id + '\'' +
", type='" + type + '\'' +
", text='" + text + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
实现了类的实现,接着进行数据库的连接(根据我查到的资料,应该是封闭在一个jdbc.Properties文件中是最好的,但我还没做)
public class jdbcUtil {
public static final String url = "jdbc:mysql://localhost:3306/*?useSSL=false&serverTimezone=UTC";
public static final String user = "******";
public static final String password = "******";
public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
/**
* 获取Connection对象
*
* @return
*/
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// /**
// * 释放资源
// */
public static void ReleaseResource(Connection connection, PreparedStatement pstm, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstm != null) {
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
然后进行crud代码的实现
(建议写一个接口类,会方便很多)
public Connection conn1=null;
public ResultSet rs=null;
public PreparedStatement ps=null;
//查询所有的数据
@Override
public List<NoteEntity> queryAllData() {
conn1=jdbcUtil.getConnection();//连接数据库
List<NoteEntity> list=new ArrayList<NoteEntity>();
try{
String sql="select * from note";//查询多条数据
ps=conn1.prepareStatement(sql);
rs=ps.executeQuery();
NoteEntity note=null;
while(rs.next()){
note =new NoteEntity();
note.setId(Integer.parseInt(rs.getString("id")));
note.setType(rs.getString("type"));
note.setText(rs.getString("text"));
list.add(note);
}
}catch (SQLException e){
e.printStackTrace();
}finally {
jdbcUtil.ReleaseResource(conn1,ps,rs);
}
return list;
} //新增
@Override
public int insertData(NoteEntity note) {
conn1=jdbcUtil.getConnection();
int i=0;
try{
String sql="insert into note(type,text) values(?,?)";
ps=conn1.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
// ps.setObject(1,note.getId());
ps.setObject(1,note.getType());
ps.setObject(2,note.getText());
ps.executeUpdate();
rs=ps.getGeneratedKeys();//得到最新的ID
if(rs.next()){
i=rs.getInt(1);
}
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.ReleaseResource(conn1,ps,rs);
}
return i;
}
//修改
@Override
public int updateData(NoteEntity note) {
conn1=jdbcUtil.getConnection();
int i=0;
try{
String sql="update note set type=?,text=? where id=?";
ps=conn1.prepareStatement(sql);
ps.setObject(1,note.getType());
ps.setObject(2,note.getText());
ps.setInt(3,note.getId());
i=ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.ReleaseResource(null,ps,rs);
}
return i;
} @Override
public int deleteData(int id) {
conn1=jdbcUtil.getConnection();
int i=0;
try{
String sql="delete from note where id=?";
ps=conn1.prepareStatement(sql);
ps.setInt(1,id);
i=ps.executeUpdate();
if(i==1){
return i;
}
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.ReleaseResource(null,ps,rs);
}
System.out.println("未找到数据!");
return i;
}
//查询一条数据通过ID
@Override
public NoteEntity queryDataById(int id) {
conn1=jdbcUtil.getConnection();
NoteEntity note=null;
if(id>0) {
try {
String sql = "select * from note where id=?";
ps = conn1.prepareStatement(sql);
ps.setObject(1, id);
rs = ps.executeQuery();
if (rs.next()) {
note = new NoteEntity();
note.setId(rs.getInt("id"));
note.setType(rs.getString("type"));
note.setText(rs.getString("text"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.ReleaseResource(null, ps, rs);
}
}
return note;
接着做service层和servlet层
public Connection conn=null;
public ResultSet rs=null;
public PreparedStatement ps=null;
boolean b=false;
// 这里service层要想与dao层建立联系那么必须创建dao层的对象
NoteDao note=new NoteDaoImpl();
// 查询所有的数据
@Override
public List<NoteEntity> queryAllData() {
return note.queryAllData();
}
// 新增
@Override
public Boolean insertData(NoteEntity no) {
if(no!=null) {
note.insertData(no);
b = true;
}
return b;
}
// 修改
@Override
public Boolean updateData(NoteEntity no) {
if(no!=null) {
note.updateData(no);
b=true;
}
return b;
}
// 删除
@Override
public Boolean deleteData(int id) {
if(id!=0) {
note.deleteData(id);
b=true;
}
return b;
}
// 查询一条数据
@Override
public NoteEntity queryDataById(int id) {
if (id != 0) {
return note.queryDataById(id);
}
else {
return null;
}
}
private static final long serialVersionUID = 1l;
// 建立一个service对象,为了与service层建立联系
NoteService note = new NoteServiceImpl(); @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8");//防止乱码
String type = req.getParameter("action"); // 新增
if ("Insert".equals(type)) {
insert(req, resp);
} else if ("Update".equals(type)) {
update(req, resp);
} else if ("QueryById".equals(type)) {
queryById(req, resp);
} else if ("Delete".equals(type)) {
delete(req, resp);
} else if ("QueryAll".equals(type)) {
queryAll(req, resp);
}
} public void insert(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Integer id = Integer.valueOf(request.getParameter("id")); String type = request.getParameter("type");
String text = request.getParameter("text");
// 把这些获取的值放到note里面
NoteEntity no = new NoteEntity();
// no.setId(id);
no.setType(type);
no.setText(text);
// 最后调用服务来添加
String msg = null;
if (note.insertData(no) == true) {
queryAll(request, response);
} else {
msg = "新增失败!!!";
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} public void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Integer id = Integer.valueOf(request.getParameter("id"));
int id= Integer.parseInt(request.getParameter("id"));
String type = request.getParameter("type");
String text = request.getParameter("text");
NoteEntity no = new NoteEntity();
no.setId(id);
no.setType(type);
no.setText(text);
boolean b = note.updateData(no);
if (b) {
queryAll(request, response);
} else {
request.setAttribute("msg", "修改失败!!");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} public void queryById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
NoteEntity no = null;
//Integer id= Integer.valueOf(request.getParameter("id"));
int id= Integer.parseInt(request.getParameter("id"));
System.out.println(id);
no = note.queryDataById(id);
request.setAttribute("note", no);
request.getRequestDispatcher("/note.jsp").forward(request, response);
} public void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Integer id = Integer.valueOf(request.getParameter("id"));
// System.out.println(id);
String id=request.getParameter("id");
// boolean message=note.deleteData(id);
boolean message= note.deleteData(Integer.parseInt(id));
if(message==true){
queryAll(request,response);
}else {
request.setAttribute("msg","删除失败!!!");
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
} public void queryAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<NoteEntity> list = note.queryAllData();
request.setAttribute("list", list);
request.getRequestDispatcher("note.jsp").forward(request, response);
}
这样就实现了最基本的增删改查了!
那么记下来我想要优化的目标有:
1、实现css的样式美化
2、优化数据库连接代码
3、功能更加完善(创建多个页面实现页面之间的跳转)
4、为了更好的管理jar包,学会maven
5、创建baseDao和baseServlet类
持续更新中...
【新手入门】JDBC+Servlet+jsp【新闻系统的增删改查】:持续学习,持续优化,争取做一个真正的新闻系统出来!的更多相关文章
- JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)
前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ...
- JDBC+Servlet+JSP的学生案例增删改查
数据库信息传输到页面实现. 先进行学生信息页面展示: 接口IStudentDao public interface IStudentDao { /** * 保存操作 * @param stu 学生对象 ...
- mysql+servlet+jsp实现数据库的增删改查
首先,了解数据库目前我们仅仅用来存放数据,在这里我们在数据库中生成一个表,包含id,classname,teacher,location.Tomcat用来配置eclipse,只有这样我们才能使用JSP ...
- JavaBean+servlet+jsp——>对数据进行增删改查
1.开始页面(查询数据) <%@page import="com.zdsofe.work.Student"%> <%@page import="java ...
- java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- 系统操作命令实践 下(系统指令+增删改查+vim编辑器)
目录 1.考试 2.今日问题 3.今日内容 4.复制文件 4.移动文件 Linux文件查看补充 cat , nl 5.删除文件 6.系统别名 7.vi/vim编辑器 系统操作命令实践 下(系统指令+增 ...
- web项目总结——通过jsp+servlet实现对oracle的增删改查功能
1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...
- JSP+Servlet+JavaBean实现数据库的增删改查
基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果. ...
- JavaWeb系统(增删改查、多条件查询功能)
该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
随机推荐
- trick : Trygub num
trick大意 我对于这个trick的理解为:支持位运算的高精度 维护一个以 \(b\)为基数的大数 \(N\),并支持以下功能: 给定(可能是负)整数 \(|x|, |y| \leqslant n\ ...
- GIT保存记录原理之commit对象
GIT 中提交对象非常的重要,我们通过它记录代码提交过程.进行文件保存.回退等操作,那么它是怎样帮助我们记录这些信息的呢?其实就是都保存在项目根目录的 .git 文件夹中. 新建空项目 ```gitD ...
- .NET周刊【8月第1期 2023-08-06】
国内文章 NativeBuferring,一种零分配的数据类型(上篇) https://www.cnblogs.com/artech/p/17586781.html 之前一个项目涉及到针对海量(千万级 ...
- 论文解读(ECACL)《ECACL: A Holistic Framework for Semi-Supervised Domain Adaptation》
Note:[ wechat:Y466551 | 付费咨询,非诚勿扰 ] 论文信息 论文标题:ECACL: A Holistic Framework for Semi-Supervised Domain ...
- 修改DataTable中的值
DataTable dt ;for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; row.BeginEdit() ...
- 使用 Sealos 在离线环境中光速安装 K8s 集群
作者:尹珉.Sealos 开源社区 Ambassador,云原生爱好者. 当容器化交付遇上离线环境 在当今快节奏的软件交付环境中,容器化交付已经成为许多企业选择的首选技术手段.在可以访问公网的环境下, ...
- 我找回了我喜欢的Github Old Feed
前言 这周Github更新了个人主页Feed(指的是用户的活动源或动态源),作为GitHub重度爱好者而言New Feed完全不是我之前所喜欢的效果.虽然说New Feed添加了允许用户可以自定义配置 ...
- 基于百度AI实现文字和图像敏感内容审核
前言 百度AI是指百度公司的人工智能技术全称.它采用深度学习技术,包括自然语言处理.语音识别.计算机视觉.知识图谱等,可应用于各个领域如互联网.医疗.金融.教育.汽车.物流等.百度AI的发展将帮助人类 ...
- QQ机器人整理合集
QQ机器人有什么用呢? QQ机器人可以实现包括自动回复.定时推送.发送图片QQ机器人,营销圈用的比较多,可以开发各种自动功能等等.用其制作的QQ机器人程序 机器人框架+插件 小栗子机器人 官网:htt ...
- vue框架,input相同标签如何定位-label定位
一.问题提出: 后台前端框架改版,之前是angularjs,现在用vue,导致input标签定位失败,只能定位到第一个input标签,查看后台源代码发现这两个标签是一模一样,如下图: 二.问题思考过程 ...