web项目----实现简单的增删查改

本人稀土掘金地址 : coding_Rayce 的个人主页 - 动态 - 掘金 (juejin.cn)

首先了解javaEE的三层架构

由图中我们可以看出,javaEE的三层架构严格的规定了项目中的每个模块,每个层需要完成的事情,这样会使项目的变得非常简洁,按部就班的完成每一部分,我们的项目也就很容易的完成,当然这这里说的只是针对非常简单的项目,对于大型项目就另当别论了。

增删查改之----增Create

思维导图

 

详解

从图中我们可以看出,当客户端用户输入完数据之后请求就会发送给服务器,当服务器端BooServlet接受到来自add.html页面的请求后就会做出相应的相应,通过反射调用Add(req,resp)方法

在Add方法中

protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //1. 获取请求参数,封装成Book对象
    String name = req.getParameter("name");
    String author = req.getParameter("author");
    BigDecimal price = BigDecimal.valueOf(Double.parseDouble(req.getParameter("price")));
    Integer sales = Integer.valueOf(req.getParameter("sales"));
    Integer stock = Integer.valueOf(req.getParameter("stock"));
    Book book = new Book(null, name, author, price, sales, stock, null);
    
    //2. 调用bookService.addBook(book)将数据保存入数据库
    bookService.addBook(book);
    
    //3. 跳转回图书列表页面----又出现表单重复提交的bug
    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));
   
复制代码

这就是一个简单add方法的实现

增删查改之----查Read

思维导图

 

 

  1. 在index上点击跳转到manager页面的请求,然后manager页面上显示响应【bookServlet?action=list】,然后服务器端就会收到响应

  1. 服务器端收到响应就会调用BookServlet的doPost方法,在doPost方法中显示的action收到的是list,然后后端就会调用list方法

  2. 在list方法中有三个步骤【

     1.  通过BookService调用BookDao中的查询所有图书的方法(queryBooks),然后queryBooks再次调用BaseDao抽象类中的queryForList方法查找到所有图书。
     2. 将查询到的所有图书保存到request域中
     3.  通过请求转发,将保存的数据回传给前端book_manager.jsp页面
     4.  book_manager.jsp页面收到转发的请求,通过el表达式,将数据显示出来
     5.  最后,数据就会完美的呈现在面前
    复制代码

代码实现:

protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //1. 通过BookService查询所有的图书
    List<Book> books = bookService.queryBooks();

    //2. 保存所有的图书到request域中

    req.setAttribute("books",books);

    //3. 请求转发到book_manager.jsp
    req.getRequestDispatcher("book_manager.jsp").forward(req,resp);
}
复制代码

增删查改之----改Update

思维导图

 

  1. 首先点击修改,他将会调用doPost方法,将action值赋值为getBook

  1. 通过getBook()方法将id为XXX的数据获取出来然后显示在book_edit页面上。步骤有【

    1> 获取请求的参数信息--图书编号

    2> 调用BookService下的queryBookById()获取该图书的所有信息

    3> 将数据保存在request作用域中

    4> 请求转发到book_edit页面

  1. 通过上述步骤,在book_edit页面就会显示要修改的数据,接下来要做的就是将要修改的数据保存起来,然后再回传给客户端
  2. 将book_edit页面的隐藏域的value值修改为动态获取的值因为book_edit页面会是实现两个操作,修改与保存,所以回传的action值就因该动态的获取是add/update(判断的方法是id是否为空;添加的id为空)

这里我们回传的action值为update,所以再次回到BookServlet程序,这里我们调用的是doGet方法,然后通doGet在调用doPost 。通过doPost,因为action的值为update,所以这里我们调用update方法*

  1. 在update方法中要实现以下的及步骤【

    1> 获取请求参数,封装成Book对象不能忘记id,修改的时候id值是存在的,我们得获取但是不能修改

    2>通过BookService调用BookDao中的修改图书的方法(updateBook),然后updateBook再次调用BaseDao抽象类中的update方法将数据库中的数据修改保存

    3> 重定向跳转回原来的页面

代码实现

protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取请求参数,封装成Book对象
    Integer id= Integer.valueOf(req.getParameter("id"));
    String name = req.getParameter("name");
    String author = req.getParameter("author");
    BigDecimal price = BigDecimal.valueOf(Double.parseDouble(req.getParameter("price")));
    Integer sales = Integer.valueOf(req.getParameter("sales"));
    Integer stock = Integer.valueOf(req.getParameter("stock"));

    Book book = new Book(id, name, author, price, sales, stock, null);

    bookService.updateBook(book);

    //请求重定向
    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));

}
复制代码

