JavaWeb: Java Server Page----JSP;视图模板技术----Thymeleaf

一,什么是JSP?

jsp----Java Server Page:Java服务器页面

JSP:Java服务器页面
作用是:代替Servlet程序回传Html数据,
servlet程序回传html数据很麻烦,开发成本和维护都很麻烦,所以用JSP来代替回传

JSP如何访问:

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

二,JSP的本质是什么?

观察翻译过后的源代码发现:
JSP本质上就是一个Servlet程序
底层实现就是通过输出流 将HTML页面数据回传给客户端

三,JSP的三种语法(page、脚本语言、注释)

JSP头部的page指令

可以修改jsp页面中一些重要属性或行为

属性功能
1.language表示JSP翻译后是什么语言文件,暂时只支持JAVA
2 contentType表示jsp返回的数据类型是什么。也是源码中response.setContentType()参数值
3 pageEncoding表示 jsp当前页面的字符集
4 import导包,导类
以下两个属性给out输出流使用----------------------------------------------------------------
5 autoFlush 属性设置out输出流缓冲满了 是否 自动刷新 默认是ture (不改)
6 buffer 属性设置out 缓冲区的大小,默认8kb (不改)
这两个设置错误会出现out缓冲区溢出错误-----------------------------------------------------------------
7 errorPage运行出错 跳转去的页面 (斜杠打头,到工程目录)
8 isErrorPage是否有错误页面,默认false ,true则可以捕获异常信息
9 session属性设置访问JSP页面是否创建HttpSession对象,默认 true
10 extends 继承设置翻译后的Jsp页面继承哪个类

JSP中常用的脚本

三种脚本

  • 声明脚本(不建议使用,违背MVC原则)
  • 表达式脚本,(可以与EL表达式配合使用)
  • 代码脚本(也不建议使用)
声明脚本
格式:<%!声明%>
<%--声明属性和变量--%>
<%!
private Integer id;
private String name;
private static Map<String,Object> map;
%>

<%--声明静态代码块--%>
<%!
static {
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");

}
%>
<%--声明方法--%>
<%!
public static int num(){
return 123;
}
%>
<%--声明内部类--%>
<%!
public static class A{
int a = 1;

}
%>
表达式脚本

格式:<%=表达式%>
作用:在JSP页面上输出数据

特点:

  • 所有表达式脚本都会被翻译到_jspService()方法中
  • 表达式脚本都会被翻译成为out.print()输出到页面上
  • 由于表达式脚本翻译的内容都在_jspService()方法中,因此_jspService()方法中的对象都可以使用
  • 表达式脚本不能以分号结束
  • 练习: 输出整形 输出浮点型 输出字符串 输出对象
代码脚本

格式:

<% 代码,Java语句 %>

作用:
可以在jsp页面中,编写自己需要的功能(Java语句)(if 语句)(for循环)
(_jspService方法中可以写的代码都可以写)

特点:
翻译之后都在_jspService()方法中
_jspService()方法中现有的对象都可以使用
可以拆分,可以有多个代码脚本组成一个完整的java语句
还可以和表达式脚本组合使用,在jsp上输出数据

注释:

html注释
<!--html注释-->
java注释
//java注释
/* java注释*/
jsp注释:
<%--jsp注释--%>

四,九大内置对象

“ jsp页面翻译后自动创建的九个对象成为九大内置对象(包括四个域对象) ”

jsp内置变量名对应对象含义
request请求对象
response响应对象
pageContextjsp上下文对象
session会话对象
applicationServletContext对象
configServletConfig对象
outjsp输出对象
page指向当前jsp对象
exception异常对象

五,四大域对象

四个域对象分别是:

内置对象名隶属于类隶属于类
pageContext(PageContextImpl类)当前jsp页面范围有效
request(HttpServletRequest类)一起请求内有效
session((HttpSession类)一次会话范围有效(打开浏览器,直到关闭浏览器)
application(ServletContext类)整个web工程范围内有效(工程不停止,数据都在)

域对象时可以和Map一样存取数据的对象,四个域对象功能一样,但是他们对数据的存取范围不一样。


六,JSP中的out和response.getWriter()

在这里插入图片描述
out和response.getWriter()输出顺序

在这里插入图片描述

jsp翻译之后的源代码都是以out来进行输出的,所以一般情况下,我们用out来进行输出,以免打乱页面顺序

out.write() 输出字符串没问题(仅仅输出字符串没问题)
out.print() 输出任何数据都没问题(都会转成字符串来调用out来输出)


七,常用JSP标签

三种常用标签:静态包含,动态包含,请求转发
适用场景:大规模的web工程,前端页面需要更改时,仅需要更改被包含的页面,无需一个一个修改,例如,网站页脚信息。

静态包含:

语法:<%@ include file = “路径” %>file 属性指定你要包含的jsp页面
静态包含的特点:

  1. 静态包含不会翻译被包含的jsp页面
  2. 静态包含其实就是把被包含的jsp页面的代码拷贝到包含的位置执行输出
动态包含:

语法:<jsp: include: page=“页面路径名”><jsp:include >
在这里插入图片描述

动态包含还可以传递参数
在这里插入图片描述

请求转发:

jsp请求转发
在这里插入图片描述

格式:
<jsp:forward page = " /scope2.jsp"></jsp:forward>

request请求转发
在这里插入图片描述
格式:
request.getRequestDispatcher(path:“工程路径下目标页面”).forward(request,response);

JSP请求转发:
在这里插入图片描述

不可直接访问JSP,不然会空指针,因为没有经过Servlet程序


拓展, 什么是Listener监听器?

  • 一、Listener监听器是JavaWeb三大组件之一,三大组件分别是:Servlet程序,Fitter过滤器,Listener监听器。
  • 二、Listener监听器就是JavaEE的规范,就是接口
  • 三、监听器的作用,监听某种事物的变化,然后通过回调函数,反馈给客户(程序)去做一些相应的处理

最有用的监听器ServletContextListener

ServletContextListener 监听器

  • ServletContextListener他可以监听ServletContext对象的创建与销毁
  • ServletContext对象在web工程启动的时候创建,
  • ServletContext对象在web工程结束的时候销毁,
  • 监听到创建和销毁之后会调用ServletContextListener 监听器的两个方法进行反馈,
  • 两个方法是:
  public interface ServletContextListener extends EventListener {

    //在ServletContext对象创建之后马上调用,做初始化
    void contextInitialized(ServletContextEvent var1);
    //在ServletContext对象销毁之后马上调用
    void contextDestroyed(ServletContextEvent var1);

    }

如何使用:框架阶段研究
如何配置:在web.xml文件中配置

<!--配置监听器-->
<listener>
        <listener-class> ServletContextListener接口实现类 的全类名</listener-class>
</listener>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值