JSP
什么是JSP
用户角度看待 ,就是是一个网页,从程序员角度看待 ,是继承了servlet的java类,所以可以直接说jsp 就是一个Servlet。
为什么用JSP
用于显示一些动态数据,可以在jsp文件中写java代码。
JSP的用法
include指令
--把另外一个页面的所有内容拿过来一起输出。 所有的标签元素都包含进来
<%@ include file=".jsp"%>
taglib指令
:标签库(下一篇实例会有用法)
<%@ taglib prefix="" uri="">uri: 标签库路径 prefix : 标签库的别名
JSP 动作标签:
<jsp:include page=""></jsp:include>---动态包含界面,将界面的结果拿过来输出
<jsp:forward page="other02.jsp"></jsp:forward>==request.getRequestDispatcher("other02.jsp").forward(request, response)--请求转发
<jsp:param value="" name=""/> --在进行网页跳转时候携带的参数
常见的用法:<jsp:forward page="other.jsp">
<jsp:param value="beijing" name="address"/>
</jsp:forward>
JSP内置对象:
以下四个为作用域对象,可以存值,可以取值。但是范围不同:
- pageContext --作用域仅限于当前的页面。
- request --作用域仅限于一次请求, 只要服务器对该请求做出了响应。 这个域中存的值就没有了。
- session --作用域限于一次会话(多次请求与响应) 当中。
- application --整个工程都可以访问, 服务器关闭后就不能访问了。
其它几个对象:
- out 【JspWriter】-- 用于输出的对象
- response 【HttpServletResponse】
不常用
- exception 【Throwable】
- page 【Object】
- config 【ServletConfig】
EL
简化jsp中的java代码,常与JSTL一块用
EL的内置对象:
作用域相关对象
- pageScope
- requestScope
- sessionScope
- applicationScope
头信息相关对象
- header
- headerValues
参数信息相关对象
- param
- paramValues
- cookie
全局初始化参数
- initParam
EL的使用方法:
1. 取出4个作用域中存放的值。
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
按普通手段取值<br>
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
<br>使用EL表达式取出作用域中的值<br>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
2. 如果域中所存的是数组
<%
String [] a = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
使用EL表达式取出作用域中数组的值<br>
${array[0] } , ${array[1] },${array[2] },${array[3] }
3. 如果域中锁存的是集合
<%
Map map = new HashMap();
map.put("name", "zhangsna");
map.put("age",18);
map.put("address","北京..");
map.put("address.aa","深圳..");
pageContext.setAttribute("map", map);
%>
使用EL表达式取出作用域中Map的值<br>
${map.name } , ${map.age } , ${map.address } , ${map["address.aa"] }
JSTL
JSP Standard Tag Library jsp标准标签库
简化jsp代码,一般与EL表达式配合。JSTL需要引入,方法可以百度。
JSTL的常用标签:
<c:set></c:set>
<c:if test=""></c:if>
<c:forEach></c:forEach>
用法示例:
* c:set
声明一个对象name, 对象的值 zhangsan , 存储到了page(默认) , 指定是session
<c:set var="name" value="zhangsan" scope="session"></c:set>
${sessionScope.name }
* c:if
判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出 , c:if 是没有else的。
<c:set var="age" value="18" ></c:set>
<c:if test="${ age > 26 }">
年龄大于了26岁...
</c:if>
<c:if test="${ age <= 26 }">
年龄小于了26岁...
</c:if>
定义一个变量名 flag 去接收前面表达式的值,然后存在session域中
<c:if test="${ age > 26 }" var="flag" scope="session">
年龄大于了26岁...
</c:if>
* c:forEach
从1 开始遍历到10 ,得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2,
<c:forEach begin="1" end="10" var="i" step="2">
${i }
</c:forEach>
items : 表示遍历哪一个对象,注意,这里必须写EL表达式。
var: 遍历出来的每一个元素用user 去接收。
<c:forEach var="user" items="${list }">
${user.name } ----${user.age }
</c:forEach>