web复习day06:jsp&el&jstl
回顾:
会话: 一次通话
会话作用: 保存浏览器和服务器交互过程中所产生的数据.
会话cookie: 浏览器端
由服务器创建 保存在浏览器上 存放的数据不安全 存放的大小受限(4kb) 存放文本格式的数据 cookie属于缓存的一种 cookie中不能存放特殊的字符 API: Cookie c = new Cookie(String,String); c.setMaxAge(3600秒); response.addCookie(c); // 本质上就是给set-cookie头设置信息 默认绑定路径: 访问路径的上一层 c.setPath("/项目名称/aa"); 携带cookie: 规则: 访问路径字符串包含原则 Cookie []cookies = request.getCookies(); cookie.getName(); cookie.getValue();
会话session: 服务器
执行流程: 请求没有携带jsessionid: request.getSession(); // 创建空间并返回jsessionid jsessionid丢失: 请求没有携带jsessionid 携带jsessionid: 找到了session空间,直接使用 没有找到session空间,创建一个新的session,并返回jsessionid API: request.getSession(); //1.创建session空间,并返回jsessionid(session的唯一标识) //2.根据jsessionid找到对应的session空间,进行使用 session的声明周期: 创建: 请求不携带jsessionid就会创建session对象 请求携带jsessionid,但未找到对应的session空间 销毁: 服务器非正常关闭 session超时 手动销毁 session.invalidate();
servlet中三大作用域:
request: 请求对象 创建: 请求来的时候 销毁: 响应信息生成的时候 作用域范围: 当前请求 api: setAttribute(String,Object); // 设置同名属性即是修改 getAttribute(String); removeAttribute(String); session: 会话对象 创建: 请求不携带jsessionid就会创建session对象 请求携带jsessionid,但未找到对应的session空间 销毁: 服务器非正常关闭 session超时 手动销毁 session.invalidate(); 作用域范围: 当前会话 api: setAttribute(String,Object); // 设置同名属性即是修改 getAttribute(String); removeAttribute(String); servletContext: 上下文对象 创建: 服务器启动时 销毁: 服务器关闭时, 或项目从服务器上移除 作用范围: 当前项目 api: setAttribute(String,Object); // 设置同名属性即是修改 getAttribute(String); removeAttribute(String);
jsp&el&jstl
JSP(java服务器页面)
jsp概述:
JSP全名为Java Server Pages,中文名称java服务器页面,本质上就是一个Servlet,是服务器上的一种动态的网页技术. 简单理解 在html页面中嵌套java代码 高大上理解 将页面的展示 和 内容的生成相分离
作用:
展示动态的信息
jsp后缀名
*.jsp
jsp组成部分
html + java + jsp特有内容(三大指令,四大作用域,九大内置对象) // 需求: 访问servlet返回一个表格 // 由于通过servlet返回html信息相当痛苦,我们使用jsp代替servlet完成展示.
jsp执行流程
第一次访问jsp(index.jsp)页面时,服务器接收请求,由jspservlet来处理该请求. 1.jspservlet会去查找对应的jsp文件 2.找到之后,服务器会将jsp文件转换成java文件(index_jsp.java) 3.服务器编译java文件,生成class文件 4.服务器运行class文件,生成动态的内容,并返回给浏览器. ==理解:== 当浏览器访问 *.jsp 时,统一由JspServlet处理这类请求, 找到对应的jsp页面,转成java类(就是Servlet) 然后让转完后的servlet执行(_jspService),返回的信息就是jsp页面中的html代码
jsp特有内容
jsp脚本
如何在jsp页面写java代码
编写java程序片段 <% ...... %> 输出信息表达式 <%= ... %> 声明成员变量 <%! ... %>
jsp注释
<%-- 注释内容 --%> 注释使用时: ctrl+shift+ /
扩展:
jsp特有内容(三大指令,四大作用域,九大内置对象)
三大指令:
page
taglib : 引入第三方标签库
include : 包含其他页面
四大作用域:
pageContext(PageContext) : 当前页面
request(HttpServletRequest)
session(HttpSession)
application(ServletContext)
九大内置对象:
jspServlet在将jsp页面转成java时,实现定义好的9个对象,目的是给jsp页面提供方便,在jsp页面中可以直接使用内置对象
request
response
session
application
pageContext
page
config
out
exception
html + ajax:
jsp本质上就是一个servlet
jsp组成:
html + java + jsp特有内容(三大指令,四大作用域,九大内置对象)
java:
<% java代码片段 %>
<%=输出的内容 %>
<%! 声明全局变量 %>
在jsp页面上获取 request session 和 servletContext作用域中的数据信息
<% String str = request.getAttribute("aa"); .... %>
<%=str%>
EL表达式作用: 代替输出<%=request.getAttribute("aa")%>
${"aa"}
el和jstl: 简化jsp页面中的java代码,增强jsp页面的功能
el表达式
全称:Expression Language(表达式语言) jsp2.0以后内置el
作用:
主要用来代替 <%= %>
格式:
${表达式}
常见功能
获取作用域中的数据
获取指定域中的数据信息:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>获取域中的简单数据信息</h3>
<%
// 向域中存放数据信息
pageContext.setAttribute("pkey","pvalue"); // 当前页面的作用域
request.setAttribute("rkey","rvalue");
session.setAttribute("skey","svalue");
application.setAttribute("akey",47); // servletContext
request.setAttribute("aa.bb","哈哈哈"); %> <%-- pageScope: 代表的就是pageContext对象 --%> 获取pageContext域中的数据信息: <br> 原始: <%=pageContext.getAttribute("pkey")%> <br> EL表达式: ${pageScope.pkey} <br> <hr> 获取request域中的数据信息: <br> 原始: <%=request.getAttribute("rkey")%> <br> EL表达式: ${requestScope.rkey} <br> <hr> 获取session域中的数据信息: <br> 原始: <%=session.getAttribute("skey")%> <br> EL表达式: ${sessionScope.skey} <br> <hr> 获取servletContext域中的数据信息: <br> 原始: <%=application.getAttribute("akey")%> <br> EL表达式: ${applicationScope.akey} <br> <hr> 获取request域中的数据信息: <br> 原始: <%=request.getAttribute("aa.bb")%> <br> EL表达式: ${requestScope["aa.bb"]} <br> <hr> 获取不到信息时: <br> 原始: <%=request.getAttribute("aaaaaa")%> <br> EL表达式: ${requestScope.aaaaaa} <br>
</body>
</html>
获取简单数据信息
pageScope : pageContext
requestScope : request
sessionScope : session
applicationScope : servletContext
==便捷查找==
${域中属性的名称} 注释: 在所有作用域中依次从小到大查找指定的属性名所对应的值 若找到立即返回并结束查询 若找不到返回 "" pageContext request session application
注意事项
属性名中一旦使用了"." "+" "-"等特殊符号的时候${属性名}就取不到了,要使用{域Scope["属性名"]} 例如:${requestScope["aa.bb"]} <% request.setAttribute("aa.bb","abc"); %> <hr> 老方式: <%=request.getAttribute("aa.bb")%> <br> el方式: ${aa.bb} --- ${requestScope["aa.bb"]} 获取复杂数据
获取数组中的数据
格式 ${数组属性名称[index]} 例子: request.setAttribute("arr", new String[]{"aa","bb","cc"}); 获取的时候 ${arr[1]}
获取list中的数据
格式 ${list属性名[index]}
获取map中的数据
格式 ${map属性名称.键名}
获取javabean中的数据
格式 ${javabean在域中的属性名称.属性名称}
jstl:
apache出品的标签库语言
作用:
增强jsp页面的功能, 在jsp页面上少写java代码
分类
core:核心(目前还在使用) fmt:格式化(国际化) xml:和xml相关的(过时了) json sql:和sql相关的(过时了) fn:对字符串处理的函数库(用的很少了)
使用步骤:
1.导入jar包 2.在页面上引入标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
if标签的使用
格式:
<!--当el表达式返回true时,标签体中的数据会被输出-->
<c:if test="el表达式">...</c:if>
<!--扩展(了解)
将el表达式的结果起个名称为flag 默认会放入page域中
page pageContext
request request
session session
application application
-->
<c:if test="el表达式" var="flag" scope="">...</c:if>
forEach标签的使用
<!-- 基本使用 -->
<c:forEach begin="从哪开始" end="到哪结束" step="步长" var="给变量起个名称">${i }</c:forEach>
<!-- 例子 -->
<c:forEach begin="1" end="20" step="1" var="i">
${i}
</c:forEach>
<!-- 高级使用 -->
<!-- 在页面上遍历数组,单列集合和map -->
<!-- 格式: -->
<c:forEach items="从域中通过el获取集合" var="n">
${n}
</c:forEach>
<!--属性:varStatus
用来记录循环状态的,有几个常用的属性:
index:
count:
first:
last:
-->
javaEE开发的模式(思想 理解)
MVC模式 -- 属于所有的web开发
发展历史
model1
技术架构: jsp + javaBean jsp:负责处理业务逻辑 页面展示 javaBean: 实体封装 负责处理简单的业务逻辑 优缺点 优点 开发效率高 缺点 随着业务的复杂性,导致jsp中的业务越来越多,不方便维护
model2
技术架构:jsp+servlet+javaBean jsp:页面展示 servlet:负责处理业务逻辑 javaBean:负责处理业务逻辑 实体封装 优缺点 优点 逻辑清晰 方便维护 缺点 小型项目开发没有 model1 效率高
M:model 模型
封装数据 ---- javaBean 主要封装数据 业务处理
V:view 视图
页面展示 ---- jsp 作用:页面展示
C:controller 控制器
控制执行流程---- servlet 作用:与客户端交互
javaEE的三层架构
通过分包实现 web(action | controller ): 接收请求和前台交互 service: 处理业务逻辑 dao: 操作数据库 domain: 实体 utils: jsp: 展示信息
- jsp & el & jstl
- day_1_13 JavaWeb系列学习总结之jsp&el&jstl
- jsp & el & jstl
- JSP模式&EL&JSTL(2)
- jsp & el & jstl
- jsp笔记整理(servlet&jstl&el&jsp标准动作)
- jsp & el & jstl
- 复习java web之jsp入门_El表达式_JSTL标签库
- day12-jsp&el&jstl
- Java复习第六天---EL&JSTL基础知识
- jsp & el & jstl
- JSP JSTL EL 删除空行 <%@ page trimDirectiveWhitespaces="true" %>
- jsp^jstl&el
- jsp&el&jstl
- JavaWeb--------el & jstl
- JSP模式&EL&JSTL(1)
- JAVA WEB从入门到精通day13 Jsp详解和EL,JSTL详解
- Day20-jsp & el & jstl
- 【javaweb:el&jstl】通过模拟用户登录,使网页"登录""测试"部分变成“用户”和“退出”
- java攻城师之路--复习java web之jsp入门_El表达式_JSTL标签库