JSP小整理(一)

来源:互联网 发布:js怎么传值给jsp 编辑:程序博客网 时间:2024/06/06 03:37

1、概述

(1)JSP(Java Server Pages)是一种动态网页开发技术,响应客户端请求,动态生成 HTML、XML 或其他格式文档的Web网页。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。且标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。其文件后缀名为 *.jsp 。

(2)JSP运行在服务端,以 Java 语言作为脚本语言,为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。其开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。

(3)JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写。通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

2、优势

(1)JSP程序与CGI程序有着相似的功能,但和CGI程序相比:

性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。

服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。

JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。

JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。

JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台,可以用最简单的方式来实现最复杂的应用。

(2)与ASP相比:JSP动态部分用Java编写,更加强大与易用。第二点就是JSP易于移植到非MS平台上。

(3)与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

(4)与SSI相比:SSI无法使用表单数据、无法进行数据库链接。

(5)与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。

(6)与静态HTML相比:静态HTML不包含动态信息。

3、开发环境

(1)安装Java开发工具JDK

(2)安装Web服务器Tomcat

(3)安装Eclipse

4、工作原理

网络服务器需要一个 JSP 引擎,即一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。

一般情况下,JSP 引擎会检查 JSP 文件对应的 Servlet 是否已经存在,并且检查 JSP 文件的修改日期是否早于 Servlet。如果 JSP 文件的修改日期早于对应的 Servlet,那么容器就可以确定 JSP 文件没有被修改过并且 Servlet 有效。这使得整个流程与其他脚本语言(比如 PHP)相比要高效快捷一些。

JSP 网页是用另一种方式来编写 Servlet,除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待。

(1)浏览器发送一个 HTTP 请求给服务器。

(2)Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。

(3)JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。

(4)JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。

(5)Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。

(6)Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到浏览器中。Web 浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样。

5、生命周期

JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。

(1)编译阶段:

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。

编译的过程包括三个步骤:解析JSP文件。将JSP文件转为servlet(Java源文件)。编译servlet为.class文件。

(2)初始化阶段:

容器载入JSP文件后,会在为请求提供任何服务前,调用jspInit()方法。如果需要执行自定义的JSP初始化任务,重写jspInit()方法即可。

一般来讲程序只初始化一次,通常情况下可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。

(3)执行阶段:

这一阶段描述了JSP生命周期中一切与请求相关的交互行为。

Servlet容器把浏览器的请求和对浏览器的回应封装成HttpServletRequest对象和HttpServletResponse对象,并把这两个对象作为参数传递到jspService()方法中,jspService()方法执行后将HTML内容返回给客户端。

(4)销毁阶段:

在任何时候由于系统资源不足,JSP引擎将以某种不确定的方式将Servlet从内存中移除。

调用并重写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。Servlet实例便被标记加入“垃圾回收处理”。

6、语法

(1)脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。

任何文本、HTML标签、JSP元素必须写在脚本程序的外面。

(2)中文乱码问题:

1)在Eclipse中,JSP文件的中文不能保存

解决办法:单击对话框中的“save as utf-8”

                    或者在JSP文件的page 指令中指明页面编码

2)JSP页面的中文乱码

解决办法:在JSP文件的page 指令中指明页面编码

3)以POST方式传递参数的中文乱码

解决办法:使用request.setCharacterEncoding("UTF-8");设置编码方式

                    或者通过String类的getBytes方法进行编译转换

4)以GET方式传递参数的中文乱码

解决办法:使用request.getQueryString()获取请求字符串,然后解码并分析此字符串,从而得到请求参数

                    或者修改服务器的配置文件,设置URIEncoding编码方式

5)在Eclipse中打开含有中文的文件时显示乱码

解决办法:更改eclipse默认的编码方案

(3)JSP声明语句可以定义一个或多个变量、方法,供后面的Java代码使用,他们都只在当前页面中有效。

在JSP文件中,必须先声明这些变量和方法然后才能使用它们。

生命不会在JSP页面内产生任何输出,它的作用仅限于定义变量和方法。

(4)JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。

由于表达式的值会被转化成String,所以可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

(5)JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。

可以使用4种方式:HTML注释、传统的Java行注释、传统的Java块注释、JSP注释

(6)JSP编译指令用来设置与整个JSP页面相关的属性。

主要有3种:

page(用于定义JSP页面中的全局属性)

include(用于在JSP页面中包含其他文件)

taglib(允许用户使用标签库自定义新的标签)

JSP动作指令用于运行脚本动作。

主要有7种:

jsp:include(用于在请求的处理阶段包含来自一个Servlet或JSP页面的响应)

jsp:forword(将当前JSP正在处理的一些请求转发至其他JSP)

jsp:param(用于设置参数值,它不能单独使用)

jsp:plugin(一个在HTML页面中内嵌Java Applet的便利工具)

jsp:useBean(在JSP页面内创建一个JavaBean实例)

jsp:getProperty(用来读取Bean的属性值,并将其转换成一个字符串,输出到页面上)

jsp:setProperty(用来设置Bean属性的值)

(7)内置对象9个:

request(HttpServletRequest的一个实例,主要用来获取客户端请求的数据,request代表从用户发送过来的请求,通过该对象可以获取客户端用户提交的用户或参数,该对象只有接受用户请求的页面才可以访问)

response(HttpServletResponse的一个实例,主要用来对客户端的请求做出动态响应,向客户端发送响应数据,该对象有页面作用域,在JSP中很少直接用到它,在服务端的Servlet中使用比较多)

session(HttpSession的一个实例,从一个客户打开浏览器并连接到服务器开始,到客户关闭 浏览器断开与服务器的连接结束,这个阶段成为会话。session对象就是用来保存用户的会话信息和会话状态的,在第一个JSP页面被装载时自动创建,完成会话期管理。对于想在整个交互过程中都可以访问的信息,可以选择存放在session对象中)

out(JspWriter的一个实例,动态地向JSP页面输出字符流,从而把动态的内容转换成HTML形式来展示)

page(java.lang.Object的一个实例,指当前JSP页面本身,有点像Java类中的this指针)

application(ServletContext的一个实例,在用户间实现了数据的共享,可存放全局变量,服务器的启动和关闭决定了该对象的生命周期,提供了对Web应用程序配置的访问,包括上下文初始化参数)

config(ServletConfig的一个实例,使用该对象访问JSP Servlet的配置)

pageContext(PageContext的一个实例,提供了对JSP页面内所有对象及名称空间的访问,相当于页面中所有功能的集大成者)

exception(java.lang.Throwable的一个实例,当一个页面在运行过程中发生例外时,就会产生该对象,若一个JSP页面要应用该对象,需在page指令中把isErrorPage属性设置为true,在JSP的异常处理机制中,一个异常处理页面可以处理多个JSP页面脚本部分的异常)













原创粉丝点击