JSP
- 当前项目根目录
- 当前地址
- 当前电脑名(当前服务器名)
- 当前端口号
- 远程地址
- 请求的服务器端页面地址
- 地址栏参数列表(get方式才有)
- 发送请求的地址(功能有:请求路径(防止别人盗用你的链接))
购物车存储方式:
1)保存在session中;此次项目保存在session中
2)保存在cookie中;
3)保存在数据库中
不同方式的优缺点:
- Session(Memcached)方式
优点:购物车信息保存在服务端,可以保存1M 信息。
缺点:1)对于大型网站会占有过多的服务器内存资源,造成服务器压力过大。
2)Session保存的信息会在用户退出登录后丢失。用户下次登录,购物车中商品信息丢失,用户只能从新选择。
2.Cookie方式
优点:购物车信息存储在客户端,不占用服务器资源,基本可以到达持久化存储。
缺点:Cookie有大小的限制,不能超过4K,而且不够安全、不能对用户购买行为分析统计 如果是个人PC机,Cookie能很好的保存购物车信息. 但如果是公共办公环境,Cookie保存的信息基本就失效了(会被其他人购物车信息覆盖)。 对于大型的电子商务网站,需要对用户的购买行为进行分析,如果把购物车信息保存在Cookie中,则不能对用户购买行为分析统计。 - 数据库存储
优点:持久化存储,可以分析用户购买行为。
缺点: 网站速度变慢,成本和维护增加。
Cookie: 保存不需要安全性的数据,数据存储存id就可以了
以键值对的方式存储
Request(请求):得到所有cookie
Response(响应):发送到客户端
Cookie常用属性:SetMaxAge cookie的有效期以秒为单位
手动登录cookie: 1.判断是否存在cookie保存过用户信息,循环遍历
2如果有则存到变量
Session(key(键值名),value(值))
Session:保存用户状态
根据浏览器的存在与否来决定关闭
过期时间默认为20分钟
浏览器未关闭的时候判断登录状态
已登录显示用户名,否则显示登录注册
Application:用于整个网站的共享数据,通过set、get方式去访问
三层架构:数据访问层,业务逻辑层,表示层
dao,service,entity
三层开发遵循的原则
A. 上层依赖于下层,依赖关系不跨层
B. 下一层不能调用上一层
C. 在上一层中不能出现下一层的概念
JSTL : JSP标准标签库
先引用标签库:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
通用标签的使用
set:设置指定范围内的变量值
out:计算表达式并将结果输出显示
remove:删除指定范围内的变量
if条件标签:<c:if test=”codition” var=”name” scope=”applicationArea”/c:if>
if条件标签没有if….else结构
在session中保存了一个(list)集合users
test:判断条件表达式返回TRUE/FALSE
var:定义一个变量,保存返回的结果 返回TRUE/false
scope:作用域,默认page
<c:choose>标签
<c:choose>标签用于提供条件选择上下文,它必须与<c:when>与<c:otherwise>标签一同使用,使用<c:choose>、<c:when>和<c:otherwise>三个标签,可以构造复杂的“if-else-else”条件判断结构
<c:choose>仅有一个test属性
EL表达式:语法结构为
e
x
p
r
e
s
s
i
o
n
,
它
必
须
以
“
{expression},它必须以“
expression,它必须以“{”开始,以“}”结束。其中间的expression部分就是具体表达式内容。
迭代标签:实现对集合中对象的遍历
<c:forEach items=”collection” var=”name” varStatus=””>
Items:指定要遍历的集合对象,从程序中获取的数据
Var:指定集合内数据的变量名称
varStatus:表示迭代的状态,可以获得迭代自身信息