尚硅谷学习笔记
什么是jsp
jsp 全称是 JavaServer pages,也就是java服务器页面
jsp的主要作用就是代替Servlet程序回传html页面的数据。
jsp的访问
jsp与html都存放在web目录下,访问也跟html一样。
jsp的本质
本质是一个sevlet程序。
jsp的三种语法
头部的page指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- language: 表示jsp翻译后是什么语言,暂时只支持java
- contentType:表示jsp返回的数据类型
- pageEncoding:表示jsp页面文件本身的字符集
- import:用于导包、导类
以下两个属性给out输出流使用:
- autoFlush:设置当out输出流缓冲区满了之后,是否自动刷新缓冲区。默认值为true
- buffer:设置out缓冲区的大小。默认是8kb。
- session:设置访问当前jsp页面,是否会创建HttpSession对象。默认是true
- extends:设置jsp翻译出来的java类默认继承谁。
jsp中常用的脚本
- 声明脚本
声明脚本的格式:<%! 声明java代码%>
作用:可以给jsp翻译出来java类定义一些属性、方法、静态代码块、内部类等。
- 表达式脚本
表达式脚本的格式:<%=表达式%>
作用:在jsp页面上输出数据。
表达式脚本的特点:
1.所有的表达式脚本都会被翻译到**_jspService()** 方法中
2.表达式脚本都会被翻译成为 out.print()输出到页面上
3.由于表达式脚本翻译的内容都在**_jspService()** 方法中,所以**_jspService(**)方法中的对象都可以直接使用,因为其间接继承了HttpSevlet。
<%=requset.getParameter('xxx'))>
4.表达式脚本中的表达式不能以分号结束。
- 代码脚本
代码脚本的格式:<%java语句%>
作用:在jsp页面中,可以写自己的java语句
代码脚本的特点是:
1.代码脚本翻译之后都在_jspService 方法中
2.代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用。
3.还可以由多个代码脚本块组合完成一个完整的 java 语句。
4.代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据
jsp中九大内置对象
- request:
请求对象
- response:
响应对象
- pageContext:
jsp的上下文对象
- session:
会话对象
- application:
ServletContext对象
- config:
ServletConfig对象
- out:
jsp输出流对象
- page:
指向当前jsp的对象
- exception:
异常对象
jsp四大域对象
四个域对象分别是:
PageContext (PageContextImpl类)、当前jsp页面范围有效
request (HttpSevletRequest类)、一次请求内有效
session (HttpSession类)、一个会话范围内有效
application (ServletContext类)整个web工程范围内都有效
域对象可以像Map一样存取数据对象。四个域对象功能一样。不同的是他们的数据存取范围
jsp中的out输出和response.getWriter()输出的区别
由于jsp翻译之后,底层源码都是用out来进行输出,所以一般情况下。我们在jsp页面使用out来进行输出,避免打乱输出顺序。
out.write() 输出字符串没有问题
out.print() 输出任意数据都没有问题(都转换成为字符串后调用的write 输出)
深入源码,浅出结论:在 jsp 页面中,可以统一使用 out.print()来进行输出
jsp的常用标签
静态包含
语句:<%@ include file=""%>
file属性指定你要包含的jsp页面
地址中第一个斜杠’/’ 表示为http://ip:port/工程路径/ 映射到web目录
静态包含的特点:
1. 静态包含不会翻译被包含的jsp页面
2. 静态包含其实是把包含的jsp页面的代码拷贝到包含的位置执行输出
动态包含
语句:<jsp:include page=""></jsp:include>
page属性指定你要包含的jsp页面
动态包含也可以像静态包含一样。把被包含的内容执行输出到包含位置
静态包含的特点:
1. 动态包含会把包含的jsp页面也翻译成java代码
2. 动态包含底层调用了一个方法去调用被包含的jsp页面
3. 动态包含,还可以传递参数
<jsp:include page="/xxxx.jsp">
<jsp:param name="username" value="Veneno"/>
</jsp:include>
可以在request作用域中获取到值。
<%= request.getParameter("username")%>
jsp 标签(转发)
语句:<jsp:forward page=""></jsp:forward>
是请求转发标签,它的功能是请求转发,page属性设置请求转发的路径
Listener 监听器
Listener监听器是JavaWeb的三大组件之一。是JavaEE的规范、就是接口
三大组件分别是:Servlet程序、Filter过滤器、Listener监听器
监听器的作用是:监听某种事物的变化。然后通过回调函数,反馈个客户(程序)去做一些相应的处理。
监听器的实现步骤:
- 创建一个类实现监听器接口
- 重写接口中的方法
- 在web.xml文件中进行配置
<Listener>
<Listener-class> 全类名</Listener-class>
</Listener>