JSP教程及具体参考
HTML与JSP的关系:
生成HTML响应页面般有两种方式。
第一种是使用 Servlet 技术来生成动态页面,这种技术直接使用Java输出代码输出HTML标签,其缺点是既不适用于页面复杂的情形,也不利于页面的修改。
第二种技术就是本章要讲述的JSP,它使用Java代码作为服务器端的脚本,可以使用Dreamweaver等网页制作工具来编写,直观方便。另外,部署时直接将JSP文件放在Web应用的目录下即可,不需要编译,也不需要额外的配置,比编写Servlet方便。
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…
一起学习,一起进步 -.- ,如有错误,可以发评论