jsp
java 服务页面
作用:
将内容生成和展示分离
运行在服务器端,本质上就是servlet 产生的java文件和class文件 保存到tomcat的work目录下
jsp脚本
<% ...%>java代码片段
<%=..%>输出表达式 相当于 out.print();
<%!..%>声明成员
jsp指令
声明jsp页面的属性和动作
格式:
<%@指令名称 属性=”值“ 属性=”值“%>
jsp指令分类
page:主要声明jsp页面的属性
include:静态包含
taglib:导入标签库 JSTL
注意:
一个页面中可以出现多个指令
指令可以放在任何位置,一般放在jsp页面的上面
page指令:
重要属性:3个
contextType:设置响应流的编码 及时通知浏览器用什么编码打开,设置文件类型 minmeType
pageEnconding:设置页面编码
import:导入所需要的包
contextType和pageEnconding联系
若两者都出现的时候,各自使用各自编码
若只出现一者,两个都是用出现的编码
若两者都不出现使用服务器默认编码 tomcat iso-8859-1
了解熟悉:
language:当前jsp页面可以嵌套语言
buffer:设置jsp缓冲流的大小
autoFlush:是否自动刷新
extends:声明jsp页面继承哪个类,必须继承httpServlet 及其子类
session:设置jsp页面是否使用session对象
isELIgnored:是否忽略EL表达式
errorPage:当前页面出现异常会跳转的页面
isErrorPage:当前jsp页面是否是错误页面
如果 true使用jsp页面的一个内置对象 exception
include命令:
静态包含,就是将其他页面或servlet内容包含进来,一起进行编译运行 生成一个java文件
格式:
<%@include file="相对路径 或内部路径"%>
例子:
<%@include file="/8.jsp"%>
路径:
相对路径:
./或者什么也不写 当前路径
上一级../
绝对路径:
带协议和主机的绝对路径
不带协议和主机的路径
内部路径:
不带协议和主机的路径 去掉项目名
请求转发 静态包含 动态包含
taglib命令:导入标签库
格式:
<%@taglib prefix="前缀名" uri="命名空间"%>
导入之后:
<前缀名:标签..>
例如:
=========================================================================================
jsp的内置对象:★★★(9大内置对象)
在jsp页面上可以直接使用的对象
内置对象 类型
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
exception Throwable
page Servlet(this)
config ServletConfig
application ServletContext
pageContext PageContext
jsp的域对象:理解
application 整个项目
session 一次会话**
request 一次请求**
pageContext 一个页面
pagecontext作用:理解
1.域对象
xxxAttribute()
2.操作其他域对象
方法:
xxxAttribute(...,int scope);
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
3.获取其他的内置对象
getXxx()
注意:
getRequest():获取request内置对象
4.便捷查找,
findAttribute(String key):
依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找
若查找不到,返回一个null
jsp的动作标签
就是将被包含页面或者servlet的运行结果包含到当前页面中.
=========================================================================================
el:
jsp的内置表达式语言,从jsp2.0开始.
用来替代<%=..%>
作用:
1.获取域中数据 ★
2.执行运算 ★
3.获取常见的web对象
4.调用java的方法
格式:
${el表达式}
获取域中数据:★
注意:★
若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
例如:
${requestScope["arr.age"] }
获取简单数据
${pageScope|requestScope|sessionScope|applicationScope.属性名}
以后经常使用:
${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找
若查找不到,返回""
获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称.键名} ${u.name} u.getName(); <%=u.getName()%>
javabean导航*****
javabean:
java语言编写的一个可重用的组件,
狭义上来说就是我们编写的一个普通的java类 例如:User Student
javabean规范:
1.必须是一个公共的具体的类 public class
2.提供私有的字段 private String id;//id称之为字段
3.提供公共访问字段的方法 get|set|is方法
public String getId(){..}
一旦有公共的方法之后,get|set|is之后的内容,将首字母小写,将这个东西称之为bean属性
id就是一个bean属性
4.提供一个无参的构造器
5.一般实现序列化接口 serializable
${域中javabean名称.bean属性}
=========================================================================================
执行运算:
四则运算 关系(>..) 逻辑(&& ||)
注意:
+:只能进行加法运算,字符串形式数字可以进行加法运算.
empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空
${empty 域中的对象名称}
三元运算符
=========================================================================================
el的内置对象(了解)
11个
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haederValues
initParam
cookie★
pageContext★(el的内置对象 JSP九大内置对象之一)
注意:
除了pagecontext其余对象获取的全是map集合
了解:和参数相关的el内置对象
param
paramValues
了解:和请求头相关的el内置对象
header
haederValues
了解:和全局初始化参数相关的el内置对象
initParam
cookie内置对象:
${cookie} 获取map{key=Cookie}
例如:创建cookie
Cookie c=new Cookie("username","tom");
通过${cookie}获取相当于
{username=new Cookie("username","tom")}
相当于map的key是cookie的键
map的value是当前cookie
若项获取名称username的cookie的value值(获取tom)
${cookie.username.value}--javabean导航
注意:
java中Cookie的api
getName():获取cookie的名称
getValue():获取cookie的value值
我们称name和value是cookie的bean属性
使用cookie内置对象:
${cookie.给cookie起名字.value}
例如:
获取jsession的值
${cookie.JSESSIONID.value}
pageContext:获取不是map集合,相当于jsp的pageContext内置对象
在jsp页面中获取项目名
${pageContext.request.contextPath}
=========================================================================================
jsp注释:
html注释
注释的内容只在页面上看不到 java代码和html源代码都有
java注释
只在java代码中存在
jsp注释 <%-- --%>
只在jsp页面中存在,翻译成java文件之后就没有了
=========================================================================================
jstl:
jsp标准的标签库语言
apache的
用来替代java脚本
使用步骤:
1.导入jar包 (jstl.jar和standard.jar)
2.在页面上导入标签库
<%@taglib prefix="" uri=""%>
例如:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jstl的分类:
core:核心类库 ★
fmt:格式化|国际化
xml:过时了
sql:过时了
函数库:很少使用
core:掌握
★c:if
★c:forEach
c:set 往域中设置值
c:choose c:when c:otherwise 分支
★c:if 判断
例如:
3大于4
3不大于4
//
★c:forEach 循环
格式1:
${i }--${vs.count }--${vs.current }
varStatus:用来记录循环的状态
常用的属性:
count:记录次数
current:当前遍历的内容
例如:
${i }--${vs.count }--${vs.current }
格式2:
${n }
例如:
//遍历list
${n }
//遍历map
${en.key }-- ${en.value }
扩展:
c:set 和 c:choose
函数库: