1、JSP基本介绍
JSP:是开发动态资源的一种技术
Servlet:也是开发动态资源的一种技术
JSP:不光可以写HTML代码,还可以写Java代码
JSP执行:
1.当我们通过浏览器来访问指定的JSP页面的时候,请求会发送到tomcat服务器,tomcat服务器会将JSP文件翻译成.java文件放到tomcat服务器的work目录下面
2.tomcat服务器会将上面翻译成功的 .java源文件编译成.class结尾的字节码文件
3.tomcat服务器会创建该字节码文件对应的对象
4.tomcat服务器调用对象中的方法 JSP就是Servlet
Servlet可以做的事情,JSP都可以做,但是JSP能做的事情,Servlet不一定能做
JSP的声明周期:
1.把jsp翻译成.java
2.把.java编译成.class
3.构造方法
4.init
5.Service
6.destory
关于上面的若干步骤:
第一次访问JSP的时候会走1,2,3,4,5,6
第二次访问JSP文件的时候,如果JSP文件没有修改,直接走5
第二次访问JSP文件的时候,如果JSP文件修改了,走1,2,3,4,5
2、JSP语法:
JSP表达式:
基本语法:<%=变量%>
这个代码会翻译成out.print("变量");
会向浏览器输出内容
JSP脚本:把我们的java代码原封不动的拷贝到jspService中执行
<%
java代码
%>
JSP声明:JSP声明变量会变成类的属性,方法会变成类的方法
<%!
变量
方法
%>
脚本和声明的区别:
1.脚本中的代码会原封不动的拷贝到JspService中执行,声明中代码会变成对应类的属性和方法
2.脚本中不可以写方法,JSP声明中才可以写方法
HTML注释:
会翻译成对应的java代码
JSP注释:<%–JSP注释–%>不会翻译成对应的java代码
3、JSP内置对象
JSP一共有九大内置对象:
request:
response:
exception:
session:
config:就是ServletConfig
application:就是ServletContext
page:当前JSP对象
out:
pageContext
Out内置对象:(掌握)
response的getWriter方法得到的对象是printWriter对象
response.getWriter().write(“xxxx”);
JSP中内置的out是JspWriter对象
JSPWriter其实内部任然使用printWriter来向客户端写数据
JSPWriter内部维护了一个缓冲区,缓冲区的默认大小是8kb,当缓冲区满了\手动巧用flush方法刷新缓冲区\关闭流等等情况出现的时候,才会调用printWriter的write来想客户端写数据
pageContext:(掌握)
PagesContext的作用:(掌握)
1.可以直接获取其他8个域对象
pageContext.getOut();
pageContext.getSession();
pageContext.getRequest();
pageContext.getResponse();
pageContext.getServletContext();
pageContext.getServletConfig();
pageContext.getException();
pageContext.getPage();
2.可以存储数据(了解即可)
/* 存到request域对象中 */ key value 保存的域的信息
pageContext.setAttribute("age", "18",PageContext.REQUEST_SCOPE);
/* 存到session域对象中 */
pageContext.setAttribute("aa", "aa1",PageContext.SESSION_SCOPE);
/* 存到Application域对象中 */
pageContext.setAttribute("bb", "bb1",PageContext.APPLICATION_SCOPE);
/* 存到page域对象中 */
pageContext.setAttribute("cc", "cc1",PageContext.PAGE_SCOPE);
注:如果存储数据的时候没有指定所要存储的域的信息,则默认保存到page域
4、JSP的三大指令
include指令
page指令
taglib指令
1、include指令
<%@ include file="/head.jsp" %>
内部做了什么?
其实,include指令会将被包含的页面内容放到当期按的页面中,然后一起合并并翻译成一个.java文件
注:在被包含的页面中不建议有等标签,直接写内容就可以
2.Page指令
<%@ page
language="java" 含义是用什么语言来翻译当前jsp代码
import="java.util.*"导入当前的jsp文件需要的jar包,过个包用","隔开
contentType="text/html; charset=UTF-8" 服务器发送给浏览器的内容格式以及内容编码
pageEncoding="UTF-8" 告诉浏览器使用什么编码来翻译该jsp文件
errorPage="error2.jsp" 指定错误处理的页面
isErrorPage="true" 当前页面是否可以进行错误处理
%>
5、EL表达式(重点)
EL的作用:主要是为了替换jsp表达式,向浏览器输出域对象中的值或者表达式计算结果
EL的语法:${变量或者表达式}
EL的作用:可以获取域对象中的值
${pageScope.name} 获取page域中的name值
${sessionScope.name} 获取session域中的name值
${requestScope.name} 获取Request域中的name值
${applicationScope.name}获取application域中的name值
${name}代表的含义:首先会从page域中查找是否有name,没有继续从request中查找,接着从session中查找
EL的内置对象:
pageContext:域对象
param:请求参数
pageContext:可以在el表达式中通过pageContext来获取其他jsp的内置对象
${pageContext.request.contextPath }
${pageContext.session.id }
${pageContext.servletContext }