JSP
JSP(JAVA Server Page),本质上是Servlet
执行流程
- 浏览器发送对jsp页面的请求
- 服务端在接收到对.JSP的请求时,会将jsp翻译成Servlet(这个Servlet会根据JSP的内容添加response的pageConetext)
语法
使用JSP标签:用来替换jsp中的Java代码的技术规范,jsp标签语法类似于HTML(有属性,有开始标记,结束标记,有标签体)
-
指令 <%@指令名%> 有编译指令和动作指令之分
指令类型 作用 指令 编译指令 page 引入另一页面 include 引入自定义JSP标签 taglib 动作指令 转发 forward 下载服务端JavaBean/Applet到客户端执行 plugin 设置参数 param useBean Property getProperty
-
**声明 **<%!声明%>转化成Servlet时替换为声明局部变量
-
代码 <%代码段%> 转化成可执行代码,不能定义方法
-
**输出 **<%=表达式%>
-
注释 \
内置对象
对象 | 作用域 |
---|---|
application(ServletContext) | 整个Web应用 |
config(ServletConfig) | 整个Web应用 |
session (HttpSession) | 一次会话 |
request(HttpServletRequest) | 整个请求链 |
response | 一次响应 |
pageContext(PageContext) | 整个JSP页面 |
page | 整个JSP页面 |
out | -—— |
exception | —— |
自定义JSP标签
- 编写处理类 重写SimpleTagSupport
- 编写TLD标签库文件
- JSP页面使用<taglib>
- 修改web配置
EL表达式
EL(Expression Language)表达式是一套简单的运算规则,用于给jsp标签的属性赋值。也可以脱离jsp标签直接使用
内置对象:
类别 | 对象 | 描述 |
---|---|---|
JSP | pageContext | PageContext 实例对应于当前页面的处理<br />如:当前jsp所在路径pageContext.request.contextPath |
作用域 | pageScope | 页面作用域属性的的 Map 对象 |
requestScope | 请求作用域属性的 Map 对象 | |
sessionScope | 会话作用域属性的 Map 对象 | |
applicationScope | 应用程序作用域属性的 Map 对象 | |
请求参数 | param | 请求参数的主要值的 Map 对象 |
paramValues | 请求参数的所有值的 Map 对象 | |
请求头 | header | 请求头的主要值的 Map 对象 |
headerValues | 请求头的所有值的 Map 对象 | |
Cookie | cookie | 请求附带的 cookie 的 Map 对象 |
初始化参数 | initParam | Web 应用程序上下文初始化参数的 Map 对象 |
语法
想要获取的数据 | 语法 | 实例 |
---|---|---|
对象 | ${对象名} | ${username} |
对象的成员 | ${对象名.成员名} | ${news.tile} |
对象的方法 | ${对象名.方法名} | |
JSTL标签库
JSP标签集合,封装了JSP应用的通用功能
JSTL标签按功能分为五大类:核心、格式化、SQL、XML、函数
核心标签
库 c.tld
常用标签
-
在JSP页面输出
<c:out value="输出" default="默认值" escapeXml="是否忽略XML特殊字符<true|false>"/>
-
if表达式-判断test将结果存入作用域,如果是true执行标签内容
<c:if test="<boolean>条件" var="<string>存储结果的变量名" scope="<string>var的作用域,默认page"> ... </c:if>
-
选择分支(类似Switch)
<c:choose> <c:when test="<boolean>"> ... </c:when> <c:when test="<boolean>"> ... </c:when> ... ... <c:otherwise> ... </c:otherwise> </c:choose>
-
集合的forEach循环
<c:forEach items="""<object>被循环的集合" begin="<int>开始元素" end="<int>" step="<int>每次循环的步长" var="<string>存放当前循环到的元素的变量名" varStatus="<string>存放循环状态的变量名">
-
字符串分割循环
<c:forTokens items="<string>字符串" delims="<string>分隔符" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
-
try catch块-捕捉错误并将错误存放在page作用域
<c:catch var="<string>错误名"> ... </c:catch>
-
保存数据和移除数据
<c:set var="<string>变量名" value="<string>变量值" target="<string>" property="<string>" scope="<string>存放作用域"/> <c:remove var = "" scope = ""/>
-
创建url
<c:url var="<string>" scope="<string>" value="<string>" context="<string>"> <c:param name="<string>" value="<string>"/> <c:url/>
-
获取一个URL的内容
<c:import url="<string>" var="<string>" scope="<string>" varReader="<string>" context="<string>" charEncoding="<string>"/>
-
页面重定向
<c:redirect url="<string>" context="<string>本地网络应用程序名"/>
网友评论