JSP
JSP:Java Server Page SUN 公司提供的动态网页编程技术,是 Java Web 服务器端的动态资源。
注释
① 显示注释语法:从 HTML 风格继承而来
这种注释是允许客户端看见的
② 隐式注释语法:从 JAVA 风格继承;JSP 自己的注释
此种注释是客户端无法看见的
JSP 的三种注释方式:
1) // 注释,单行注释 /* 多行注释*/
2)<!-- HTML风格的注释 -->
3)<%-- JSP注释 --%>
Scriptlet(脚本小程序)
所有嵌入在 HTML 代码中的 Java 程序
三种脚本
<%! 成员变量%>
<% 局部变量 %>
<%= 原样输出 %>
页面包含
静态包含
<%@ include file=''target.jsp"%>
被包含的页面要知根知底
被编译一个文件
动态包含
<jsp:include page='target.jsp'>
包含页面和被包含页面是2个文件
(2)动态包含的特点:
①动态包含将被包含的JSP页面翻译成.java.class文件
②动态包含还可以传递参数
③动态包含底层使用如下代码调用被包含的JSP页面执行输出:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, “/foot.jsp”, out, false);
JSP的四大域对象
范围
1. page
pageContext : 只在一个页面中保存属性,跳转之后无效
2. request
request : 只在一次请求中保存,服务器跳转后依然有效
3. session
session : 在一次会话范围中,无论何种跳转都可以使用
4. application
application : 在整个服务器上保存
方法
public void setAttribute(String name, Object o) 设置属性的名称及内容
public Object getAttribute(String name) 根据属性名称取属性
public void removeAttribute(String name) 删除指定的属性
验证属性范围的特点
1. page
本页面取得,服务器端跳转()后无效
2. request
服务器跳转有效,客户端跳转无效
3.session
无论客户端还是服务器端都可以取得,但是现在重新开启一个新的浏览器,则无法取得之前设置的session了,因为每一个session只保存在当前的浏览器当中,并在相关的页面取得。对于服务器而言,每一个连接到它的客户端都是一个session如果想要让属性设置一次之后,不管是否是新的浏览器打开都能取得则可以使用application
4. application
所有的application属性直接保存在服务器上,所有的用户(每一个session)都可以直接访问取得只要是通过application设置的属性,则所有的session都可以取得,表示公共的内容,但是如果此时服务器重启了,则无法取得了,因为关闭服务器后,所有的属性都消失了,所以需要重新设置
问:使用哪个范围呢?
答:在合理范围尽可能小
EL表达式
EL(Expression Language) 是为了使 JSP 写起来更加简单。
EL表达式的语法
语法结构: ${expression}
EL 表达式一般操作的都是域对象中的数据,操作不了局部变量
域对象的概念在 JSP 中一共有四个:pageContext, request, session, application;范围依次是,本页面,一次请求, 一次会话,整个应用程序。
内置对象
pageScope
requestScope
sessionScope
applicationScope
作用域取值,没有值,不报错
${name} 没有指定作用域对象,他根据作用域的大小从小到大一次扫描,若指定了作用域对象,则不会再去一次搜索或者扫描
el作用:一般对作用域里数据进行获取,运算,展示
el获取list集合:${list[index]}
el获取map集合:${map.key}或¥{map[key]}
el获取javabean集合:${user.uname}
JSP九大内置对象
request:请求对象
response:响应对象
pageContext:JSP的上下文对象
session:会话对象
application:ServletContext对象
config:ServletConfig对象
out:JSP输出流对象
page:指向当前JSP的对象
exception:异常对象
MVC模式
M:model javaBean
V:view html,jsp.freemarker
C:controller servlet....
JSTL
JSTL:Java Servlet Pages Standrad Tag Libray : JSP标准标签库
是一个定制标签类库的集合,用于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库操作等
常用标签
核心标签
core
c标签
c:if
属性
test:条件,是必要,无默认值
var:用于存储条件结果的变量(仅限域变量名),不必要,无默认值
scope:var属性的作用域,可取值:page|request|session|application,不必要,默认值page
c:set
c:choose,when,otherwise
c:foreach
forEach标签
属性
items 要被循环的数据 否 无默认值
begin 开始的元素(0=第一个元素,1=第二个元素) 否 0
end 最后一个元素(0=第一个元素,1=第二个元素) 否 Last element
step 每一次迭代的步长 否 1
var 代表当前条目的变量名称 否 无
varStatus 代表循环状态的变量名称 否 无
items:获取目标作用域里面的对象
var:声明变量存储目标对象
varStatus
index:索引 ${status.index}
first:是否第一个对象
last:是否最后一个
count:统计数量
格式化
格式化数字:formatNumber
格式化日期:formatDate
转换
ParseNumber
ParseDate