动态网页基础之JSP

JSP开发环境的配置运行

(一)JDK安装与配置

1.安装JDK

运行下载的JDK软件包,可安装SDK,在安装过程中可以设置安装路径及选择组件,系统默认的安装路径为C:\ jdk1.5(当然也可以自己设定),默认的组件选择是全部安装。

2.JDK环境变量的配置

第一步:进入系统属性选择高级属性。

第二步: 进入环境变量界面。

第三步: 添加环境变量值。

第四步:添加PATH路径 C:\jdk1.5\bin(即JDK安装目录下的bin目录)

(二)Tomcat安装与配置

1.安装Tomcat

运行下载的Tomcat软件包,可安装SDK,在安装过程中可以设置安装路径及选择组件,安装路径为C:\Tomcat5,默认的组件选择是全部安装。

2.Tomcat环境变量的配置

第一步:进入系统属性选择高级属性。

第二步:进入环境变量界面。

第三步:添加环境变量值。

第四步:添加PATH路径 C:\Tomcat5.0\bin

(三)Eclipse的安装与配置

1.安装Eclipse

先解压eclipse-SDK-3.2.1-win32.zip文件,然后运行MyEclipseEnterpriseWorkbenchInstaller_5.0.1GA_E3.2.exe软件。并选择安装路径,当安装提示要选择Eclipse SDK时,选择已经解压好的eclipse文件目录,然后照提示完成安装。

2.Eclipse的环境配置

先运行MyEclipse 5.0GA软件,第一次运行时需要建立一个工程文件目录,这里根据个人习惯自行建立。进入Eclipse界面后:
第一步:选择windows菜单选择Preferences项。

第二步:进入Preferences界面在type filter text中选择MyEclipse再选Application Server再选择Tomcat 5。后面操作如下图,分别选择Tomcat的安装路径,并选择Enable激活。

第三步:配置JDK。点开Tomcat,选择JDK。并点add。

第四步:添加JDK。在“JRE name:”写上JRE的名称(可以任意命名),在“JRE home directory”栏点browse选择JDK的安装路径。然后点确定,最后点击完成。

第五步:测试安装是否成功。检测是否能启动Tomcat。

(四)在Eclipse上建立一个JSP

1.建立一个新的工程文件,名为exam1。




2.建立一个JSP,名为First.jsp


3. 编写JSP程序。

在First.jsp中编写:

1
2
3
<body>
hello! This is my the First JSP page. <br>
</body>

(五)部署JSP工程文件

1.进入开部署界面


点击

2.部署:在Project中选择要部署的工程文件,再点add。



(六)启动Tomcat服务器

(七)浏览JSP

打开浏览起,在地址栏输入:http://localhost:8080/exam1/First.jsp

JSP Servlet技术

Web应用程序有严格定义的目录结构,它需要一个称为部署描述文件的文件web.xml来配置。对应用程序的每个Servlet,可以在web.xml中定义若干个初始化参数,然后通过ServletConfig对象获取这些参数。

ServletContext对象表示该应用程序的环境,通过该对象可以获得应用程序范围的初始化参数、容器版本信息、资源的URL、在其中存放共享数据以及登录日志等。

Servlet事件监听

在Web应用程序中,事件的处理也是通过事件监听器接口处理的。Web应用事件处理的原理为:当Web应用中某些状态改变时,Servlet容器就产生某种事件,如ServletContext对象初始化时会产生ServletContextEvent事件,此时Servlet容器就会从注册的事件监听器中寻找处理该事件的监听器对象,并执行相应的代码。

在Servlet 2.4规范中共定义了6种事件类型和8个事件监听器接口,它们可以处理三种对象上的事件,如下表所示:

监听对象监听器接口监听事件
ServletContextServletContextListenerServletContextEvent
ServletContextAttributeListenerServletContextAttributeEvent
HttpSessionHttpSessionListenerHttpSessionEvent
HttpSessionActivationListener
HttpSessionAttributeListenerHttpSessionBindingEvent
HttpSessionBindingListener
ServletRequestServletRequestListenerServletRequestEvent
ServletRequestAttributeListenerServletRequestAttributeEvent

Servlet过滤器的使用

过滤器是web服务器上的组件,它们对客户和资源之间的请求和响应进行过滤。

过滤器的工作原理是:当servlet容器接收到对某个资源的请求,它要检查是否有过滤器与之关联。如果有过滤器与该资源关联,servlet容器将把该请求发送给过滤器。在过滤器处理完请求后,它将做下面3件事:

  1. 产生响应并将其返回给客户;
  2. 如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;
  3. 将请求传递给不同的资源。

