从入门到入土Java EE(五)——JSP与HTML、JAVASE知识接驳与技术结合的认知实践归纳总结

135 阅读6分钟

JSP教程及具体参考

HTML与JSP的关系:

生成HTML响应页面般有两种方式。

第一种是使用 Servlet 技术来生成动态页面,这种技术直接使用Java输出代码输出HTML标签,其缺点是既不适用于页面复杂的情形,也不利于页面的修改。

第二种技术就是本章要讲述的JSP,它使用Java代码作为服务器端的脚本,可以使用Dreamweaver等网页制作工具来编写,直观方便。另外,部署时直接将JSP文件放在Web应用的目录下即可,不需要编译,也不需要额外的配置,比编写Servlet方便。

JSP简介:

JSP简介

JSP全称为Java Sever Pages,是一 种 动态 网页开发技术。其特点是使用JSP标签,在H TML网页中插入Java **代码。 **J **SP标签以“ ****< **%”开始并以"%>”结束 ,通常,称这样的格式为小脚本(Scriptlet)。

使用JSP技术开发动态Web项目是目前流行的选择。JSP 以Java技术为基础,因此同样具有“一次编写,到处运行”的优点,同一个JSP应用可以运行在不同的平台上,并且还有很多开源项目可以集成,丰富Web应用。

JSP是一种文本文件,最终会由容器编译为Java Servlet。 JSP主要用于实现动态Web应用程序的用户界面部分。网页开发人员通过HTML、XHTML、XML以及嵌入JSP操作和命令来编写JSP。

JSP标签可以实现多种功能,比如访问数据库、记录用户填写的表单信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源以获取数据,然后动态地创建网页。

下面是我建立的一个JSP页面:

JSP的工作原理

JSP页面是由JSP容器进行管理的。JSP 页面的生命周期包括 转换阶段 执行阶段

转换阶段主要完成将JSP页面转换为Servlet的过程,一般是在容器接收和处理客户端对JSP页面的请求时完成,也可以在部署JSP页面时完成。容器最终都会为每个JSP页面创建对应的Servlet。

执行阶段也称为请求处理阶段。容器调用虚拟机,执行编译生成的Servlet字节码,来完成对HTTP请求和响应的处理。

当客户端浏览器请求一个JSP文件 ** ** index.jsp ** **时,如果容器决定转换,则会将该JSP文件转换为Java源文件(如index _jsp.java **) **** **在转换过程中,如果发现JSP文件有语法错误,将中断转换过程,并向服务端和客户端输出错信息:如果转换成功容器就会将转换后的 Java 源文件编译成相应的 .calss 文件 ** **如index_jsp.class **), **然后加载该.class文件到内存。

在执行阶段,容器创建该Servlet的实例,并执行该实例的jsplnit **() **方法。 每个Serv let 只创建一个实例,因此Servlet是单实例的,在Servlet的生命周期中只执行一次jsplnit **() ****方法。然后,容器会创建并启动一个新的线程,新线程调用实例的jspService( ****) **方法。 对于每一个请求, 容器都会创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则容器会创建多个线程,每个线程对应一个客户端请求。客户端浏览器在调用JSP文件时,容器会将浏览器的请求和响应封装为HttpServletRequest和HttpServletResponse对象,然后调用Servlet实例的jspService()方法,并将这两个对象作为jspService **() **方法的输入参数进行传递。jspService **() **方法执行后 ** **会将动态生成的HTML内容返回给客户端。

 

JSP的基本元素

JSP由JSP元素和模板数据组成。JSP 元素包括指令元素、动作元素和脚本元素。模板数据指不需要容器处理、直接发送给客户端的非JSP元素的其他内容,如HTML。

指令元素

指令元素用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。JSP有3种指令: page 指令、include 指令和taglib指令。

(1) page 指令

page指令为容器提供当前页面的使用说明,如脚本语言、error 页面、缓存需求等。一个JSP页面可以包含多个page指令。

Page指令的语法如下:

<%@ page attribute= *"value" *%>

Page指令的属性如下:

①language 属性

定义JSP页面所用的脚本语言,其属性值只有一个: java,表示脚本的语法必须符合Java语言规范。

由于language属性的默认值就是唯一值 java,因此,可以不指定该属性。

②info属性

info属性定义JSP页面的描述信息,属性值可以是任意字符串,在JSP小脚本中可以通过调用Servlet.getServletInfo()方法获取info属性值。

③import 属性

import属性用于在JSP页面中引入Java类定义,其作用与Java语言的import语句相同。该属性可以在page指令中多次出现。

一个import属性可以导入中间用逗号分隔的多个Java类定义,例如:

<%@ pageimport="java.util.*,java.text.*"%>

 

(2) include 指令

在Web开发中,经常会遇到很多JSP页面都需要显示的内容,如果在每个JSP页面都编写这部分内容,会造成很大的重复代码冗余。如果这些内容需要修改,大量页面都需要同步修改,会造成重复工作量过大。因此,通常将公共的内容抽取出来,放到单独的文件中,然后使用包含机制,将公共部分插入到JSP页面。这样,如果要修改公共部分,只需要修改单独文件即可,方便维护。

JSP使用include指令在转换阶段包含指定的源文件JISP编译器在遇到include指令时,就读入要包含的文件,将包含内容与JSP页面合成为一个JSP文件,然后转换为Servlet。

 

(3) taglib 指令

在开发JSP页面时,经常遇到需要判断是否显示某些内容,循环显示集合对象中的元素,如果使用 Java小脚本程序实现,就会造成JSP页面复杂,难以维护。JSP提供扩展标委的机制,开发人员可以开发自定义标签,并将多个相关的自定义标签组成标签库,页面设计人员通过 taglib 指令来使用标签库中的自定义标签。

JSP标签数据库

JSP HTTP 状态码

关于更多JSP的知识可以参考JSP菜鸟教程:www.runoob.com/jsp/jsp-tut…

一起学习,一起进步 -.- ,如有错误,可以发评论