1.1MVC模式介绍.
-
m:model模型;v:view视图;c:ctronl控制器。v对应的就是jsp文件;c对应的就是servlet文件;而其它的biz包、dao包、实体包和util包都是m。
1.2MVC设计模式的优点.
-
降低代码耦合性:在 MVC 模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应层的代码而不会影响到其他层的代码。
-
有利于分工合作:在 MVC 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可进行开发视图层中的 JSP,而对业务熟悉的人员可开发业务层,而其他开发人员可开发控制层。
-
有利于组件的重用:如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。
2.MVC运用-ZKing家居商城.
2.1首页最新上架&热门家居&轮播图绑定.
2.1.1轮播图绑定.
-
思路分析:
-
从商品表 tb_goods里面随机取三条数据,那么就需要通过 Oracle里面的随机数实现;
-
-
Oracle随机数:
-
oracle里面在0-1之间随机产生一个数字:select dbms_random.value from dual;
-
给 tb_goods表的每条数据设置一个随机数字段:select dbms_random.value,g.* from tb_goods 。每次执行每条数据的随机数字段值都是随机产生的。
-
通过随机数字段给 tb_goods表进行升序排序:select dbms_random.value,g.* from tb_goods g orderby dbms_random.value;
-
取排序过后的前三条数据(随机取3条数据):
-
select * from (
select * from tb_goods order by dbms_random.value
) where rownum<=3;
-
dao方法-queryGoodsRandom3:

-
HomeLoadHotNewLbGoodsServlet:
-
该 servlet是用来加载热门商品、最新上架、轮播图图片数据;
-

-
index.jsp页面:index.jsp页面:

-
forEach循环里面的 varStatus 属性的作用:该属性可以指定一个变量名,这个变量名将作为一个新的变量来存储关于迭代状态的信息。
-
index:当前迭代的元素在集合或数组中的索引,从0开始。
-
count:当前迭代的元素在集合或数组中的索引加1。
-
first:一个布尔值,表示当前迭代是否为第一个元素。
-
last:一个布尔值,表示当前迭代是否为最后一个元素。
-
begin:当前迭代的元素在集合或数组中的索引加1。
-
end:集合或数组的大小。
-
-
${str.index==0?'active':''} 的作用:让第一张轮播图处于被激活状态,给class属性添加 active值即可,其它图片就的clas值就添加空白值.
-
运行测试:localhost:8080/JavaWeb/homeLoadHotNewLbGoodsServlet.do
2.1.2最新上架&热门家具数据绑定.
-
思路分析:
-
最新上架商品:从数据库里面通过上架时间降序,取前五条;
-
热门家具商品:从数据库里面通过销量降序,取前五条。
-
-
dao方法:

-
HomeLoadHotNewLbGoodsServlet:

-
index.jsp页面:


-
运行测试....
2.2登录功能.

2.2.1验证码及前端登录验证.
2.2.2登录实现.
-
前端的登录功能逻辑和后台登录功能逻辑一样,只不过跳转的页面不同。如:

-
7天免登录功能独立完成,(#^.^#)
2.3登录状态验证.
-
注,后台和前台的登录状态验证都是在同一个过滤器 SetEncodingCheckLoginFilter里面实现的。如:

2.4包含-include.
2.4.1介绍.
-
incloud是包含的意思。incloud指令和 jsp的 incloud标签可以在一个页面里包含另一个页面;
-
<%@include %>指令语法:<%@incloud file="页面地址" %>
-
<jsp:incloud />标签语法:<jsp:incloud page="页面地址" />
-
两者区别:
-
<%@include %>指令只能包含静态页面;
-
<jsp:incloud />标签可以包含动态页面。
-
-
一般常用于:
-
引入多个页面之间的公共部分内容;
-
引入一些静态资源文件。
-
2.4.2案例演示-优化页面静态资源的引入以及实现绝对路径.
-
编写公共部分页面 head.jsp,在里面动态获取项目名以及其它一些页面需要引入的的公共部分,如:

-
通过 incloud指令引入公共部分文件 head.jsp,如:

2.5游客模式设置.
-
思路:没有登录可以访问前端首页 index.jsp,但是只能浏览商品。
-
实现方式:
-
在登录状态验证的过滤器 SetEncodingCheckLoginFilter里面 index.jsp页面和前端数据加载 homeLoadHotNewLbGoodsServlet.do就要被放行,不能拦截。如:
-

-
-
index.jsp页面顶部先进行数据判断轮播图、最新上架以及热门家具有没有数据,如果没有数据就进入后台 homeLoadHotNewLbGoodsServlet.do 里面获取数据。如:
-

2.6首页导航条处理.
2.6.1首页导航条登录&注册接口处理.
-
思路:如果是游客模式(没有登录),前端首页 index.jsp导航顶部就显示 登录和注册接口;如果非游客模式(已经登录),则不显示 退出 接口。
-
实现方式:在 index.jsp页面的导航条里面判断作用域里面是否保存有用户对象。如:

2.6.2设置首页导航条选项处于激活选定状态.
-
思路:当跳转到哪个页面,导航条对应的页面选项就处于激活选定状态,通过传参处理。
-
在加载数据 homeLoadHotNewLbGoodsServlet.do 跳转到前端 index.jsp页面的时候传参 index=1。如:
-

-
-
在前端 index.jsp页面的导航 "首页"选项这里获取后台传来的 index参数进行判断,如果值是1,则给 “首页”选项的 class属性添加 active值。如:
-

-
注,${param.key}相当于 request.getParameter("key") 用于在jsp页面获取请求参数。
文章详细介绍了MVC设计模式在ZKing家居商城项目中的运用,包括轮播图、最新上架和热门商品的数据绑定,登录功能实现,登录状态验证,页面包含(include)以及游客模式和首页导航条的处理。重点讨论了如何通过DAO和Servlet进行数据交互,降低代码耦合性,提高组件重用性。

5747

被折叠的 条评论
为什么被折叠?