当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。
过滤器API主要包括:Filter、FilterConfig和FilterChain接口。

JSP 会话管理

HTTP协议是无状态的协议。在很多情况下,Web服务器必须能够跟踪客户的状态。比如,对于一个购物网站,在一个时刻可能有多个客户购物,Web服务器必须能够区分不同的客户。一般情况下,Web服务器为每个客户配置了虚拟的购物车(ShoppingCart)。当某个客户请求将一个商品放入购物车时,Web服务器必须根据发出请求的客户的身份,找到该客户的购物车,然后把商品放入其中。

Web服务器跟踪客户的状态通常有4种方法:
(1)使用HttpSession对象管理会话;
(2)使用持久的Cookie对象;
(3)使用URL重写机制;
(4)使用隐藏的表单域。

JSP基本语法与页面指令

JSP语法元素有<% %>、<%@ %>、<%= %>和<%! %>四种,分别是运行Java代码、jsp的初始化以及导入、输出java表达式的值和java初始化代码

JSP有三个指令元素:page、include和taglib。这些指令元素是针对JSP引擎的,并不会产生任何看得见的输出。它们都包含在<%@%>标签内。主要学会使用page指令。

<%@ page %>指令作用于整个JSP页面,包括静态包含的页面,但不包括动态包含的页面。可以在一个页面中包含多个<%@ page %>指令,但其属性除import外只能在整个页面中出现一次。<%@ page %>指令可以放在页面的任何位置,但为了JSP程序的可读性,一般将<%@ page %>指令放在页面的前面。<%@ page %>主要包含以下几种基本属性:1)import、引用类文件;2)language,指定脚本语言;3)contentType,指定jsp编码方式;

JSP隐含对象与作用域

在JSP页面的转换阶段(JSP页面转换后定义的类名为:implicit_jsp,该类继承了org.apache.jasper.runtime.HttpJspBase),JSP引擎在_jspService()方法中声明并初始化了9个隐含对象,它们主要是为了方便在JSP页面对这些对象的访问。这些隐含对象包括:application、session、request、response、out、page、pageContext、config、exception。

在上述9个隐含对象中,有下面4个作用域对象,它们是:application、session、request、pageContext。它们主要用来在不同作用域中共享数据。

一)request对象

request对象是javax.servlet.http.HttpServletRequest对象的一个实例。每次客户端请求一个页面时,JSP引擎都会创建一个新的对象来表示那个请求。
request对象提供方法来获取HTTP头信息,包括表单数据,cookies,HTTP方法等。

二)response对象

response对象是javax.servlet.http.HttpServletResponse对象的一个实例。当服务器创建request对象时,它也创建了代表客户端响应的对象。
response对象还定义了接口,可以处理创建的新的HTTP 头。通过这个对象JSP程序员可以添加新的cookies或日期stamps,HTTP状态码等。

三)out对象

out隐式对象是javax.servlet.jsp. JspWriter对象的一个实例,用于在响应中发送内容,在Servlet中可以通过pageContext.getOut()来获取该对象。
最初的JspWriter对象被实例化不同程度地取决于页面是否缓冲。通过使用页面指令的buffered='false'属性,缓冲可以很容易地关掉。
JspWriter对象包含大部分与java.io.PrintWriter类相同的方法。然而,JspWriter对象有一些额外的方法用来处理缓冲。与PrintWriter对象不同,JspWriter抛出IOException。

四)session对象

session对象是javax.servlet.http.HttpSession的一个实例,且行为与Java Servlet中的session对象完全相同,在Servlet中可以通过pageContext.getSession()来获取该对象。
session对象是用来跟踪客户端请求之间的客户端会话。

五)application对象

application对象是用于生成的Servlet的ServletContext对象的直接包装器,且实际上是javax.servlet.ServletContext对象的一个实例,在Servlet中可以通过pageContext.getServletContext()来获取该对象。
这个对象是JSP页面整个生命周期的一个代表。当初始化JSP页面时,这个对象被创建,当JSP页面由jspDestroy()方法删除时,该对象也会被删除。
通过为application添加属性,可以确保生成web应用程序的所有JSP文件可以访问它。

六)config对象

config对象是javax.servlet.ServletConfig的一个实例,且是用于生成的servlet的ServletConfig对象的直接包装器,在Servlet中可以通过pageContext.getServletConfig()来获取该对象。
该对象允许JSP程序员访问Servlet或JSP引擎初始化参数,如路径或文件位置等。
下面的config方法是唯一一个可能曾经使用的方法,且它的使用很简单:config.getServletName();
这返回servlet的名称,该名称是包含在定义在web-inf\web.xml文件中元素中的字符串。

七)pageContext对象

