jsp(自用)

<%//第一种:java脚本段
    //定义局部变量
    String str = "hello jsp";
    //输出内容到控制台
    System.out.println(str);
    //输出内容到浏览器
    out.print(str);
    //输出全局变量
    out.write("" + num);
%>
<%!//第二种:声明全局变量,方法类
    int num = 2;
%>
    <%--第三种:输出表达式--%>
<%=str %>

JSP指令

JSP指令元素的语法
语法:

<%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>

JSP指令元素的分类
page指令:指示JSP的页面设置属性和行为
include指令:指示JSP包含哪些其他页面
taglib指令:指示JSP页面包含哪些标签库

page指令

写法:

<%@ page 属性名=属性值 %>

Page指令用来定义JSP文件的全局属性。
这些属性可以单独使用,也可以几个或多个同时使用。
在JSP页面中,只有import属性可以出现多次,其他属性都只能出现一次。

Page指令属性

language属性:声明使用脚本的语言。只能是java。
extends属性:标明JSP编译成Servlet的时候继承的类。默认值:HttpJspBase。
session属性:标明JSP中是否可以直接使用session对象。默认值是true。
buffer属性:标明JSP对客户端输出缓冲区大小。默认值8kb。
autoFlush属性: 如果缓冲区大小溢出,是否自动刷出。默认true。
import属性:用于导入Java包或类。
contentType属性:标明JSP被浏览器解析和打开的时候采用的默认的字符集。
pageEncoding属性:JSP文件及JSP翻译后的Servlet保存到硬盘上采用字符集。
isErrorPage属性:处理JSP页面异常。
errorPage属性:处理JSP页面异常。
isELIgnored属性:通知JSP是否忽略EL表达式。

Include指令

Include指令简介
写法:

<%@ include 属性名=属性值%>

作用:
在JSP页面中静态包含一个文件,同时由该JSP解析包含的文件内容。
Include指令属性
file属性: 指示JSP页面包含页面路径。
Include指令原理(静态包含原理)
在执行前不包含的jsp文件复制到包含位置

注意地方:

应该将被包含的页面的结构去掉。
在被包含的页面中定义变量,在包含的页面中还可以使用。

Taglib指令

Taglib指令简介
写法

<%@ taglib 属性名=属性值%>

作用:
用于在JSP页面中引入标签库。
Taglib指令属性
uri属性: 引入的标签库的路径
prefix属性: 引入标签库的别名

什么是JSP的内置对象

JSP的内置对象:指的是可以直接在JSP页面中使用的对象。

JSP的内置对象有哪些

JSP当中有9大内置对象:
request :从客户端向服务器发送的请求对象
response :从服务器端向客户端作出响应对象
session :服务器为客户端创建会话对象
application :代表应用。获得的ServletContext对象。
out :向输出流写入内容的对象。
page :当前的JSP翻译成Servlet后的对象的引用。
pageContext :本JSP的页面的上下文对象。
config :本JSP的ServletConfig对象。
exception :表示JSP页面运行时产生的异常对象。

JSP的内置对象具体类型

request			HttpServletRequest
response		HttpServletResponse
session			HttpSession
application		ServletContext
config			ServletConfig
page			Object
pageContext		PageContext
out				JspWriter
exception		Throwable

JSP的四个作用范围

PageScope :页面范围。
页面范围指的是在当前的页面内有效,出了这个页面,用pageContext保存的数据就无效了。
RequestScope :请求范围。
从客户端向服务器发送一次请求,服务器对这次请求作出了响应之后,用request保存的数据就无效了。
SessionScope :会话范围。
每个浏览器向服务器发送请求(多次请求)。将该会话结束。
ApplicationScope :应用范围。
在整个应用中任意的地方都可以获取。
JSP的四个作用范围演示
pageContext对象向四个域范围存取数据

findAttribute方法:
查找属性方法:先根据小范围的名称进行查找,如果找到了就返回,如果没有找到就会去比其大一个域的范围进行查找。

<%
//    request.setAttribute("name","张三");
//    session.setAttribute("name","李四");
//    application.setAttribute("name","赵六");
    pageContext.setAttribute("name","王二");
    pageContext.setAttribute("name","张三",pageContext.REQUEST_SCOPE);
    pageContext.setAttribute("name","李四",pageContext.SESSION_SCOPE);
    pageContext.setAttribute("name","赵六",pageContext.APPLICATION_SCOPE);

%>
<%=pageContext.getAttribute("name")%>
<%--<%=request.getAttribute("name")%>--%>
<%--<%=session.getAttribute("name")%>--%>
<%--<%=application.getAttribute("name")%>--%>
<%=pageContext.getAttribute("name",pageContext.REQUEST_SCOPE)%>
<%=pageContext.getAttribute("name",pageContext.SESSION_SCOPE)%>
<%=pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE)%>
<%=pageContext.findAttribute("name")%>

JSP的动作标签

JSP的动作标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码,造成jsp页面难以维护。
常用的动作标签
<jsp:forward/> :请求转发。
<jsp:include/>:包含(动态包含)。
<jsp:param/>:传递参数。

