MVC架构模式
1:视图(view)jsp页面
2:模型(model)保存数据部分,和数据库交互
3:控制器(controller);接收到到用户请求,判断出来用户到底实现那种功能,通过jsp反回用户请求结果 。servlet制作控制不做显示。
MVC优点
1:有利于开发中的分工,可以很方便的把系统分割成好多部分
2:各司其职,互不干涉
3:有利于组建重用
MVC的缺点:
增加系统开发的复杂性
毕竟你把系统分割几个部分,各部分的交互,以及代码量。
基于MVC的WEB框架
Struts
webwork
SpringMVC
现在Struts和webwork已经结合了,就是现在的Struts2.0
MVC 的应用
servlet:
我们首先在servlet里面
用request,接收页面提交的value,然后判断是否为空
然后我们要去实例model中与数据库操作的方法,完成数据的增删改查;
我们现在要判断数据的怎删改查是否成功
我们在定义不同的信息提示(操作成功,和操作失败)
通过request.setattribute(key,value);
在通过request.getRequestDispatcher().forward(request,responed)方法转发到提示用户信息的页面,供用户操作;
首先,没有setParameter方法,只有getParameter,所以一般只区分getAttribute和getParameter的区别。
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型
getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型
技巧;
我们在从数据库查询数据时;当查询到结果时,他在返回数据时,我们一般用容器接住,然后再把容器里的值取出
在这个过程中也可以同过
通过request.setattribute(key,value);
在通过request.getRequestDispatcher().forward(request,responed)方法转发到提示用户信息的页面,供用户操作;
就是把list转发
显示在jsp页面;
response.sendRedirect,也可以有servlet转向到jsp中
不过重定向必须加工程名
request转发就不用了,直接跟页面;
request转发的页面,在转发的页面仍然可以获得转发对象的值
但是用response的就不可以了,因为response是两次请求
forward是可以获得转发对象的值的,地址栏的url地址不变
sendRedirect不可以的,地址栏的url地址改变;
forward:转发速度快
sendredirect;速度很慢;
sendredirect;是可以重定向到web应用之外的页面或者网站的
forward是不可以的;
froward和sendreddirect为什么有这么多的不同
是因为他们之间的转向机制是不同的;