Java Web __ JSP技术

2022/6/22 1:19:55

本文主要是介绍Java Web __ JSP技术,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JSP概述

什么是JSP
在JSP全名是Java Server Page,它是建立在Servlet规范之上的动态网页开发技术。
在JSP文件中,HTML代码与Java代码共同存在

  • HTML代码用来实现网页中静态内容的显示,
  • Java代码用来实现网页中动态内容的显示。
    Java代码必须包含在“<%”和“%>”之间

为了与普通HTML有所区别,JSP文件的扩展名为 .jsp。

JSP运行原理
当用户第一次访问JSP页面时,该页面都会被JspServlet翻译成一个Servlet源文件,然后将源文件编译为.class文件。

Servlet源文件和.class文件都放在“Tomcat安装目录/work/Catalina/localhost/应用名/”目录下。

由JSP文件翻译成的Servlet类带有包名,包名为org.apache.jsp,
因此simple.jsp生成的Servlet源文件和.class文件的目录结构如图所示。

image

从图中可以看出,simple.jsp文件被翻译成的class文件和Servlet源文件分别是simple_jsp.class和simple_jsp.java。

simple.jsp文件翻译后的Servlet类名为simple_jsp,它继承了org.apache.jasper.runtime.HttpJspBase类。

JSP基本语法

JSP模板元素
JSP模版元素就是指:JSP页面中的静态HTML内容
JSP页面可以包含HTML文件的所有静态内容。

作用:
定义网页的基本骨架,即定义页面的结构和外观。

JSP表达式
JSP表达式(expression)用于将程序数据输出到客户端。

它将要输出的变量或者表达式直接封装在下面的标记中
<%= expression %>

例如,对simple.jsp文件进行修改,将脚本片段修改为表达式:
<%= new java.util.Date().toLocaleString() %>
启动Tomcat服务器,在浏览器中再次输入URL地址访问simple.jsp页面,同样可以正确输出当前的访问时间。
注意
JSP表达式中的变量或表达式后面不能有分号(;)

JSP脚本片段
JSP脚本片断是指嵌套在<% 和 %>之中的一条或多条Java程序代码
这些Java代码必须严格遵守Java语法规范,否则编译会报错。

语法格式

<%
   java代码
>%

注意:

  1. 需要在每个执行语句后都使用分号(;)结束。

  2. 可以出现多个脚本片段,并且这些脚本片段中的代码可以互相访问。
    在两个或者多个脚本片段之间可以嵌套文本、HTML标记或其它JSP元素。

  3. 只要多个脚本片段及其它元素组合的结果是一个完整的Java语句,翻译后的Servlet程序就可以正常运行,并将结果显示出来。

  4. 脚本片断中的Java代码将被原封不动地移到由JSP页面所翻译成的Servlet的_jspService()方法中。
    脚本片断之外的任何文本、HTML标记以及其它JSP元素也都会被转换成相应的Java程序代码插入到_jspService()方法的相应位置。

JSP声明
在JSP技术中提供了声明
被声明的Java代码将被翻译到Servlet的_jspService()方法之外,即在JSP声明中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。

语法格式

<%!
   java代码
>%

注意:

  1. 在一个JSP页面中可以有多个JSP声明,单个声明中的Java语句可以是不完整的,但是多个声明组合后的结果必须是完整的Java语句。

JSP注释
同其它各种编程语言一样,JSP也有自己的注释方式,其基本语法格式如下:
<%-- 注释信息 --%>

注意
,Tomcat在将JSP页面翻译成Servlet程序时会忽略JSP页面中被注释的内容,不会将注释信息发送到客户端。

HTML注释

由于JSP页面中存在HTML代码,因此,在JSP页面中同样可以使用HTML注释。其基本语法格式如下:
<!-- -->

和jsp注释不同的是:
HTML注释的内容会被当做普通文本发送到客户端。

JSP指令

page指令

在JSP页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP页面采用的语言等,这时,可以通过page指令来实现。

语法格式
<%@ page 属性名= "属性值"%>

  • page用于声明指令名称
  • 属性用来指定JSP页面的某些特性。

常用属性:
image

利用web.xml文件配置通用的错误页面

在JSP程序中,如果为每个页面都利用errorPage属性指定一个错误页面,这样的做法显然很繁琐。

这时,可以在web.xml文件中使用<error-page>元素为整个Web应用程序设置错误处理页面,具体示例如下所示:
image

该段代码用于设置处理所有404和500状态码的页面,其中

  • <error-page>元素用于指定当前JSP页面的错误处理页面
  • <error-code>元素用于指定服务器返回的状态码
  • <location>元素用于指定错误处理页面的路径

include指令

有时候,需要在JSP页面静态包含一个文件,例如HTML文件,文本文件等,这时,可以通过include指令来实现,

语法格式:****
<%@ include file="relativeURL"%>
file属性用于指定被引入文件的相对路径。

注意

  1. 被引入的文件必须遵循JSP语法。
    其内容可以包含普通JSP页面所具有的一切内容。

  2. 除了指令元素之外,被引入的文件中的其它元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致。

  3. file属性的设置值必须使用相对路径。
    如果以“/”开头,表示相对于当前WEB应用程序的根目录。

隐式对象

JSP提供了9个隐式对象,它们是JSP默认创建的,可以直接在JSP页面使用。

9个隐式对象分别是:
image

out对象

out对象是javax.servlet.jsp.JspWriter类的实例对象,out对象的类型为JspWriter。

作用
在JSP页面中,向客户端发送文本内容。

说明:
out对象的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似。
不同的是,out对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter。

JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系!
image

从图可以看出,

  • 在JSP页面中,通过out隐式对象写入数据相当于将数据插入到JspWriter对象的缓冲区中,
  • 只有调用了ServletResponse.getWriter()方法,缓冲区中的数据才能真正写入到Servlet引擎所提供的缓冲区中。

样例:
image
结果:
image

从图中可以看出,尽管out.println语句位于response.getWriter().println语句之前,但它的输出内容却在后面。

由此可以说明:

  • out对象通过print语句写入数据后,直到整个JSP页面结束,out对象中输入缓冲区的数据(即:first line)才真正写入到Serlvet引擎提供的缓冲区中,
  • 而response.getWriter().println语句则是直接把内容(即:second line)写入Servlet引擎提供的缓冲区中,
  • Servlet引擎按照缓冲区中的数据存放顺序输出内容。

pageContext对象

在JSP页面中,要想获取JSP的另外八个隐式对象,可以使用pageContext对象。

pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。
获取隐式对象的方法:
image

pageContext对象还提供了存储数据的功能
pageContext对象存储数据是通过操作属性来实现的

操作属性的方法
image

  • 参数name指定的是属性名称,
  • 参数scope指定的是属性的作用范围。

作用范围有四个值:

  1. pageContext.PAGE_SCOPE:表示页面范围
  2. pageContext.REQUEST_SCOPE:表示请求范围
  3. pageContext.SESSION_SCOPE:表示会话范围
  4. pageContext.APPLICATION_SCOPE:表示Web应用程序范围

注意
当使用findAttribute()方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回null。

exception对象

在JSP页面中,经常需要处理一些异常信息,这时,可以通过exception对象来实现。exception对象是java.lang.Exception类的实例对象,它用于封装JSP中抛出的异常信息。

注意
page指令中指定了属性<%@ page isErrorPage=”true”%>的页面。
exception对象只有在错误处理页面才可以使用,



这篇关于Java Web __ JSP技术的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程