JSP基本知识

前言

了解Jsp基本知识,Jsp三大脚本、Jsp三种注释、Jsp九大内置对象、Jsp常用标签。

一、JSP

1、Jsp有什么用?

Servlet向浏览器回传HTML数据非常繁琐,开发和维护成本都非常高,所以用JSP(Java Server Pages)来快速整合数据和HTML页面并回传。

2、Jsp本质

Jsp本质是一个Servlet程序,将Jsp编译之后,变成一个Jsp类,继承了HttpJspPage,该类继承了HttpServlet。
所以Jsp算是一个中间件,它将我们写的HTML和Java数据变成字符文件流进行回传。

3、Jsp指令

A.Page指令

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
A)language,表示将该jsp用什么编程语言翻译,这里当然是翻译成Java写的Servlet。
B)contentType,表示Jsp返回的数据类型是什么以及解码的方式。
C)pageEncoding,表示当前页面的编码格式。
D)import,导Java包和类。
E)autoFlush,设置输出流对象的基本属性,设置是否缓冲区满了就刷新缓存区,默认是true。
F)buffer,设置输出流对象的缓冲区大小,一般设为8kb。
G)errorPage,设置该页面出错时跳到友好的出错页面。
H)isErrorPage,设置该页面是否为有异常,默认false,若设为true,则将其翻译成Servlet时会捕获异常。
I)session,访问当前页面是否创建HttpSession对象,默认true。
J)extends,设置将Jsp翻译成Servlet时默认继承什么类。

4、Jsp三大脚本

A.声明脚本

格式)<%! Java声明代码 %>
作用)为Jsp翻译出来的Java声明出属性、方法、静态块、内部类等。

private boolean status = true;
    private Map<Integer, Integer> mark = null;
    public static int count;

    {
        mark = new HashMap<>();
        mark.put(1, 1);
    }

    static {
        count = 1;
    }
    public void test(){
        System.out.println("ok");
    }

B.表达式脚本

格式)<%=Java变量 %>
作用)可输出整型、浮点型、字符串、对象。

<%= mark.get(1)%>
<%= Double.valueOf("1.0")%>
<%= String.valueOf(mark.get(1))%>
<%= mark%>

对应servlet中的out.print();

C.代码脚本

格式)<% java 语句 %>
作用)相当于在service中写代码

5、Jsp三种注释

1)HTML注释,<!-- -->该注释会被输出到客户端。
2)Java注释,<% //Java注释 %>会被翻译成Java注释。
3)Jsp注释,<%-- --%>jsp里真正的注释。

6、Jsp中9大内置对象

jsp被翻译成servlet之后,会生成9大内置对象。

1)request
2)response
3)pageContext
4)session
5)application
6)config
7)out
8)page
9)exception

A.四大域对象

四个域对象功能一样,像Map一样存取域中数据,但是范围不一样。

pageContextrequestsessionapplication
当前jsp页面有效一次请求过程中一次客户端与服务端的会话中项目部署后的整个生命周期
pageContextImplHttpServletRequestHttpSessionServletContxt

B.out和response.getWriter()的区别

我们知道往客户端回传的数据是通过response获取其中一种流,一种字符流和一种字节流。而out流不能回传数据,那么在service结束时就会把out流入out的缓存区数据flush到response获得的流中,然后response获得的流中的缓冲区再把数据回传。
在这里插入图片描述
注:jsp底层使用out输出,所以为了不打乱页面,所以一般都用out输出。

7、Jsp常用标签

A.静态包含

需求)当成千上万个jsp都有相同的一块内容,而想维护这一块内容时,就需要修改这成千上万的页面,比如当公司改名时要修改最下面的版权所有。
分析)这个时候就可以把这一块内容做成一个页面,然后其它页面引入它即可,此时只需修改一次源头页面就可以修改所有页面的引入内容。
实现)<%@include file="/footer.html"%>
注:可包含jsp,但是是直接拷贝过来,而不会单独翻译成servlet。

B.动态包含

实现)<jsp:include page="/footer.html"></jsp:include>
注:
1)包含的jsp页面会被翻译成Servlet,此时会把req,resp,out传过去,然后在包含的jsp中处理它自己的内容。
2)可以传递参数<jsp:include page="/index.html"> <jsp:param name="username" value="lls"/> <jsp:param name="passname" value="lls"/> </jsp:include>
在这里插入图片描述

C.转发

<jsp:forward page="/index.html">
        <jsp:param name="username" value="lls"/>
        <jsp:param name="password" value="lls"/>
    </jsp:forward>

替代下面的Java代码

<%
        request.getRequestDispatcher("/index.html").forward(request, response);
    %>

8、九九乘法表

<!-- 九九乘法表 -->
    <h1>九九乘法表</h1>
    <%
        for (int i = 0; i < 9; i++) {

            for (int i1 = 0; i1 <= i; i1++) {
    %>

    <%=(i + 1)%> * <%=(i1 + 1)%> = <%=(i + 1) * (i1 + 1)%>&nbsp;&nbsp;&nbsp;

    <%
        }
    %><br>
    <%
        }
    %>

在这里插入图片描述

9、Listener监听器

1)Javaweb三大组件Servlet、Listener、Filter之一。
2)Listener同其它两个组件一样是JavaEE规范,即接口。
3)用于监听某些状态的变化,通过回调函数来对变化进行相应的处理。

1、ServletContextListener

监听ServletContextListener对象的创建和销毁,该对象在工程启动时创建,停止时销毁。

public interface ServletContextListener extends EventListener {
//ServletContextListener对象创建时做一些处理
    default void contextInitialized(ServletContextEvent sce) {
    }
//ServletContextListener对象销毁时做一些处理
    default void contextDestroyed(ServletContextEvent sce) {
    }
}

使用步骤入下,
1)实现该接口
2)重写回调函数
3)web.xml中配置监听器

package com.xhu.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ServletContextListenerImlp implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //做一些初始化处理
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        //做一些收尾工作
    }
}
<!-- 配置监听器-->
    <listener>
        <listener-class>com.xhu.listener.ServletContextListenerImlp</listener-class>
    </listener>

总结

1)Jsp三大脚本
2)Jsp三种注释
3)Jsp九大内置对象
4)Jsp常用标签

参考文献

[1] Java Web尚硅谷

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值