1. 什么是JSP
全称为:Java Server Pages
Java服务器端页面,也和Serlvet一样,用于动态Web技术!
JSP中的内容就是html,但是能够嵌套java语言
HTML只给用户提供静态数据
2. JSP原理
服务器内部工作
tomcat中有一个work目录
IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录
浏览器向服务器发送请求,不管访问什么资源,都是在访问Servlet
JSP最后也会被转化为一个Java类
JSP本质上就是一个Servlet
// 初始化
public void _jspInit(){
}
// 销毁
public void _jspDestroy(){
}
// JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response){
}
判断请求
内置一些对象
3. JSP基础语法
JSP拥有一些扩充的语法
JSP表达式
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%- 变量或者表达式%>
--%>
<%= new java.util.Date()%>
** JSP脚本片段**
<%--jsp脚本片段--%>
<%
int sum = 0;
for (int i = 1; i <=100 ;i++){
sum+=i;
}
out.println("
sum="+sumt"
%>
4. JSP声明
<%!
static {
system.out.println("Loading Servlet!");
}
private int globalvar = 0;
public void kuang){
system.out.printlnC"进入了方法!");
}
%>
JSP声明:会被编译到SP生成Java的类中!其他的,就会被生成到_jspService方法中!
在SP,嵌入Java代码即可!
JSP的注释,不会在客户端显示,HTML会显示
5.JSP指令
%@page args.... %>
‹%@include file=""%›
<%--@include会将两个页面合二次一--%>
‹%@include file="common/header. jsp"%>
网页主题
‹%@include file="common/footer. jsp"%>
<%--jSP标签
jsp:include: 拼接页面,本质还是三个
--%>
‹jsp: include page="/common/header. jsp"/>
网页主体
‹jsp: include page="/common/footer.jsp"/>
6. 九大内置对象
page:page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于this。
config:标识Servlet配置,类型:ServletConfig,api跟Servlet中的ServletConfig对象是一样的,能获取该servlet的一些配置信息,能够获取ServletContex
application:标识web应用上下文,类型:ServletContext,详情就看Servlet中的ServletContext的使用
request:请求对象, 类型:httpServletRequest
response:响应对象 类型:httpServletResponse
session:表示一次会话,在服务器端记录用户状信息的技术
out:输出响应体 类型:JspWriter
exception 表示发生异常对象,类型 Throwable,在上面我们介绍page指令中的一个errorPage属性时就有说到他
pageContext:表示 jsp页面上下文(jsp管理者) 类型:PageContext
标记了加粗的对象就是JSP独有的,其他的都是Servlet中的老东西。
<%--内置对象--%>
<%
pagecontext.setAttribute(s: "name1", o: "ha");//保存的数据只在一个页面中有效
request.setAttribute("name2", "shi"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","fei"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute(“name4","秦疆4号");//保存的数据只服务器中有效,从打开服务器到关闭服务器
%>
<%--脚本片段中的代码,会被原封不动生成到.JsP.java
要求:这里面的代码:必须保证Java语法的正确性
--%>
<%
//MpageContext取出,我们通过寻找的方式来
//从底层到高层(作用城):
String name1 = (String) pageContext. findAttribute ("name1");
String name2 = (String) pageContext. findAttribute ("name2");
String name3 = (String) pageContext. findAttribute ("name3");
String name4 = (String) pageContext. findAttribute("name4");
String name5 =(String) pagecontext.findAttribute( "name5");//不存在
%>
<%--使用EL表达式输出 $f}--%>