JavaWeb学习笔记(六)jsp
发布时间:2021-05-21 07:25:15 所属栏目:大数据 来源: https://www.jb51.cc
导读:第六章、jsp 1、什么是jsp jsp:java server pages,java的服务器页面 作用:代替Servlet回传HTML页面的数据 因为Servlet程序回传HTML页面的数据很繁琐,开发成本和维护成本都极高 public class PrintHtml extends HttpServlet {//验证:"Servlet 程序回传 ht
第六章、jsp
1、什么是jsp
-
jsp:java server pages,java的服务器页面
-
作用:代替Servlet回传HTML页面的数据
-
因为Servlet程序回传HTML页面的数据很繁琐,开发成本和维护成本都极高
public class PrintHtml extends HttpServlet {//验证:"Servlet 程序回传 html 页面数据是一件非常繁锁的事情"
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("<!DOCTYPE html>rn");
writer.write(" <html lang="en">rn");
writer.write(" <head>rn");
writer.write(" <Meta charset="UTF-8">rn");
writer.write(" <title>Title</title>rn");
writer.write(" </head>rn");
writer.write(" <body>rn");
writer.write(" 这是html页面数据 rn");
writer.write(" </body>rn");
writer.write("</html>rn");
writer.write("rn");
}
}
-
jsp 回传 html 页面简单
- 新建:和html一样,也是在web目录下新建 jsp文件
- 访问:运行后,浏览器输入:
http://ip:port/工程路径/a.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
this is a html page!
</body>
</html>
2、jsp本质
1、jsp本质是一个Servlet程序
- 在控制台的输出信息中找到:
-
CATALINA_BASE:/Users/liuzhixian/Library/Caches/JetBrains/IntelliJIdea2020.1/tomcat/_JavaWeb ,这就是运行此工程时产生的时产生的文件
-
验证是运行时产生的方法是:work/Catalina/localhost/ 下的文件删除后,重新启动项目会产生新的文件,且和刚才删除的一样
-
从中找到a.java 就是Tomcat 服务器帮我们把 jsp 页面翻译成为的 java 源文件。
-
打开a.java 后发现:jsp继承了HttpJspBase类,HttpJspBase类继承了HttpServlet类。
-
也就是说。jsp 翻译出来的 java 类,它间接了继 承了 HttpServlet 类。也就是说,翻译出来的是一个 Servlet 程序。
3、jsp的三种语法
3.1、jsp头部的 page指令
-
jsp 的 page 指令可以修改 jsp 页面中一些重要的属性,或者行为
-
page中各种属性的含义或作用
language |
作用 |
language
表示 jsp 翻译后是什么语言文件。暂时只支持 java
contextType
表示 jsp 返回的数据类型是什么。也是源码中 response.setContentType()参数值:response.setContentType("text/html;charset=UTF-8");
pageEncoding
jsp 页面文件本身的字符集
import
跟 java 源代码中一样。用于导包,导类
autoFlush
设置当 out 输出流缓冲区满了之后,是否自动刷新缓冲区。默认值是 true
buffer
设置 out 缓冲区的大小。默认是 8kb
errorPage
设置当 jsp 页面运行时出错,自动跳转去的错误页面路径
isErrorPage
设置当前 jsp 页面是否是错误信息页面。默认是 false。如果是 true 可以获取异常信息
session
设置访问当前 jsp 页面,是否会创建 HttpSession 对象。默认是 true
extends
设置 jsp 翻译出来的 java 类默认继承谁
3.2、jsp中常用脚本
-
声明脚本(极少使用)
-
表达式脚本(常用)
-
代码脚本
- 格式:
<%java代码%>
- 作用:可以在 jsp 页面中,用java代码,编写我们自己需要的功能
- 特点
- 代码脚本翻译之后都在
_jspService 方法中
- 代码脚本由于翻译到
_jspService() 方法中, 所以在_jspService() 方法中的现有对象都可以直接使用
- 还可以由多个代码脚本块组合完成一个完整的 java 语句
- 代码脚本还可以和表达式脚本一起组合使用, 在 jsp 页面上输出数据
3.3、jsp中三种注释
- html注释:
- Java注释
- jsp注释
- <%-- 这是 jsp 注释 --%>
- jsp 注释可以注掉jsp 页面中所有代码
4、jsp九大内置对象
内置对象 |
说明 |
|
request
请求对象
response
响应对象
pageContext
jsp上下文对象
session
会话对象
application
ServletContext对象
config
ServletConfig对象
out
jsp输出流对象
page
指向当前jsp的对象
exception
异常对象
5、jsp四大域对象
对象 |
所属类 |
说明 |
pageContext
PageContextImpl类
当前jsp页面范围内有效
request
HttpServletRequest类
一次请求有效
session
HttpSession类
一个会话范围内有效(打开到关闭浏览器)
application
ServletContext类
整个Web工程有效(只要Web工程不停止,数据都在)
- 使用的优先顺序:越小越好(可以尽快释放资源,优化性能)
6、jsp中out输出和response.getWriter输出的区别
7、jsp常用标签
7.1、jsp静态包含
- 格式:
<%@ include file="要包含的jsp页面的路径"%>
- 地址中第一个斜杠 / 表示为 http://ip:port/工程路径/,映射到代码的 web 目录
- 特点
- 静态包含不会翻译被包含的 jsp 页面
- 静态包含其实是把被包含的 jsp 页面的代码拷贝到包含的位置执行输出
- 使用情况:开发时常用
7.2、jsp动态包含
7.3、jsp转发标签(功能就是请求转发)
- 格式:
<jsp:forward page=""></jsp:forward>
8、练习题
8.1、输出九九乘法表
8.2、jsp 输出一个表格,里面有 10 个学生信息
9、监听器
- Listener 监听器它是 JavaWeb 的三大组件之一。 JavaWeb 的三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监 听器。
- Listener 监听器是 JavaEE 的规范,就是接口
- 作用:监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理
10、ServletContextListener监听器
-
作用:监听ServletContext的创建和销毁(ServletContext对象在 web 工程启动的时候创建,在 web 工程停止的时候销毁),
-
使用:
-
监听到创建和销毁之后都会分别调用 ServletContextListener 监听器的方法反馈
-
代码实现
- 编写一个类去实现ServletContextListener
- 实现两个回调方法
- web.xml中配置监听器
public class MyServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext 对象被创建了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext 对象被销毁了");
}
}
<listener>
<listener-class>
com.atguigu.listener.MyServletContextListenerImpl
</listener-class>
</listener>
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!