尚硅谷-JavaWeb Day6 jsp

1. jsp(java server pages)Java 的服务器页面

  主要作用:替 Servlet 程序回传 html 页面的数据;

2. jsp 的访问和 html 页面一样,都是存放在 web 目录下,访问也跟访问 html 页面一样;

3. jsp 本质上是一个 Servlet 程序;

  第一次访问 jsp 页面时,Tomcat 服务器会把 jsp 页面翻译成 java 源文件,并对它进行编译成 .class 字节码程序;

  源代码可以看出,HttpJspBase 类直接继承了 HttpServlet 类,即 jsp 翻译出的 java 类间接继承了 HttpServlet 类;

  => 翻译出的是一个 Servlet 程序;

4. jsp 的 page 指令(可以修改 jsp 页面中一些重要属性或者行为)

  <%@ page contextType="text/html;charset=UTF-8" language="java" %>

  • language:jsp翻译后是什么语言,暂时只支持java
  • contentType:jsp 返回的数据类型,也是源码里 response.setcontentType() 参数值
  • pageEncoding:表示 jsp 页面文件本身的字符集
  • import:用于导包导类
  • autoFlush(out输出流用):设置当 out 输出流缓冲区满了后,是否自动刷新缓冲区,默认 true
  • buffer(out输出流用):设置out缓冲区大小,默认8kb
  • errorPage:设置当 jsp 页面运行时出错,自动跳转去的错误页面路径,一般以"/"打头跳转到web目录下
  • isErrorPage:映射当前 jsp 页面是否是错误信息页面,默认 false,true可以获取异常信息
  • session:设置访问当前 jsp 页面,是否会创建 HttpSession 对象,默认 true
  • extends:设置 jsp 翻译出来的 java 类默认继承谁

5. jsp 常用脚本

  声明脚本(格式:<%! 声明java代码 %>

    可以给 jsp 翻译出来的 java 类定义属性、方法、静态代码块和内部类

  表达式脚本(格式:<%=表达式%>)(常用

    在 jsp 页面上输出数据(整型、浮点型、字符串、对象)

    表达式脚本都ibei翻译到 _javaService() 方法中

    特点:

      • 所有表达式脚本都会被翻译到 _javaService() 方法中
      • 表达式脚本都会被翻译成为 out.print() 输出到页面上
      • 由于表达式脚本翻译的内容都在_javaService()方法中,所以_javaService()中的对象可以直接使用
      • 表达式脚本中的表达式不能以;结束

  代码脚本(格式:<%    java语句 %>

    可以在 jsp 页面中,编写我们需要的功能(写的是 java语句)

    特点:

      • 代码脚本翻译之后都在_javaService()方法中
      • 由于代码脚本翻译的内容都在_javaService()方法中,所以_javaService()中的对象可以直接使用
      • 可以由多个代码脚本块组合完成一个完整的 java 语句
      • 可以和表达式脚本一起组合使用,在 jsp 页面输出数据

6. jsp 中三种注释

  html 注释:<!-- xxxx -->,会被翻译到 java 源代码中,在_javaService()方法中,以out.writer输出到客户端;

  java注释:会被翻译到 java 源代码中(// 单行java注释、/*xxxx*/ 多行java注释)

  jsp注释:<%-- xxxx --%>,可以注释掉 jsp 页面中所有的代码

7. jsp 中的九大内置对象

  内置对象:指 Tomcat 翻译 jsp 页面成为 Servlet 源代码后,内部提供的九大对象;

  •   request:请求对象
  •   response:响应对象
  •   pageContext:jsp的上下文对象
  •   session:会话对象
  •   application:ServletContext对象
  •   config:ServletConfig对象
  •   out:jsp输出流对象
  •   page:指向当前 jsp 的对象
  •   exception:异常对象

8. 四个域对象(可以像 Map 一样存取数据的对象,四个域对象功能一样,对数据的存取范围不同)

  四个域使用的时候,优先顺序即为下列的排序,从小到大的范围;

  •   pageContext(PageContextImpl 类):当前 jsp 页面范围内有效
  •   request(request 类):一次请求内有效
  •   session(session 类):一个会话范围内有效(打开浏览器访问服务器,知道关闭浏览器)
  •   application(ServletContext 类):整个web工程范围内有效(只要web工程不停,数据都在)

9. out 输出和 response 输出的区别(为了避免打乱页面输出顺序,统一使用 out 输出

  out.write() 输出字符串没有问题;out.print() 输出任意数据都没有问题(会先转化成字符串,再调用write)

  当 jsp 页面中所有代码执行完成后会做以下两个操作:

  •   执行 out.flush() 操作,把 out 缓冲区中的数据追加写入到 response 缓冲区末尾;
  •   会执行 response 的刷新操作,把数据全部写给客户端;

10. jsp 常用标签

  静态包含:(主要

    一个单独的jsp页面,只维护一处,其他都统一被修改(如网页底部的友情链接、加入我们等等)

    样例:<%@ include  file="/xxx/xx.jsp"%> //file属性指定包含的 jsp 页面路径,"/"映射到web目录下;

    特点:(1)不翻译被包含的jsp页面(2)本质是把被包含的jsp页面拷贝到包含位置执行输出;

  动态包含:

    样例:<jsp:include  page="/xxx/xx.jsp"></jsp:include> //page属性指定包含的 jsp 页面路径;

    特点:(1)把被包含的jsp页面也翻译成 java 代码

       (2)底层代码使用如下去调用被包含的jsp页面执行输出:JspRuntimeLibrary.include(xxx);

       (3)动态包含,还可以传递参数

  请求转发:<jsp:forward  page="/xxx/xx.jsp"></jsp:forward > //page属性指定包含的 jsp 页面路径;

    一定要从客户端发请求给Servlet程序,不能直接发给jsp。

  

11. Listener 监听器(JavaEE规范,就是接口;监听某种事物的变化,通过回调函数反馈给客户(程序)去做一些操作)

12. ServletContextListener 监听器

  可以监听 ServletContext 对象的创建和销毁;(ServletContext 对象再 web工程启动时创建,web工程停止时销毁)

  监听到创建和销毁之后会分别调用 ServletContextListener 监听器的方法反馈

  两个方法:

    contextInitialized(ServletContextEvent sce):在其对象创建之后马上调用,做初始化

    contextDestoryed(ServletContextEvent sce):对象销毁之后调用

13. 如何使用 ServletContextListener 监听器监听 ServletContext 对象

  ① 编写一个类去实现 ServletContextListener 

  ② 实现两个回调方法

  ③ 到 web.xml 中配置监听器:<listenner><listenner-class>类全路径</listenner-class></listenner>

posted @   LinxhzzZ  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示