新闻的增删改查

学习了一些博客知识【结尾会贴上,大家可以参考】在借鉴的基础上又进行了代码的优化,从而实现了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【新闻系统的增删改查】:持续学习,持续优化,争取做一个真正的新闻系统出来!的更多相关文章

  1. JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)

    前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ...

  2. JDBC+Servlet+JSP的学生案例增删改查

    数据库信息传输到页面实现. 先进行学生信息页面展示: 接口IStudentDao public interface IStudentDao { /** * 保存操作 * @param stu 学生对象 ...

  3. mysql+servlet+jsp实现数据库的增删改查

    首先,了解数据库目前我们仅仅用来存放数据,在这里我们在数据库中生成一个表,包含id,classname,teacher,location.Tomcat用来配置eclipse,只有这样我们才能使用JSP ...

  4. JavaBean+servlet+jsp——>对数据进行增删改查

    1.开始页面(查询数据) <%@page import="com.zdsofe.work.Student"%> <%@page import="java ...

  5. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  6. 系统操作命令实践 下(系统指令+增删改查+vim编辑器)

    目录 1.考试 2.今日问题 3.今日内容 4.复制文件 4.移动文件 Linux文件查看补充 cat , nl 5.删除文件 6.系统别名 7.vi/vim编辑器 系统操作命令实践 下(系统指令+增 ...

  7. web项目总结——通过jsp+servlet实现对oracle的增删改查功能

    1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...

  8. JSP+Servlet+JavaBean实现数据库的增删改查

    基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果. ...

  9. JavaWeb系统(增删改查、多条件查询功能)

    该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...

  10. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

随机推荐

  1. 【pandas小技巧】--缺失值的列

    在实际应用中,数据集中经常会存在缺失值,也就是某些数据项的值并未填充或者填充不完整.缺失值的存在可能会对后续的数据分析和建模产生影响,因此需要进行处理. pandas提供了多种方法来处理缺失值,例如删 ...

  2. [selenium]相对定位器

    前言 Relative Locators,相对定位器,是Selenium 4引入的一个新的定位器,相对定位器根据源点元素去定位相对位置的其它元素. 相对定位方法其实是基于JavaScript的 get ...

  3. 8.0 Python 使用进程与线程

    python 进程与线程是并发编程的两种常见方式.进程是操作系统中的一个基本概念,表示程序在操作系统中的一次执行过程,拥有独立的地址空间.资源.优先级等属性.线程是进程中的一条执行路径,可以看做是轻量 ...

  4. 每日一库:gosec

    gosec 是一个用于在 Go 代码中查找安全问题的开源工具,它可以帮助发现可能的漏洞和潜在的安全风险.以下是关于 gosec 的详细介绍: 1. 工具概述: gosec 是一个静态分析工具,用于扫描 ...

  5. Inno SetUp安装包:如何在程序安装时卸载驱动程序

    pnputil命令行方式卸载 如果您想通过命令行卸载.INF文件的驱动程序,您需要使用PnPUtil命令.以下是一个示例: pnputil /delete-driver oem0.inf /unins ...

  6. Linux文件管理知识查找文件(第二篇)

    Linux文件管理知识:查找文件(第二篇) 上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作.那么,今天这篇文章紧接着查找文件相关操作内容介绍. Fin ...

  7. 响应式编程——初识 Flux 和 Mono

    by emanjusaka from ​ https://www.emanjusaka.top/archives/4 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址. 前言 Reactor ...

  8. Unity 游戏开发、01 基础知识大全、简单功能脚本实现

    2.3 窗口布局 Unity默认窗口布局 Hierarchy 层级窗口 Scene 场景窗口,3D视图窗口 Game 游戏播放窗口 Inspector 检查器窗口,属性窗口 Project 项目窗口 ...

  9. 从DevOps实践落地的角度谈谈“流程”和“规范"的反模式

    最近在经历的一些事情,让我突发灵感,觉得要写点关于DevOps体系建设过程中的"流程规范",记录下来. 如何解读"流程规范" 谈到DevOps落地,无一例外都会 ...

  10. dedebiz数据重置

    TRUNCATE biz_addonarticle;TRUNCATE biz_addonimages;TRUNCATE biz_addoninfos;TRUNCATE biz_addonshop;TR ...