java web mvc 模式_JavaWeb基础MVC设计模式

MVC设计模式

JSP的开发模式

fc3be2cc31a6f813a8d03bdae2f2dd28.png

三层架构&MVC练习

b961fab2fb2f52b5cc3bef3d0ffe9c87.png

学生信息管理系统

数据库准备

CREATE DATABASE stus;

USE stus;

CREATE TABLE stu (

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR (20),

gender VARCHAR (5),

phone VARCHAR (20),

birthday DATE,

hobby VARCHAR(50),

info VARCHAR(200)

);1

2

3

4

5

6

7

8

9

10

11

查询

先写一个JSP 页面, 里面放一个超链接 。

写Servlet, 接收请求, 去调用 Service , 由service去调用dao

先写Dao , 做Dao实现。

public interface StudentDao {

/**

查询所有学生

@return List

*/

List findAll() throws SQLException ;

}

public class StudentDaoImpl implements StudentDao {

/**

* 查询所有学生

* @throws SQLException

*/

@Override

public List findAll() throws SQLException {

QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

return runner.query(“select * from stu”, new BeanListHandler(Student.class));

}

}1

再Service , 做Service的实现。 /**

* 这是学生的业务处理规范

* @author xiaomi

*

*/

public interface StudentService { /** * 查询所有学生 * @return List */

List findAll() throws SQLException ; }

------------------------------------------

/**

* 这是学生业务实现

* @author xiaomi

*

*/

public class StudentServiceImpl implements StudentService{ @Override

public List findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll();

}

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

在servlet 存储数据,并且做出页面响应。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {1

try {

//1. 查询出来所有的学生

StudentService service = new StudentServiceImpl();

List list = service.findAll(); //2. 先把数据存储到作用域中

request.setAttribute("list", list);

//3. 跳转页面

request.getRequestDispatcher("list.jsp").forward(request, response); } catch (SQLException e) {

e.printStackTrace();

}1

2

3

4

5

6

7

8

}

在list.jsp上显示数据

EL + JSTL + 表格

增加

先跳转到增加的页面 , 编写增加的页面

点击添加,提交数据到AddServlet . 处理数据。

调用service

调用dao, 完成数据持久化。

完成了这些存储工作后,需要跳转到列表页面。 这里不能直接跳转到列表页面,否则没有什么内容显示。 应该先跳转到查询所有学生信息的那个Servlet, 由那个Servlet再去跳转到列表页面。

爱好的value 值有多个。

request.getParameter(“hobby”);

String[] hobby = request.getParameterValues(“hobby”) —> String[]

String value = Arrays.toString(hobby): // [爱好, 篮球, 足球]

删除

点击超链接,弹出一个询问是否删除的对话框,如果点击了确定,那么就真的删除。 删除1

让超链接,执行一个js方法

在js访问里面判断点击的选项,然后跳转到servlet。

servlet收到了请求,然后去调用service , service去调用dao

更新

点击列表上的更新, 先跳转到一个EditServlet

在这个Servlet里面,先根据ID 去查询这个学生的所有信息出来。

跳转到更新的页面。 ,然后在页面上显示数据

姓名 性别 checked>男 checked>女 爱好 checked>游泳 checked>篮球 checked>足球 checked>看书 checked>写字 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

修改完毕后,提交数据到UpdateServlet

提交上来的数据是没有带id的,所以我们要手动创建一个隐藏的输入框, 在这里面给定id的值, 以便提交表单,带上id。

...

1

2

3

4

5

获取数据,调用service, 调用dao.

分页功能

物理分页 (真分页)

来数据库查询的时候,只查一页的数据就返回了。

优点 内存中的数据量不会太大

缺点:对数据库的访问频繁了一点。

SELECT * FROM stu LIMIT5 OFFSET 21

2

3

4

逻辑分页 (假分页)

一口气把所有的数据全部查询出来,然后放置在内存中。

优点: 访问速度快。

缺点: 数据库量过大,内存溢出。1

2

文章来源: albertyang.blog.csdn.net,作者:Albert Yang,版权归原作者所有,如需转载,请联系作者。

原文链接:albertyang.blog.csdn.net/article/details/84580846

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值