动态网页开发技术之JSP(Java Server Pages)

本文详细介绍了JSP(Java Server Pages)技术,包括JSP的定义、本质、语法、内置对象、四大域对象,以及out输出对象与response.getWriter的区别。通过对比Servlet程序的繁琐性,突显了JSP在回传HTML页面数据方面的优势。同时,讨论了JSP的常用标签,如包含、页面转发,并通过实例展示了监听器的概念和使用。
摘要由CSDN通过智能技术生成

)1代码的具体实现可以参考代码中的注释,如果由于注释不清楚而不明白相应原理,可以与作者私聊,欢迎互相交流、进步。
)2文笔有限,如若有对该博客不清楚的地方可以私信作者或者在底下评论,我一定会第一时间回复。
3)码字不易,干货连连,有兴趣的小伙伴点个赞呗,大家相互学习。

1 前序知识——在IDEA中创建一个Web应用

 

2 JSP的定义

JSP的全称是Java Server Pages,表示的是Java的服务器页面。它的主要作用是代替Servlet程序回传HTML页面的数据。这是因为Servlet程序回传HTML页面数据是一件非常繁锁的事情,开发成本和维护成本都极高。

接下来用一个实例来说明用Servlet程序回传HTML页面数据的繁琐性。实例要求:在网页上返回如下文字

1)使用Servlet程序

下面的代码就是我们利用Servlet程序返回要求文字的代码,可以看到,我们写了这么多行代码,仅仅只是为了在网页上显示这么简单的一行话,可想而知,当需要返回的内容较多时,该工作是如何的繁琐。所以,我们有了如下JSP的方式。

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloJSP extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        // 通过响应的回传流回传html 页面数据
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.write("<!DOCTYPE html>\r\n");
        writer.write(" <html lang=\"en\">\r\n");
        writer.write(" <head>\r\n");
        writer.write(" <meta charset=\"UTF-8\">\r\n");
        writer.write(" <title>Title</title>\r\n");
        writer.write(" </head>\r\n");
        writer.write(" <body>\r\n");
        writer.write(" helloJSP, Sharm!\r\n");
        writer.write(" </body>\r\n");
        writer.write("</html>\r\n");
        writer.write("\r\n");
    }
}

2)使用JSP技术

下面的代码就是我们利用JSP技术返回要求文字的代码,可以看到,JSP技术在该方面的优越性是远大于Servlet的。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    helloJSP, Sharm!
</body>
</html>

JSP存放的目录和HTML文件一样,也是放在web目录下的,访问也跟访问HTML页面一样。就如,若在web目录下有如下的文件,则对应的访问地址也如下所示:

文件 访问地址
helloJSP.html http://ip:port/工程路径/helloJSP.html
helloJSP.jsp http://ip:port/工程路径/helloJSP.jsp

 

3 JSP的本质

JSP页面本质上是一个Servlet 程序。

当我们第一次访问JSP页面的时候。Tomcat 服务器会帮我们把JSP页面翻译成为一个Java源文件,并且把它编译为.class字节码文件。该源文件的存放地址可以从下面的图中可知,也就是部署的文件的位置(红框+红字):
在这里插入图片描述
下面的代码为该目录下Java源文件的类名:
在这里插入图片描述
从上述文件夹中的Java源文件发现,其中的HttpJspBase类直接地继承了HttpServlet类,也就是说,JSP翻译出来的Java类间接了继承了HttpServlet类。也就是说,JSP翻译出来的是一个Servlet程序。
 

4 JSP的语法

4.1 JSP头部的page指令

查看本文第二章的JSP代码,如下图所示,其中JSP头部的page指令就在下图中红框的位置:在这里插入图片描述
JSP的page指令可以修改JSP页面中一些重要的属性,或者行为。下面表格中就是用到的属性:

JSP的page指令属性 作用
language 表示jsp翻译后是什么语言文件,暂时只支持java
contentType 表示jsp返回的数据类型是什么,也是源码中response.setContentType()参数值
pageEncoding 表示当前jsp页面文件本身的字符集
import 跟java源代码中一样,用于导包、类
isErrorPage 设置当前jsp页面是否是错误信息页面,默认是false
session 设置访问当前jsp页面是否会创建HttpSession 对象,默认是true
extends 设置jsp翻译出来的java类默认继承谁
errorPage 设置当jsp页面运行时出错,自动跳转去的错误页面路径
autoFlush 设置当out输出流缓冲区满了之后,是否自动刷新冲级区,默认值是true
buffer 设置out 缓冲区的大小,默认是8kb

4.2 JSP中的常用脚本

该脚本程序的作用就是:在JSP页面中加入Java代码,同时利用Java代码实现功能。

JSP有三种脚本,对应的格式和作用分别为下图所示:

脚本类型 格式 作用
声明脚本 <%!   %> 声明jsp页面中的代码
表达式脚本 <%=   %> 在jsp页面上输出数据
代码脚本 <%   %> 在jsp页面中定义自己需要的语句

示例一

示例一参考博客

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值