注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
文章目录
开篇
什么是jsp?
jsp的全称是java server pages。java的服务器页面。
jsp的主要作用:代替servlet程序回传html页面的数据;
因为servlet程序回传html页面是一件非常繁琐的事情。开发成本和维护成本非常高;
jsp页面本质:
jsp页面本质是一个Servlet程序
,当我们第一次访问jsp页面的时候,Tomcat服务器会帮我们把jsp页面翻译成一个java源文件,并且对它进行编译成为.class字节码程序;也就是说jsp翻译出来的java类,它间接继承了HttpServlet类,也就是说,翻译出来的是一个Servlet程序;
一、JSP初解
(1)jsp头部的配置指令:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="errorPage.jsp"%>
language属性:表示jsp翻译后是什么语言文件;暂时只支持java
contentType属性:表示jsp返回的数据类型是什么,也是源码中response.set
ContentType()参数值;
pageEncoding属性:表示当前jsp页面文件本身的字符集。
import属性:跟java源代码中一样。用于导包或者导类
errorpage属性:设置当jsp页面运行时出错,自动跳转去的错误页面路径;
isErrorPage属性:设置当前jsp页面是否有错误信息页面,默认是false,
如果是false,如果是true,可以获取异常信息;
extends属性:设置jsp翻译出来的java类默认继承类;
(2) jsp常用脚本:
(1)声明脚本:
<%! 声明java代码 %>
作用:声明类属性;声明静态代码块;声明类的方法;生成内部类
(2)表达式脚本
<%=表达式%>
作用:
在jsp页面上输出数据
,输出整型,输出浮点,输出字符串,输出对象;
(3)代码脚本:
<%
java语句
%>
作用:可以在jsp页面中编写自己需要的功能(写的是java语句:if语句,for语句,翻译后java文件中_jspService方法内的代码都可以写,参数都能调用)
(3)jsp中的三种注释:
html注释:会被翻译到java源码中。在jsp_Service方法里,以out.writer输出到客户端;
java注释:java注释会被翻译到java源代码中
jsp注释:jsp注释可以注释掉所有的代码,是jsp页面真正的注释
<!-- 这是html注释 -->
<%
//这是java单行注释
%>
<%--这是jsp注释--%>
二、jsp的九大内置对象
(是指Tomcat在翻译jsp成为Servlet源代码后,内部提供的九大对象):
request:请求对象
response:响应对象
pageContext:jsp的上下文对象
session:会话对象
application:ServletContext对象
config:ServletConfig对象
out:jsp输出流对象
page:指向当前jsp的对象
exception:异常对象
四个域对象:
域对象 | 所属 类 | 有效范围 |
---|---|---|
PageContext | (PageContextImpl类) | 当前jsp页面范围内有效 |
Request | (HttpServletRequest类) | 一次请求内有效 |
Session | (HttpSession类) | 一个会话范围内有效(会话:打开游览器访问服务器知道关闭游览器) |
application | (ServletContext类) | 整个web工程都有效(只要web工程不停止,数据都在) |
域对象是可以像Map一样存取数据的对象,四个域对象功能一样,不同的是他们对数据的存取范围;
四个域对象在使用的时候,优先顺序分别是:他们从小到大的过程
out和response输出的区别:
当jsp页面中所有的代码执行完成后会做以下两个操作:
-
执行out.flush()操作,
把out缓冲区的数据追加写入到response缓冲区末尾;
- 会执行response的刷新操作,把全部数据写给客户端;
out.write():输出字符串没有问题
out.print():输出任意数据都没有问题(都转换为字符串后调用的write输出)
三、jsp常用标签:
(1)jsp静态包含:
<%@ include file="" "%>
file属性指定你要包含的jsp页面的路径
地址中的第一个斜杠 / 表示为http://ip:port/工程路径/ 映射到代码的web目录
静态包含的特点:
-
静态包含不会翻译被包含的jsp页面
2.静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出
(2)jsp动态包含:
<jsp:include page=" "></jsp:include>
动态包含的特点:
- 动态包含会把包含的jsp页面也翻译为java代码;
- 动态包含是用如下的代码去调用被包含的jsp页面执行输出:
JspRuntimeLibrary.include(request,response,"/include/footer.jsp,out,false")
3.动态包含还可以传递参数;
(3)jsp请求转发:
<jsp:forward page=" "></jsp:forward>
page属性设置请求转发的路径
四、LIstenner监听器:
- LIstenner监听器是JavaWeb的三大组件之一。JavaWeb三大组件:Servlet程序,Filter过滤器,LIstenner监听器;
- LIstenner他是JavaEE的规范,就是接口
- 监听器的作用是,监听某种事务的变化。然后通过回调函数,反馈给客户(程序),去做一些相应的处理;
ServletContextLIstenner监听器:
ServletContextLIstenner监听器可以监听ServletContext对象的创建和销毁。
ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁;
监听到创建和销毁之后都会分别用ServletContextListenner监听器的方法反馈;
两个方法分别是:
在ServletContext对象创建之后马上调用,作初始化;
public void contextInitialized(ServletContextEvent sce){
}
在ServletContext对象销毁后调用
public void contextDestroyed(ServletContextEvent sce){
}
使用步骤如下:
- 编写一个类去实现ServletContextLIstenner;
- 实现其两个回调方法
- 到web.xml文件中去配置监听器
如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!