系列文章目录
文章目录
前言
前面一篇我们讲完,接着优化项目
一、使用El+JSTL优化Jsp表达式
使用El+JSTL优化Jsp表达式主要用在哪里呢?主要就是 登录注册的 回显
【注意】任何功能代码 第一次改,先保留修改痕迹,将之前的代码注释,以防失败能够改回来
【注意2】使用JSTL之前记得要导包和加入标签 ,项目当中我们可以放到base中,这样就可以放一处,其它地方都有了
优化:不让文本独立出来
然后测试一下,后面的写法都是一样
现在我们看注册页面,注册页面就更能够体现出EL 和 JSTL 的优点了
而EL风格是 空根本不显示
其它地方也是如此 直接使用EL
注意上面的写法是有问题的
因为是用的getParameter 所以 EL 中就用 param,这是基础知识,一定要注意,完整如下:
然后测试一下
二、提取welcome.jsp(6个页面)_项目第三阶段完结
使用request域的缺陷
这里我们用session的原因
是因为重定向所以我们用session吗?
如果我们改成转发能不能用request呢?
我们具体问题具体分析
那我们使用request行不行,不行,因为重定向,不是当前请求
如果是转发就可以用request吗?
如果是转发,使用request会有什么样的风险呢?
当前的请求是可以,但是如果换一个页面呢?我们无法保证永远都是当前页码呀!
一定会跳转的,比如登录、注册、结算、购物车这些页面肯定不同
也就是说使用request域一定有bug
因为没有session,所以取一下session
除了index 页面,稍稍有些不同,其它大概有5个页面都需要用到用户信息
运行项目起来,我们发现一个问题即使是没有登录,我们在主页点击购物车,也会进入到购物车页面,并且默认提示如下
进入购物车之前和注册之前需要先判断用户有没有登录
另外注册页面也需要判断一下用户有没有登录,如果已经登录了,就不需要提供注册的服务了
没有登录才提示用户是否登录或者注册,已经登录了肯定就不需要了
所以我们要提取
至此业务分析完了,开始实现
提取welcome.jsp(6个页面)
然后像include里面其它的页面一样,先删掉冗余的代码
然后
复制,粘贴
最后使用EL和JSTL来做处理,如下:
判断是否登录
我们就要知道你登录之后干了啥?
所以只需要判断session里面的 user 是否为空就行
重点关注一下购物车
现在我们的页面是不管你登录没登录都能看到并且进入购物车
正确的应该是必须登录并且填好收件的地址才能够加入购物车
所以登录不能有购物车的超链接
我们遇到一个很尴尬的事情
session是空的 那个 div 里面的购物车链接删掉,移到上面去(session不为空的div)
写完之后我们就可以去使用了
静态包含,不需要被重新编译
其余的页面也是一样,复制粘贴就行了
然后启动服务器,测试
就距离成功近一步了
登录之后:
注意
1、改页面的代码是不用重启服务器的,刷新就行了
2、注意对应关系
getAttribute 对应EL 是 ${requestScope.errorMsg}
getParameter 对应 EL 是 ${param.username}
不对就会出错