jsp:
java 服务器页面
作用:将内容的生成和信息的展示相分离
运行在服务端,本质上就是一个servlet,产生的java文件和class保留在tomcat的word目录下
jsp脚本:
<%..%>java代码片段
<%=..%>输出表达式 相当于out.print();
<%!..%> 声明成员
jsp指令:
作用:生命jsp页面的一些属性和动作
格式:<%@指令名称 属性="值" 属性="值" %>
分类:
page:主要生命jsp页面的一些属性
include:静态包含
taglib:导入标签库
注意:一个页面中可以出现多个指令
指令可以出现任意位置,一般都房在jsp页面的最上面
page指令:
重要属性:3个
contentType:设置响应流编码,及通知浏览器用什么编码打开,设置文件的mimetype
pageEncoding:设置页面的编码
import:导入所需要的包(jsp本质也是一个类)
contentType和pageEncoding的联系:
若两者都出现的时候,各自使用各自的编码
若只出现一者,两个都使用出现的这个编码
若两者都不出现,使用服务器默认的编码 tomcat7使用iso-8859-1(不支持中文)
了解属性:
language:当前jsp页面里面可以嵌套的语言
buffer:设置jsp页面的流的缓冲区大小
autoFlush:是否自动刷新,默认自动刷新
extends:声明当前jsp页面继承于哪个类,必须继承的是httpServlet及其子类
session:设置jsp页面中是否可以使用session内置对象
isELIgnored:是否忽略el表达式
isErrorPage:当前页面是否是一个错误页面,若值为true,可以使用jsp页面的一个内置对象 exception
errorPage:当前jsp页面出现异常的时候跳转到jsp页面
inlude指令:
静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行,生成一个java文件
格式:<%@include file="相对路径或者是内部路径" %>
相对路径: ./或什么都不写 当前路径
上一级路径 ../
绝对路径:项目的内部路径 <%@include file="/jsp/include/" %>
带协议和主机的绝对路径
不带协议和主机的绝对路径 /项目名/资源
内部路径:
不带协议和主机的绝对路径去掉项目名
请求转发 静态包含 动态包含
taglib指令:导入标签库
导入jar包
<%@tagliv prefix="前缀名" uri="名称空间" %>
若导入之后
<前缀名:标签 ..>
例如:
<c:if test="">输出内容</c:if>
jsp内置对象:☆☆☆(9大内置对象)
在jsp页面上可以直接使用的对象
内置对象 类型
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
exception Throwable
page(当前jsp、servlet相当于this) Servlet(this)
config(servletConfig) servletConfig
application(servletContext) servletContext
pageContext(当前页面的上下文) pageContext
pageContext使用:理解
1.域对象
xxxAttribute()
2.操作其他域对象(设置获取删除值)
xxxAttibute(...,int scode);
scope取值:
APPLICATION_SCODPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
3.获取其他的内置对象:getXXX()
注意:
getRequest():获取request内置对象
4.便捷查找
findAttibute(String key):
依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找,若查找不到返回一个null
jsp域对象:理解
application 整个项目
session 一次会话
request 一次请求(可以跨页面多个页面)
pageContext 一个页面
jsp的动作标签
<jsp:forward>:请求转发 相当于java中 request.getRequestDispatcher.forward(...);
<jsp:include>:动态包含
就是将被包含页面或者servlet的运行结果包含到当前页面中
el:
jsp的内置表达语言,从jsp2.0开始。用来替代<%=..%>
作用:
1.获取域中数据☆
2.执行运算☆
3.获取常见的web对象
4.调用java的方法
格式:
${el表达式}
获取域中数据:
注意:若属性名称中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
例如:${requestScope.[arr.age]}
获取简单数据:
${pageScope|requestScope|sessionScope|aplicationScope.属性名称}
便捷获取用的 findAttibute,以后经常使用:
${属性名}:一次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找,若查找不到返回""
获取复杂数据:
获取数组中的数据:${域中的名称[index]}
获取list中的数据:${域中的名称[index]}
获取map中的数据:${域中的名称.键名}
获取特殊名字的数据:${requestScope["arr.age"]}
javabean导航:
javabean:java语言写成的可重用组件。类必须是具体的和公共的,并且具有无参构造器。狭义上来说就是我们编写的普通java类 例如:User Person
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
jsp中要导入bean。
${域中javabean名称.bean属性}
执行运算:
四则运算 关系(>..) 逻辑(&& ||)
+:只能进行加法运算,字符串形式的数字可以进行加法运算,不能做拼接字符串
empty:判断一个容器的长度是否为0(array,set,list,map),还可以判断一个对象是否为空
三元运算符:${3 > 4 ? "yes" : "no"}
el的内置对象(了解)
可以在el中直接使用的对象(11个)
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
了解:和请求头相关的el内置对象
header
headerValues
了解:和全局初始化参数相关的el内置对象
initParam
web.xml 文件 [content-param]
cookie☆
${cookie} 获取map{key=Cookie}
例如:创建cookie
Cookie c = new Cookie("username","tom");
通过${cookie}获取相当于
{username=new Cookie("username","tom")}
相当于map的key是cookie的键
map的值是当前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}
注意:
除了pagecontext其余对象获取的全是map集合
了解:和参数相关的el内置对象