JavaWeb学习总结(八)jsp详解/头部page指令/声明脚本/表达式脚本/代码脚本/九大内置对象/四大域对象/out输出流和writer输出流/静态包含和动态包含区别/Listener监听器

本文详细介绍了Java Web中的JSP技术,包括JSP的简介、作用、创建过程及其本质——是一个Servlet程序。讲解了JSP的page指令、脚本元素、注释类型、九大内置对象和四大域对象。还探讨了out输出流和writer输出流的差异,以及jsp静态包含和动态包含的原理。最后,提到了监听器的概念和ServletContextListener的应用。
摘要由CSDN通过智能技术生成

一、jsp简介

(一)概述

JSP(全称 Java Server Pages,Java 的服务器页面)是由 Sun 公司专门为了解决动态生成 HTML 文档的技术。

(二)作用

jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。
如果我们要往客户端输出一个页面,我们可以使用 Servlet 程序来实现,但是十分不方便和繁琐。 并且有些复杂的页面上千上万行,那就更加的困难,开发成本和维护成本都极高。 所以 sun 公司推出一种叫做 jsp 的动态页面技术帮助我们实现对页面的输出繁锁工作。

(三)如何创建jsp页面

选中 Web目录,右键创建一个 jsp 文件
在这里插入图片描述
输入 jsp 页面的文件名
在这里插入图片描述
在 body 标签中添加你想要显示的文本内容
在这里插入图片描述
然后启动Tomcat,在浏览器中输入 jsp 页面的访问地址
jsp 页面的访问地址和 html 页面的访问路径一样 http://ip地址:端口号/工程名/文件名
在这里插入图片描述

注意:jsp 页面的访问千万不能像 HTML 页面一样,直接手拖到浏览器中或是直接用地址名访问。只能通过启动 Tomcat 服务器再用浏览器访问 jsp 页面

(四)jsp的本质

jsp 页面本质上是一个 Servlet 程序
当我们第一次访问 jsp 页面的时候,Tomcat 服务器会帮我们把 jsp 页面翻译成为一个 java 源文件。并且把它进行编译成为.class 字节码程序。我们可以通过启动Tomcat时IDEA的输出,找到Using CATALINA_BASE这一项,复制后面的地址到我的电脑的地址栏,再逐步点进work/Catalina/localhost/项目名org/apache/jsp,就可以找到我们的jsp页面翻译后的java源文件。我们打开 java 源文件不难发现其里面的内容是:
在这里插入图片描述

我们跟踪原代码发现,这个jsp翻译出来的类继承了HttpJspBase 类,查看HttpJspBase的源码发现,它直接地继承了 HttpServlet 类。也就是说:jsp 翻译出来的 java 类,它间接了继承了 HttpServlet 类。也就是说,jsp页面翻译出来的是一个 Servlet 程序。
在这里插入图片描述

总结:jsp 就是 Servlet 程序。
当我们访问 一个 xxx.jsp 文件后,翻译成 java 文件的全名是 xxx_jsp.java 文件
大家也可以去观察翻译出来的 Servlet 程序的源代码,不难发现,其底层实现,也是通过输出流,把 html 页面数据回传给客户端:
在这里插入图片描述

二、jsp语法

(一)头部的page指令

jsp 的 page 指令可以修改 jsp 页面中一些重要的属性,或者行为。

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

page指令中有如下属性:

  • language 属性 表示 jsp 翻译后是什么语言文件。暂时只支持 java。
  • contentType 属性 设置响应头 contentType 的内容。也是源码中 response.setContentType()参数值
  • pageEncoding 属性 表示当前 jsp 页面文件本身的编码。
  • import 属性 跟 java 源代码中一样,给当前 jsp 页面导入需要使用的类包。
  • autoFlush 属性 设置当 out 输出流缓冲区满了之后,是否自动刷新缓冲区。默认值是 true。
  • buffer 属性 设置 out 缓冲区的大小。默认是 8kb
  • errorPage 属性 设置当前 jsp 发生错误后,需要跳转到哪个页面去显示错误信息,这个页面的路径一般都是以/斜杠打头,它表示请求地址为 http://ip:port/工程路径/,映射到代码的 Web 目录
  • isErrorPage 属性 设置当前 jsp 页面是否是错误页面。是的话,就可以使用 exception 异常对象,从而获取异常信息
  • session 属性 设置当前 jsp 页面是否获取 session 对象,默认为 true
  • extends 属性 给服务器厂商预留的 jsp 默认翻译的 servlet 继承于什么类

(二)常用脚本

1.声明脚本(极少使用)

格式

<%!  
	java 代码 
%>

作用:可以给 jsp 翻译出来的 java 类定义全局变量、方法、静态代码块和内部类等。 (几乎可以写在类的内部写的代码,都可以通过声明脚本来实现)
在这里插入图片描述

2.表达式脚本(常用)

格式<%=表达式 %>
作用:表达式脚本用于向页面输出内容。

  • 表达式脚本翻译到 Servlet 程序的 _jspService() 方法中 以 out.print() 打印输出
  • 由于表达式脚本翻译的内容都在_jspService() 方法中,所以_jspService()方法中的对象,在表达时脚本中都可以直接使用
  • out 是 jsp 的一个内置对象,用于生成 html 的源代码
  • 注意:表达式不要以分号结尾,否则会报错
  • 表达式脚本可以输出任意类型。 比如:
    1. 输出整型
    2. 输出浮点型
    3. 输出字符串
    4. 输出对象

案例

<%=12 %> <br> 
<%=12.12 %> <br> 
<%="我是字符串" %> <br> 
<%=map%> <br> 
<%=request.getParameter("username")%>

和翻译出来的java源代码对照:
在这里插入图片描述

3.代码脚本(使用最多)

格式

<% 
	java 代码 
%> 

作用:代码脚本里可以书写任意的 java 语句。

  • 代码脚本的内容都会被翻译到 _jspService()方法中,所以 _jspService() 方法中可以写的 java 代码,都可以书写到代码脚本中
  • 可以由多个代码脚本块组合完成一个完整的 java 语句。
  • 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据

案例
在这里插入图片描述

在这里插入图片描述
和翻译出来的java源代码对照:
在这里插入图片描述


练习1:在浏览器中输出九九乘法口诀表
在这里插入图片描述

在这里插入图片描述
练习2:jsp 输出一个表格,里面有 10 个学生信息
Student类:

public class Student {
   
	//用Integer而不是int,当没有数据时,此属性默认值为null而不是0,毕竟0也是个确定的数值
    private Integer id;
    private String name;
    private Integer age;
    private String phone;

    public Student
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值