jsp:
java服务器页面,运行在服务器端
本质上就是一个serlvet,产生的java文件和class保留在tomcat的work目录下.
xxx_jsp.java xxx_jsp.class
jsp注释:
html注释
注释的内容只在页面上看不到 java代码和html源代码都有
java注释
只在java代码中存在
jsp注释 <%-- --%>
只在jsp页面中存在,翻译成java文件之后就没有了
jsp脚本:
<%..%>java代码片段
<%=..%>输出表达式相当于out.print();
<%!...%>声明成员
jsp的指令
作用:声明jsp页面的一些属性和动作
格式:
<%@指令名称属性="值" 属性="值"%>
jsp指令的分类:
page:主要声明jsp页面的一些属性
include:静态包含.
taglib:导入标签库
注意:
一个页面中可以出现多个指令
指令可以放在任意位置,一般都放在jsp页面最上面.
2. include指令:
静态包含,就是将其他jsp页面或者servlet的内容包含进来,生成一个.java文件和.class文件.
格式:
<%@includefile="相对路径或者是内部路径" %>
例如:
<%@includefile="/jsp/include/i1.jsp" %>
路径:
相对路径:
./或者什么都不写当前路径
上一级路径 ../
绝对路径:
带协议和主机的绝对路径
不带协议和主机的绝对路径
/项目名/资源
内部路径:
不带协议和主机的绝对路径去掉项目名
请求转发、静态包含、动态包含
3. 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.操作其他域对象
方法:
pageContext.setAttribute(...,…,scope);
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
3.获取其他的内置对象
xxx.getAttribute();
例如: request.getAttribute ():获取request内置对象
4.便捷查找
findAttribute(Stringkey):
jsp的动作标签
同静态包含,不过会生成好几个.java文件和.class文件.
el:
jsp的内置表达式语言,从jsp2.0开始.用来替代<%=..%>
作用:
1.获取域中数据
2.执行运算
3.获取常见的web对象
4.调用java的方法
格式:
${el表达式}
获取域中数据:
注意:
若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
例如:${requestScope["arr.age"] }
1.获取简单数据
${pageScope|requestScope|sessionScope|applicationScope.属性名}
以后经常使用这种方式:${属性名}
依次从pageContext,request,session,application查找指定属性
若查找到返回值,结束该次查找
若查找不到,返回""
2.获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称.键名}
3.javabean
java语言编写的一个可重用的组件,
狭义上来说就是我们编写的一个普通的java类例如:User Person
javabean规范:
1.必须是一个公共的具体的类 public class
2.提供私有的字段 private String id;//id称之为字段
3.提供公共访问字段的方法 get|set方法
get|set之后的内容,将首字母小写,将这个东西称之为bean属性
例如:public String getId(){..} id就是一个bean属性
4.提供一个无参的构造器
5.一般实现序列化接口serializable
获取域中的值:
${域中javabean名称.bean属性}
el的内置对象(了解)
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haederValues
initParam
cookie
pageContext
注意:
除了pageContext其余对象获取的全是map集合
1.cookie内置对象:
${cookie} 等价于map{key=Cookie}
例如:创建cookie
Cookie c=newCookie("username","tom");
${cookie}相当于
{username=newCookie("username","tom")}
map的key是cookie的键(username)
map的value是当前cookie的值(new Cookie("username","tom"))
若项获取名称username的cookie的value值(获取tom)
${cookie.username.value}
因为:
java中Cookie的api
getName():获取cookie的名称
getValue():获取cookie的value值
我们称name和value是cookie的bean属性
使用cookie内置对象获取值:
${cookie.给cookie起名字.value}
例如:
获取jsession的值
${cookie.JSESSIONID.value}
2.pageContext:获取不是map集合,相当于jsp的pageContext内置对象
在jsp页面中获取项目名
${pageContext.request.contextPath}
jstl:
jsp标准的标签库语言,apache的用来替代java脚本
使用步骤:
1.导入jar包(jstl.jar和standard.jar)
2.在页面上导入标签库
<%@taglibprefix="" uri=""%>
例如:
<%@taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jstl的分类:
core:核心类库
fmt:格式化|国际化
xml:过时了
sql:过时了
函数库:很少使用
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 }
例如:
${i } ${vs.count } ${vs.current }
格式2:
${n }
例如:
//遍历list
${n}
//遍历map
${en.key} ${en.value }