【JavaWeb】JSP学习看着一篇就够了-01

  • Post author:
  • Post category:java


注:本文章基于尚硅谷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页面中所有的代码执行完成后会做以下两个操作:

  1. 执行out.flush()操作,

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

out.write():输出字符串没有问题

out.print():输出任意数据都没有问题(都转换为字符串后调用的write输出)




三、jsp常用标签:



(1)jsp静态包含:

<%@ include file="" "%>

file属性指定你要包含的jsp页面的路径

地址中的第一个斜杠 / 表示为http://ip:port/工程路径/ 映射到代码的web目录

静态包含的特点:

  1. 静态包含不会翻译被包含的jsp页面

    2.静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出



(2)jsp动态包含:

<jsp:include page=" "></jsp:include>

动态包含的特点:

  1. 动态包含会把包含的jsp页面也翻译为java代码;
  2. 动态包含是用如下的代码去调用被包含的jsp页面执行输出:
JspRuntimeLibrary.include(request,response,"/include/footer.jsp,out,false"

3.动态包含还可以传递参数;



(3)jsp请求转发:

<jsp:forward page=" "></jsp:forward>

page属性设置请求转发的路径



四、LIstenner监听器:

  1. LIstenner监听器是JavaWeb的三大组件之一。JavaWeb三大组件:Servlet程序,Filter过滤器,LIstenner监听器;
  2. LIstenner他是JavaEE的规范,就是接口
  3. 监听器的作用是,监听某种事务的变化。然后通过回调函数,反馈给客户(程序),去做一些相应的处理;

ServletContextLIstenner监听器:

ServletContextLIstenner监听器可以监听ServletContext对象的创建和销毁。

ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁;

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

两个方法分别是:

在ServletContext对象创建之后马上调用,作初始化;

public void contextInitialized(ServletContextEvent sce){
}

在ServletContext对象销毁后调用

public void contextDestroyed(ServletContextEvent sce){
}

使用步骤如下:

  1. 编写一个类去实现ServletContextLIstenner;
  2. 实现其两个回调方法
  3. 到web.xml文件中去配置监听器

如果感觉内容写的还不错的话,一键三连不迷路!!!!

后面将会更新更多学习内容,一起学习吧!!!!!!

在这里插入图片描述



版权声明:本文为weixin_47418550原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。