0
点赞
收藏
分享

微信扫一扫

任务卡_06-JavaWEB_MVC


目录

​​一,MVC 模式下实现 CRUD​​

​​1,任务概述​​

​​2,任务过程​​

​​3,编码过程​​

​​3.1 数据库设计​​

​​3.2 项目结构​​

​​3.3 编码思路​​

​​3.4 运行结果​​

​​ 3.5 注意​​

一,MVC 模式下实现 CRUD

1,任务概述

软件工程师小亮在编写企业门户网站时发现,由于项目体积越来越大,现 有代码错综复杂,不好梳理,虽然功能实现了,但是返回来看代码时乱七八糟, 现在迫切需要学习 MVC 和三层架构的思想来解决问题。

2,任务过程

1. 理解 mvc 概念 

2. 创建包结构,并理解每一层的作用 

3. 添加各层代码 

4. 实现前后端的访问

3,编码过程

先简单回顾一下两个重要概念:MVC,三层架构,CRUD

MVC

  • M(Model) 模型:应⽤程序的核⼼功能,管理这个模块中⽤的数据和值(bean,dao);
  • V(View )视图:视图提供模型的展示,管理模型如何显示给⽤户,它是应⽤程序的外观;(jsp/html)
  • C(Controller)控制器:对⽤户的输⼊做出反应,管理⽤户和视图的交互,是连接模型和视图的枢纽。(servlet/service)

三层架构

  • 表现层(UI):通俗讲就是展现给⽤户的界⾯,即⽤户在使⽤⼀个系统的时候他的所⻅所得。jsp/html
  • 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。servlet,service
  • 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。dao

CRUD

  • 增加(Create)
  • 读取查询(Retrieve)
  • 更新(Update)
  • 删除(Delete)

3.1 数据库设计

沿用之前的用户表

任务卡_06-JavaWEB_MVC_javaweb

3.2 项目结构

任务卡_06-JavaWEB_MVC_MVC_02

3.3 编码思路

完整项目在这里​​https://gitee.com/goodbyefirefly/java-course/tree/master/Chapter7/MVCTaskCard​​

使用一个jsp页面,三个form表单各自占一行分别表示添加Create,更新Update,查询Retrieve。

一个table组件展示用户信息,每行最右侧含有删除链接(a标签),点击即可删除该条数据。

index.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="userServlet?method=create" method="post">
<div>
账户:<input type="text" name="username">
密码:<input type="text" name="password">
积分:<input type="text" name="score">
<input type="submit" value="添加">
</div>
</form>
<form action="userServlet?method=update" method="post">
<div>
账户:<input type="text" name="username">
新密码:<input type="text" name="password">
新积分:<input type="text" name="score">
<input type="submit" value="更新">
</div>
</form>
<form action="userServlet?method=retrieve" method="post">
<div>
账户:<input type="text" name="username">
<input type="submit" value="查询">
</div>
</form>
<table border="1px" width="300px" >
<tr>
<th>账户</th>
<th>密码</th>
<th>积分</th>
<th>操作</th>
</tr>
<c:forEach items="${list}" var="u">
<tr>
<td>${u.username}</td>
<td>${u.password}</td>
<td>${u.score}</td>
<td>
<a href="userServlet?method=delete&username=${u.username}">删除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>

使用一个servlet即可。用method参数区别不同的方法。servlet中识别出这些方法后,调用service中提供的服务。service中的服务是由dao中的一个个基本操作组成。

通过实时更新table中的列表,来展示操作是否成功。

UserServlet.jsp

package com.xrh.servlet;

import com.xrh.bean.User;
import com.xrh.service.UserService;
import com.xrh.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;

@WebServlet("/userServlet")
public class UserServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@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 method = req.getParameter("method");
ArrayList<User> list = new ArrayList<>();
if(method.equals("create")) {
String username = req.getParameter("username");
String password = req.getParameter("password");
String score = req.getParameter("score");
userService.create(username, password, score);
list = userService.getAll();
} else if (method.equals("retrieve")) {
String username = req.getParameter("username");
User user = userService.retrieve(username);
list.add(user);

} else if (method.equals("update")) {
String username = req.getParameter("username");
String password = req.getParameter("password");
String score = req.getParameter("score");
userService.update(username, password, score);
list = userService.getAll();
} else if (method.equals("delete")) {
String username = req.getParameter("username");
userService.delete(username);
list = userService.getAll();
} else if (method.equals("getAll")) {
list = userService.getAll();
}
req.setAttribute("list", list);
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
}

3.4 运行结果

任务卡_06-JavaWEB_MVC_java_03

 

任务卡_06-JavaWEB_MVC_MVC_04

 

任务卡_06-JavaWEB_MVC_javaweb_05

 3.5 注意

form表单的action中,如果想要通过地址传递参数的方式,需要设置method为POST,否则action中添加的参数不会被拼接到最后的链接地址中的

任务卡_06-JavaWEB_MVC_CRUD_06

章节汇总在这里(づ ̄3 ̄)づ╭❤~​​@&再见萤火虫&【06-JavaWEB】​​

对学习Java感兴趣的同学欢迎加入QQ学习交流群:1126298731

有问题欢迎提问,大家一起在学习Java的路上打怪升级!(o゜▽゜)o☆[BINGO!]

举报

相关推荐

0 条评论