增删查改之----删Delete

思维导图

  1. 服务器获取客户端要删除的数据的id

  1. 将请求发送至服务器,然后后端调用doPost方法,action传的值为delete

  2. doPost方法,在其中执行这几步骤【

    1> 获取请求参数 id

    2>通过BookService调用BookDao中的添加图书的方法(deleteBookById),然后adeleteBookById再次调用BaseDao抽象类中的update方法将数据库中的数据删除

    3>重定向跳转回原来的页面

代码实现

protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1. 获取请求参数 id
    Integer id = Integer.valueOf(req.getParameter("id"));
    //2. 调用BookService.deleteBookById()删除数据
    bookService.deleteBookById(id);
    //3. 重定向跳转回原来的页面

    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));

}

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是JavaWeb实现简单增删查改功能的步骤: 1.创建数据库表和实体类 首先需要创建对应的数据库表和实体类,例如创建一个名为adoption的表,包含id、name、age等字段,并创建一个Adoption实体类,包含对应的属性和get/set方法。 2.创建Mapper接口和SQL映射文件 创建一个AdoMapper接口,包含增删查改的方法,例如: ```java public interface AdoMapper { //查询所有记录 List<Adoption> findAll(); //根据id查询记录 Adoption findById(int id); //添加记录 void add(Adoption adoption); //更新记录 void update(Adoption adoption); //根据id删除记录 void deleteById(int id); } ``` 然后创建对应的SQL映射文件,例如: ```xml <!-- 查询所有记录 --> <select id="findAll" resultType="com.example.demo.entity.Adoption"> select * from adoption </select> <!-- 根据id查询记录 --> <select id="findById" parameterType="int" resultType="com.example.demo.entity.Adoption"> select * from adoption where id=#{id} </select> <!-- 添加记录 --> <insert id="add" parameterType="com.example.demo.entity.Adoption"> insert into adoption(name, age) values(#{name}, #{age}) </insert> <!-- 更新记录 --> <update id="update" parameterType="com.example.demo.entity.Adoption"> update adoption set name=#{name}, age=#{age} where id=#{id} </update> <!-- 根据id删除记录 --> <delete id="deleteById" parameterType="int"> delete from adoption where id=#{id} </delete> ``` 3.创建Service层和Controller层 创建一个AdoService接口和AdoServiceImpl实现类,包含对应的增删查改方法,例如: ```java public interface AdoService { List<Adoption> findAll(); Adoption findById(int id); void add(Adoption adoption); void update(Adoption adoption); void deleteById(int id); } @Service public class AdoServiceImpl implements AdoService { @Autowired private AdoMapper adoMapper; @Override public List<Adoption> findAll() { return adoMapper.findAll(); } @Override public Adoption findById(int id) { return adoMapper.findById(id); } @Override public void add(Adoption adoption) { adoMapper.add(adoption); } @Override public void update(Adoption adoption) { adoMapper.update(adoption); } @Override public void deleteById(int id) { adoMapper.deleteById(id); } } ``` 然后创建一个AdoController类,处理对应的请求,例如: ```java @Controller @RequestMapping("/ado") public class AdoController { @Autowired private AdoService adoService; //查询所有记录 @GetMapping("/findAll") public String findAll(Model model) { List<Adoption> adoptions = adoService.findAll(); model.addAttribute("adoptions", adoptions); return "ado_list"; } //根据id查询记录 @GetMapping("/findById/{id}") public String findById(@PathVariable("id") int id, Model model) { Adoption adoption = adoService.findById(id); model.addAttribute("adoption", adoption); return "ado_info"; } //跳转到添加记录页面 @GetMapping("/toAdd") public String toAdd() { return "ado_add"; } //添加记录 @PostMapping("/add") public String add(Adoption adoption) { adoService.add(adoption); return "redirect:/ado/findAll"; } //跳转到更新记录页面 @GetMapping("/toUpdate/{id}") public String toUpdate(@PathVariable("id") int id, Model model) { Adoption adoption = adoService.findById(id); model.addAttribute("adoption", adoption); return "ado_update"; } //更新记录 @PostMapping("/update") public String update(Adoption adoption) { adoService.update(adoption); return "redirect:/ado/findAll"; } //根据id删除记录 @GetMapping("/deleteById/{id}") public String deleteById(@PathVariable("id") int id) { adoService.deleteById(id); return "redirect:/ado/findAll"; } } ``` 4.创建对应的页面 最后需要创建对应的页面,例如ado_list.html、ado_info.html、ado_add.html、ado_update.html等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen_5210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值