1、jsp是用java语言写的,运行在服务器中的网页,所以jsp必须在服务器运行时访问:翻译成java代码->编译成class文件->运行
2、jsp包括:html标签(翻译时变成:out.write())、脚本、指令
3、脚本:
1)表达式脚本
<%= %> 翻译时变成:out.print()
2)声明式脚本
<%! %> 翻译时变成:成员变量或成员函数
3)普通脚本
<% %> 翻译时变成:普通java代码
4、指令:
1)page指令:<%@page 属性名="属性值"%>
pageEncoding=”utf-8”、import=”java.util.Date” 导包、errorPage=”xx.jsp” :当页面有异常时,跳转到xx.jsp
2)include指令:<%@include file=""%>
静态包含另一个文件,包含进来后再统一翻译,,,,静态包含可以自动渲染CSS样式
3)jsp:include指令:<%@ jsp:include page=""%>
动态包含另一个文件,分开翻译和编译,再包含进来
4)jsp:forward指令:<%@jsp:forward page=""%>
动态跳转
5)taglib指令:<%@taglib profile="" uri=""%>
5、隐含对象(4个作用域、2个与响应有关、1个exception、2个不常用):
1、作用域
1):pageContext:javax.servlet.jsp.PageContext(作用很大)
a) pageContext 作用域对象
i. 开始 :请求到达该页面开始
ii. 结束 :请求离开该页面
b) 可以获得其他的隐含对象: request = pageContext.getRequest();
c) 可以操作别的作用域
通过pageContext操作request作用域:
存值 :pageContext.setAttribute(“key”,value,PageContext.REQUEST_SCOPE);
取值:pageContext.getAttribute(“key”,PageContext.REQUEST_SCOPE);
d) 可以从作用域中检索:pageContext.findAtrribute(“key”);
从作用域中依次检索 :pageContext----request---session----application,检索到就直接返回,如果直到application都没检索到,返回null
e) 可以进行页面的跳转和包含
2):request:HttpServletRequest
3):session:HttpSession
4):application:ServletContext
2、响应:
1)response: HttpServletResponse
2)out: javax.servlet.jsp.JspWriter
6、EL表达式:${} ,,,,,用来替换表达式脚本
隐含对象
pageScope | requestScope | sessionScope | applicationScope
pageContext : 获得request session application
通过EL动态获得web应用名 :
java代码 :request.getContextPath();
EL中没有request作用 :${pageContext.request}----->request
动态获得web应用名:${pageContext.request.contextPath}
7、JSTL表达式:用来替换普通脚本
1、分类 :核心标签库、格式化标签库、sql标签
tld文件 :自定义标签库的一个对应标签的配置文件
<uri>配置文件的唯一标识
2、<%@ taglib uri=”tld文件的uri标签的标签体内容” prefix=”前缀”%>
3、<c:if test="">、<c:forEach item="" var="" varStatus="">、<c:set scope="" var="" value="">、<c:remove var="" scope="">
<c:import url=""> 动态包含
<c:url value="">:会自动动态的获得web应用名;当用户禁用浏览器cookie,可以会话跟踪
<c:redirect url="">跳转