100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【JAVA项目实战】【图书管理系统】用户更新功能【Servlet】+【Ajax】+【Mysql】

【JAVA项目实战】【图书管理系统】用户更新功能【Servlet】+【Ajax】+【Mysql】

时间:2019-01-21 17:40:18

相关推荐

【JAVA项目实战】【图书管理系统】用户更新功能【Servlet】+【Ajax】+【Mysql】

🚀个人主页:欢迎访问Ali.s的首页

⏰ 最近更新:8月5日

⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】

🔥 Java项目实战系列:【飞机大战】【图书管理系统】

⛳ Java基础学习系列:【继承】【封装】【多态】

🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】

🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂

💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯

文章目录

前言一、需求分析二、功能实现1.非真正删除2.控制层3.业务层4.持久层5.数据验证三、功能测试总结

前言

这里是【JAVASE】项目实战的第四节课,接着前面的用户删除功能继续完成用户的更新功能,使用【servlet】【Ajax】【Mysql】来实现该功能。

一、需求分析

在前面用用户删除功能实现后,可以清楚的看到在前端页面和数据库中都无法看到的用户信息,但是在实际的开发过程中应该是在数据库中保留用户信息,而在前端不显示出用户信息,所以今天将完善一下非真实删除的功能,通过设置字段信息来进行约束,使其达到不删数据也不显示的效果,并且完成用户更新功能。下面对更新的功能进行需求分析。

这里基本逻辑与删除的功能大同小异,最主要的是使用更新操作时,需要有一个Ajax异步数据请求返回,当点击每条数据的更新按钮时,就是用户发送了请求,用户发送请求后controller层的Servlet就应该要处理请求,而根据MVC架构,controller需要调用service层的方法,所以将业务逻辑交给Service层进行处理,service的处理有需要对请求处理的数据与dao层的数据进行比对,dao层访问数据库信息,对请求数据操作进行校验,并对操作返回数据响应。

当从层返回数据后需要页面进行重定向操作,重新跳转到用户信息提交页面,同时将返回数据填到表单中,这里需要使用到Ajax

二、功能实现

1.非真正删除

在设置数据表结构时,其实里面已经考虑到这问题,预留了一个is_deleted字段信息,就是用于控制用户信息删除的,当值为1是表示显示在前端页面,而其它值为只保存在数据库中,而不显示在前端页面,所以实际的sql语句中需要加上set is_deleted=?

@Overridepublic Integer delete(Integer id) {QueryRunner queryRunner = DBUtils.getQueryRunner();//逻辑删除,数据进行保留String sql="update t_user set is_deleted=? where id=?";try {//return queryRunner.update(sql,id);//逻辑更新return queryRunner.update(sql, DelFlag.YES.code,id);} catch (SQLException e) {e.printStackTrace();}return -1;}

2.控制层

这里的控制主要是实现页面的跳转,实现页面重定向,所以直接使用参数绑定,更新到用户提交页面,在重新提交后,再次回到用户信息页面。

req.setAttribute("user",user);req.getRequestDispatcher("/user/userUpdate.jsp").forward(req, resp);

3.业务层

@Overridepublic Integer updateUser(User user) {return userDao.update(user);}

在实现类实现所调用的接口就能完成业务层的处理。

package com.song.bookmanagersystem.service;import com.song.bookmanagersystem.entity.User;import java.util.List;public interface UserService {//业务层删除用户Integer updateUser(User user);}

4.持久层

dao层要完成信息的查库操作,与数据库的信息进行比对,并返回响应的结果,这是删除的操作,所以返回响应的结果是否删除成功,并且要将数据作为返回值进行传递。

@Overridepublic Integer update(User user) {QueryRunner queryRunner=DBUtils.getQueryRunner();String sql="update t_user set user_name=?,password=?,phone_num=?,email=? where id=?";try {return queryRunner.update(sql,user.getUserName(),user.getPassword(),user.getPhoneNum(),user.getEmail(),user.getId());} catch (SQLException e) {e.printStackTrace();}return -1;}

5.数据验证

在新增用户信息时,我们没有对id进行设置,而是通过数据库中表的字段自增,所以保证id是唯一的,同样的思路,需要保证账号是唯一的,所以这里做数据验证,无法修改用户账号字段信息,通过Ajax发送异步请求实现提交。

对用户账号做判断:

@Overridepublic String checkUser(String userName) {QueryRunner queryRunner = DBUtils.getQueryRunner();String sql="select count(1) from t_user where is_deleted=? and user_name=?";try {int count= queryRunner.query(sql, new ResultSetHandler<Integer>() {@Overridepublic Integer handle(ResultSet resultSet) throws SQLException {resultSet.next();int count=resultSet.getInt(1);return count;}},DelFlag.No.code,userName);return count==0 ?"success":"error";} catch (SQLException e) {e.printStackTrace();}return "error";}

三、功能测试

启动服务器,让项目在服务器中运行,实现在删除的功能下测试非真正删除,然后在网页上进行更新用户数据的测试。

页面已经不显示id为4的信息,但可以清楚的看到数据库中信息依旧存在,并且is_deleted字段值为0。

接下来测试更新用户信息的功能,点击修改按钮后,重新提交用户信息到数据库和前端页面。

页面跳转到更新页面,不显示账号已被注册,所以应该做判断是更新操作还是新增操作。

将信息修改后的用户信息页面

总结

以上就是今天要讲的内容,使用【Servlet】+【Ajax】+【Mysql】对用户删除功能进行完善,发现能在不删除用户的正真数据而达到不显示的效果,同时完成了用户的更新功能,通过Ajax异步请求,对数据进行验证,做到这里,我们的用户模块的所有功能就全部完成,下一篇开始新登录模块的实现。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。