动态包含的原理
在执行过程中,把包含页面的结果放入包含位置

EL的概述

EL和JSTL一起使用取代JSP页面中嵌入Java代码写法。

EL功能

EL获取数据
EL执行运算
EL获取web开发常用的对象
EL调用Java方法
EL语法

语法:

${ EL表达式 }
<%
//    request.setAttribute("name","张三");
//    session.setAttribute("name","李四");
//    application.setAttribute("name","赵六");
    pageContext.setAttribute("name","王二");
    pageContext.setAttribute("name","张三",pageContext.REQUEST_SCOPE);
    pageContext.setAttribute("name","李四",pageContext.SESSION_SCOPE);
    pageContext.setAttribute("name","赵六",pageContext.APPLICATION_SCOPE);

%>
<%=pageContext.getAttribute("name")%>
<%--<%=request.getAttribute("name")%>--%>
<%--<%=session.getAttribute("name")%>--%>
<%--<%=application.getAttribute("name")%>--%>
<%=pageContext.getAttribute("name",pageContext.REQUEST_SCOPE)%>
<%=pageContext.getAttribute("name",pageContext.SESSION_SCOPE)%>
<%=pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE)%>
<%=pageContext.findAttribute("name")%>
${pageScope.name}<br/>
${sessionScope.name}<br/>
${applicationScope.name}<br/>
${requestScope.name}<br/>
<h3>EL简写</h3>
${name}

EL如何获取数据

EL表达式语句在执行的时候,会调用pageContext.findAttribute()方法。分别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回””(不是null,是空的字符串)。EL所获取的数据需要在四个作用范围中。

<%
    String [] arrs = {"aa","bb","cc"};
    pageContext.setAttribute("arrs",arrs);
    List<Integer> list = new ArrayList<>();
    list.add(1);list.add(2);list.add(3);
    pageContext.setAttribute("list",list);
    Map<String,Integer> map = new HashMap<>();
    map.put("kang",20);map.put("wu",19);map.put("yang",20);
    pageContext.setAttribute("map",map);
%>
${arrs[0]}<br/>
${list[1]}<br/>
${map.get("wu")}<br/>
${map.wu}<br/>
${map["wu"]}<br/>

EL获取web开发常用对象

常用对象有哪些
EL表达式定义了11个web开发常用对象。使用这些对象可以很方便获取web开发冲的一些常见对象,并可以读取这些对象中的数据。

pageContext		:相当于JSP内置对象中pageContext
pageScope		:获取指定域下的名称的数据
requestScope		:获取指定域下的名称的数据
sessionScope		:获取指定域下的名称的数据
applicationScope	:获取指定域下的名称的数据
param			:在页面中接收请求参数(接收一个名称对应一个值参数)。
paramValues		:在页面中接收请求参数(接收一个名称对应多个值参数)。
header			:在页面上获取请求头(获取一个key对应一个value 头)
headerValues		:在页面上获取请求头(获取一个key对应多个value 头)
cookie			:访问cookie的名称和值(${cookie.key.name} ${cookie.key.value})
initParam			:获取全局初始化参数的值

为什么学习JSTL

主要和EL来取代传统页面上直接嵌入Java代码写法。提升程序可读性、维护性和方便性。

JSTL的标签库

c标签(core标签库)
fmt标签(国际化标签库)
xml标签
sql标签
jstl函数库(EL函数)

JSTL的入门

引入JSTL的jar包
 
新建JSP页面
 
引入标签库
 
使用JSTL
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:set value="bbb" var="name" scope="page">
    ${name}

if的标签使用

if标签的属性

test属性	:条件
var属性	:将test中的条件的值赋给一个变量,在var中定义变量
scope属性:作用范围
<c:set var="i" value="10" scope="page"></c:set>
<c:if var="flog" test="${i >= 10}" scope="page">
    <h3>i:${i}</h3>
</c:if>
<c:if test="${i < 10}">
    <h3>小于10</h3>
</c:if>
<c:if test="flog >= 10">
    flog:${flog}
</c:if>

foreach标签的使用

<%
    String[] arrs = {"aaa","bbb","ccc"};
    List<Integer> list = new ArrayList<>();
    list.add(1);list.add(2);list.add(3);
    Map<String,Integer> map = new HashMap<>();
    map.put("kang",20);map.put("wu",19);map.put("yang",20);
    pageContext.setAttribute("arrs",arrs);
    pageContext.setAttribute("list",list);
    pageContext.setAttribute("map",map);
%>
<h3>遍历数组</h3>
<c:forEach var="s" items="${arrs}">
    ${s}
</c:forEach>
<h3>遍历list</h3>
<c:forEach var="l" items="${list}">
    ${l}
</c:forEach>
<h3>遍历map</h3>
<c:forEach items="${map}" var="entry">
    ${entry.key}-${entry.value}
</c:forEach>
<h3>遍历1-100</h3>
<c:forEach var="i" begin="1" end="10" step="1">
    ${i}
</c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值