总结
我是最棒的!基础不牢,地动山摇!
JSP九大内置对象
对象名 | 类型 | 描述 |
---|---|---|
request | HttpServletRequest | 请求对象 |
response | HttpServletResponse | 响应对象 |
session | HttpSession | 会话对象 |
application | ServletContext | 当前应用对象 |
config | ServletConfig | 配置对象 |
out | JspWriter | 输出对象 |
exception | thowable | 异常对象 |
page | Object | 当前jsp对象 |
pageContext | PageContext | 当前页面作用域对象 |
JavaBean
标准JavaBean的规范
- 类必须是公共的
- 提供一个public的无参构造方法
- 给每个字段都提供一套getter和setter方法
JavaBean中属性分类
- 可写属性 setter开头的方法
- 可读属性 getter开头的方法
判断属性的标准
方法必须以setter和getter开头,布尔类型是以is开头
例如
//所有的字段都使用包装类,数据库NULL的原因
//属性和字段没有关系
getAbc() 属性为abc 是一个可读属性
JavaBean的内省机制
专门用来操作JavaBean中的属性,方法和事件。JDK中提供了一个内省机制的类Introspector
EL表达式
作用:取作用域对象中设置的值,消除jsp中的部分java代码
语法格式:${作用域对象中的key}
注意事项
如果四大作用域对象存在相同的key值,先从PageContext再到HttpServletRequest,再到HttpSession,最后是ServletContext,如果在最小范围没找到,则依次往大的范围进行查找,找完没有找到则返回空字符串
动态获取上下文路径
//只有这一种方式
${pageContext.request.contextPath}
相同key值获取指定作用域对象的值
有四个对象,pageScope,requestScope,sessionScope,applicationScope.
//EL表达式相当于下面这句java代码
<%=
pageContext.findAttribute("key") == null ? "" :
pageContext.findAttribute("key")
%>
EL表达式的基本用法
- 支持普通运算和逻辑运算
- 支持三目运算
//举个栗子
${1+2}
${true && true}
${1+1=2 ? true : false}
EL表达式的特殊用法
- 可以调用方法
- 特殊值的取值方式
//实质上是调用JavaBean中的getter
${stu.name}
${对象名.属性名}
${对象名["属性名"]}(获取特殊的key值)
//tomcat7以后支持EL调用方法
${stu.show()}
JSTL表达式
JSTL是JSP标准标签库,可以完全消除jsp中的java代码
要使用JSTL需要先导入相应的包
JSTL中的if判断
<%
int age = 101;
pageContext.setAttribute("age",age);
%>
<c:if test="${age==18}">
少壮不努力,老大徒伤悲
</c:if>
//相当于java中if else if ... else
<c:choose>
<c:when test="${age<18}">
天干物燥
</c:when>
<c:when test="${age>18 && age<=60}">
小心火烛
</c:when>
<c:when test="${age>60 && age<=100}">
人生漫长
</c:when>
<c:otherwise>
我劝你好生走路
</c:otherwise>
</c:choose>
JSTL中的循环迭代
<%
List<String> list = new ArrayList<String>();
list.add("刘");
list.add("关");
list.add("张");
pageContext.setAttribute("list",list);
%>
//相当于java中的循环
<table border="1">
<th>姓名
//items代表要遍历的集合或者数据,x为集合中元素的别名
<c:forEach items="${list}" var="x">
<td>${x}</td>
</c:forEach>
</th>
</table>
frameset框架集
老式布局,现在很少用