1.Java Server Pages,Java服务端页面。
2.JSP = HTML + Java代码
3.JSP的作用:简化开发,避免了在Servlet中直接输出HTML标签。

JSP 快速入门

image.png

JSP 原理

1.JSP 本质上就是一个 Servlet。
2.JSP 在被访问时,由JSP容器(Tomcat)将其转换为 Java文件(Servlet),在由JSP容器 (Tomcat)将其编译,最终对外提供服务的其实就是这个字节码文件。
image.png

JSP 脚本

JSP脚本用于在 JSP页面内定义 Java代码。
1.<%
Java代码放在 _jspService方法中
%>
2.<%=变量%> 把数据打印到浏览器
3.<%!
Java代码 会放在成员位置,作为成员变量或成员方法
%>

EL 表达式

image.png
JSP通过EL取出数据。

JSTL 标签

:相当于 if 判断

if标签: 做判断,如果条件为true,就打印里面的内容到浏览器

代码

image.png

:相当于 for 循环

image.png

  1. <%--foreach标签遍历集合
  2. items:要遍历的数据或集合,使用ELrequest取出来
  3. var:随便取名字,保存每次遍历到的元素
  4. varStatus:随便取名字,遍历时的状态对象
  5. index:元素的索引,从0开始
  6. count:要几个,从1开始--%>
  7. <c:forEach items="${brands}" var="brand" varStatus="stat">
  8. <tr align="center">
  9. <td>${stat.count}</td>
  10. <td>${brand.brandName}</td>
  11. <td>${brand.companyName}</td>
  12. <td>${brand.ordered}</td>
  13. <td>${brand.description}</td>
  14. <c:if test="${brand.status==0}">
  15. <td>禁用</td>
  16. </c:if>
  17. <c:if test="${brand.status==1}">
  18. <td>启用</td>
  19. </c:if>
  20. <td><a href="#">修改</a> <a href="#">删除</a></td>
  21. </c:forEach>
  22. </tr>

image.pngMVC 模式和三层架构

MVC 是一种分层开发的模式,其中:
M:Model,业务模型,处理业务;
V:View,视图,界面展示;
C:Controller,控制器,处理请求,调用模型和视图。
MVC 好处:
职责单一,互不影响;
有利于分工协作;
有利于组件重用。
image.png
JSP.pptx
综合案例.pptx
综合案例代码在day25 JSP

会话跟踪技术

会话:
用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应.
会话跟踪技术的作用:
因为Http协议设计成无状态协议,每次请求和响应都是独立的,多次请求无法共享数据。
会话跟踪技术: 解决一个会话的多次请求间共享数据:
Cookie: 浏览器保存数据
Session: 服务器保存数据

Cookie

Cookie 基本使用

image.png

Cookie 原理

Cookie的实现是基于HTTP协议的
响应头:set-cookie
请求头:cookie
image.png

Cookie 使用细节

1.设置Cookie的过期时间,单位是秒;
2.默认值为负数,当浏览器关闭则Cookie被销毁;
_3.零:删除对应的Cookie。
_cookie.setMaxAge(60);

Tomcat 8 Cookie可以存储中文不能存储空格
String encode = URLEncoder.encode(“张 三”, “UTF-8”);
Cookie cookie = new Cookie(“username”, encode);
但是读取的时候需要进行URL解码
_value=URLDecoder._decode
(value,”UTF-8”);

Session

服务端会话跟踪技术:将数据保存到服务端;
JavaEE 提供 HttpSession接口,来实现一次会话的多次请求间数据共享功能。

Session 基本使用

// 1.获取Session对象
_HttpSession session = request.getSession();
// 2.存储数据
_session.setAttribute(“username”,”李四”);
session.setAttribute(“money”,300);

// 1.获取Session对象
_HttpSession session = request.getSession();
// 2.获取数据
_String username = (String) session.getAttribute(“username”);
Integer money = (Integer) session.getAttribute(“money”);

Session 原理

Session是基于Cookie实现的
image.png

Session 使用细节

image.png
// 3.获取Session过期时间: 默认1800秒 = 30分钟
//获取Session最大非活动时间(Session自动销毁)
_int interval = session.getMaxInactiveInterval();
// 4.立即销毁session,会话失效后不能再使用这个会话了
_session.invalidate();

Cookie和Session的区别:

Cookie 和 Session 都是来完成一次会话内多次请求间数据共享的;
区别:
1.键值对数量:Cookie 存一个键和一个值,Session 存n个键和值;
2.存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端;
3.安全性:Cookie 不安全,Session 安全;
4.数据大小:Cookie 最大4KB,Session 无大小限制;
5存储时间:Cookie默认浏览器关闭,Session 默认30分钟;
6.服务器性能:Cookie 不占服务器资源,Session 占用服务器资源。

登录综合案例

用户登录:

登录页面思路.png

用户登录代码.png
保存用户的账号和密码到Cookie中.png

注册用户:

注册页面思路.png
注册页面代码.png

image.png
能够使用会话跟踪技术完成验证码功能
1.生成验证码时,把验证码文字保存到session;
2.用户注册时填写验证码,在Servlet中得到用户填写的验证码和Session中的验证码对比,验证码正确才进行注册。
验证码问题.png
能一直点击图片更换验证码.png