JSP介绍
JSP的作用的就是在html写java代码,最终将jsp文件翻译为java文件最后被jvm编译为class文件,文件就在tomcat的work目录下面
JSP常用指令
page import taglib include
taglib 导入包的路径
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
uri 代表的是标签库的路径 导入这个库就是可以使用elt表达式了 prefix代表就是标签库的名称
一些常用的属性标签
import 导包
<%@page import="java.util.ArrayList"%> <!-- 导包是用import指令,如果没有出现提示是因为你的代码中问题-->
<%@page import="java.util.List"%>
include指令 注意关键字是file
<%@ include file="logo.jsp" %>
<%@ include file="menu.jsp" %>
JSP的内置对象
内置对象就是在JSP中直接使用的对象,通过API区进行值的获取,存储 判断等操作
作用域对象以及范围
作用域的范围
request 对象 ——————只在一次请求中有效
session 对象 ——————只在一次会话中有效
pageContext对象 ————-只在就相当于是this,只在本页面有效
application对象 —————在整个Web项目中都有效
out对象同response.getWrite.println()区别
out对象在被翻译为Sevrlet,的时候是对应的是JspWrite,而response对应的就是writer对象因此对象的本质不同,其次就是在out对象会将数据输出导response的缓存区中,在由response对象的缓冲区输出到页面。
用法示例
<% application.setAttribute("rui", 999); %>
<%= application.getAttribute("rui") %>>
<% response.sendRedirect("http://www.baidu.com"); %>
<jsp:forward page="http://www.baidu.com"></jsp:forward>
JSP的动作标签
就是为了简化一下<%%>的语法格式
语法格式
1. 静态引入标签
<%@ include file="footer.jsp" %>
2.动态引入标签
<jsp:include page="footer.jsp"></jsp:include>
动态静态区别特点,总结
语法格式不同
静态引入最总在work目录下只生成一个class文件,动态引入就是引入几个生成几个class文件
在编译的过程中静态引入将其他标签的代码植入到本jsp中,因此只生成一个
在编译的过程中动态引入将输出的结果输出浏览器中,编译并不是在同一个java 文件中
ELT表达式介绍
它的存在就是为简化JSP语法格式,增加了另外一种存储获取值的特点
语法格式
第一种获取域对象中的值,eclipse 没有提示,必须手敲
<% request.setAttribute("rui", "handsome"); %>
<%= request.getAttribute("rui") %>
${ requestScope.rui }
${ rui }
获取map集合中的值
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aaa", "111");
map.put("bbb", "222");
map.put("ccc", "333");
map.put("ddd.eee", "444");
pageContext.setAttribute("map", map);
%>
${ map.aaa }
三元算符判断
${empty user ? "0":user.name}
elt对象
介绍
pageScope
requestScope
sessionScope
applicationScope
header :获得请求头
headerValues :获得一个key对应多个的请求头
param :请求请求参数
paramValues :请求请求参数(接收一个名称对应多个值)
cookie :获取Cookie的数据
initParam :获得全局初始化参数的值
pageContext :就是jsp中内置对象pageContext
示例
<h1>操作web开发的常用对象</h1>
<h3>获得请求头</h3>
${ header["User-Agent"] }
<h3>获得请求参数</h3>
${ param.name }
${ param.password }
${ paramValues.hobby[0] }
${ paramValues.hobby[1] }
<h3>pageContext</h3>
${ pageContext.request.remoteAddr }
${ pageContext.request.contextPath }
<h3>获取全局初始化参数</h3>
${ initParam.username }
JSTL的使用
if表达式
<%
request.setAttribute("ppp", 10);
%>
<c:if test="${ppp > 5 }">
<h1>"uuuuuu"</h1>
</c:if>
for循环表达式
<c:forEach var="i" begin="20" end="100" step="9">
${i } +” “
</c:forEach>