pageContext对象是javax.servlet.jsp.PageContext对象的一个实例。pageContext对象用于表示整个JSP页面。
这个对象是作为一种手段来访问页面信息的,同时避免了大部分的实现细节。
这个对象为每个请求存储了请求引用和响应对象。application,config,session,out对象是通过访问该对象的属性派生出来的。
pageContext对象还包含发布到JSP页面的指令信息,包括缓冲信息,errorPageURL,页面范围。
pageContext类定义了几个领域,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,和APPLICATION_SCOPE,它确定了这四个范围。它还支持40多个方法,大约一半的方法是继承了javax.servlet.jsp.JspContext类的。
重要方法之一是removeAttribute(),该方法接受一个或两个参数。例如,pageContext.removeAttribute(“attrName”)从全部范围中删除属性,而下面的代码仅从页面范围中删除它:pageContext.removeAttribute("attrName", PAGE_SCOPE);

八)page对象

这个对象是一个页面实例的真实引用。它可以被认为是一个对象,代表了整个JSP页面。page对象实际上是this对象的一个直接的同义词。

九)exception对象

exception对象是一个包装器,包含来自先前页面的异常抛出。它通常用于为错误条件生成一个适当的响应。

JSP组件重用与JavaBean

通过重用Web组件可以提高应用程序开发的效率和其可维护性。在JSP中可以通过包含机制和JavaBean实现Web组件的重用。

包含分为静态包含和动态包含。静态包含通过include指令实现,动态包含通过标准动作jsp:include实现。

在JSP页面中使用JavaBean是最重要的组件重用技术,这主要是通过下面3个标准动作实现的:
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>

表达式语言

表达式语言(EL)是JSP 2.0新增的功能。它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式(<%=和%>)。EL的目标是使动态网页的设计、开发和维护更加容易。JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。

EL的特点是访问数据可以使用点(.)运算符或方括号([])运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。

EL 表达式结果
${1}1
${1 + 2}3
${1.2 + 2.3}3.5
${1.2E4 + 1.4}12001.4
${-4 - 2}-6
${21 * 2}42
${3/4}0.75
${3 div 4}0.75
${3/0}Infinity
${10%4}2
${10 mod 4}2
${(1==2) ? 3 : 4}4

JSTL与标签文件

JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web应用程序的常用功能而开发的标签库集合。功能包括基本输入输出、流程控制、XML文件解析、数据库查询、国际化和文本格式化等。JSTL主要由下面几个库组成:核心标签库;XML标签库;格式化/国际化标签库;数据库标签库;函数标签库。

这些库都很有用,但我们这里只学习核心库的使用。核心库的标签又可以分成四类,如下表所示:

JSTL标签类别JSTL标签标签说明
通用目的<c:out>在页面中显示内容
<c:catch>捕获异常
变量支持<c:set>设置一个EL变量值
<c:remove>清除一个EL变量
流程控制<c:if>根据一个属性等于一个值改变处理
<c:choose>根据一个属性等于一组值改变处理
<c:forEach>对集合中的每个对象作重复处理
<c:forTokens>对给定一个文本域中的每个子串执行处理
URL处理<c:url>重写URL并对它们的参数编码
<c:import>访问web应用程序外部的内容
<c:redirect>告诉客户浏览器访问另一个URL

标签文件(tag file)也是JSP 2.0新增的功能,它的目的是使JSP页面开发人员仅使用JSP语法就能开发标签库而无须编写Java程序。所谓标签文件就是直接使用JSP语法编写的标签。标签文件的扩展名一般为.tag或.tagx,如果标签文件包含其他完整的或片段的标签文件,JSP 2.0建议其扩展名为.tagf。
在JSP页面中使用标签文件,需要在taglib动作中使用tagdir属性指定标签文件所在的目录,例如:
<%@ taglib prefix="mytag" tagdir="/WEB-INF/tags"%>

JSTL的安装
要在JSP页面中使用JSTL标签,首先必须安装JSTL库。可以到Jakarta网站下载最新版本的JSTL。
如果安装了Tomcat,可以在示例应用程序中获得JSTL,它位于\webapps\ examples\WEB-INF\lib目录中,共有两个文件:jstl.jar和standard.jar。将这两个文件复制到你的Web应用程序的WEB-INF\lib目录中,就安装了JSTL。

使用JSTL我们不用建立标签库描述文件,因为该文件已经包含在standard.jar文件中了,JSP容器可以找到该文件。另外,也可以不用配置web.xml文件,因为JSP容器使用隐含映射的方式可以将标准的URI映射到适当的标签库上。

-------------本文结束感谢您的阅读-------------
亲,可以打赏点吗?.