MVC设计模式.

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

1.1MVC模式介绍.

  • mmodel模型;vview视图;cctronl控制器。v对应的就是jsp文件;c对应的就是servlet文件;而其它的biz包、dao包、实体包和util包都是m


1.2MVC设计模式的优点.

  1. 降低代码耦合性:在 MVC 模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应层的代码而不会影响到其他层的代码。

  2. 有利于分工合作:在 MVC 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可进行开发视图层中的 JSP,而对业务熟悉的人员可开发业务层,而其他开发人员可开发控制层。

  3. 有利于组件的重用:如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。


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,但是只能浏览商品。

  • 实现方式:

    1. 在登录状态验证的过滤器 SetEncodingCheckLoginFilter里面 index.jsp页面和前端数据加载 homeLoadHotNewLbGoodsServlet.do就要被放行,不能拦截。如:

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


2.6首页导航条处理.

2.6.1首页导航条登录&注册接口处理.

  • 思路:如果是游客模式(没有登录),前端首页 index.jsp导航顶部就显示 登录注册接口;如果非游客模式(已经登录),则不显示 退出 接口。

  • 实现方式:在 index.jsp页面的导航条里面判断作用域里面是否保存有用户对象。如:


2.6.2设置首页导航条选项处于激活选定状态.

  • 思路:当跳转到哪个页面,导航条对应的页面选项就处于激活选定状态,通过传参处理。

    1. 在加载数据 homeLoadHotNewLbGoodsServlet.do 跳转到前端 index.jsp页面的时候传参 index=1。如:

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

  • 注,${param.key}相当于 request.getParameter("key") 用于在jsp页面获取请求参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值