jsp的用法

来源:互联网 发布:网络与internet连不上 编辑:程序博客网 时间:2024/06/05 07:54

 一、jsp的概念

jsp(Java Server Pages)是一种动态网页技术,使用JSP标签可在HTML网页中插入Java代码。标签通常以<%开头,以%>结束。

jsp的本质就是一个servlet,jsp引擎将jsp转化为servlet即java代码,在编译成字节码文件即class文件(可执行文件),然后执行字节码文件。(放在Tomcat中的work文件夹中)

二、jsp功能(可以做什么)

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。与html标签混合使用。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

jsp页面可以显示从数据库获取的结果,通过表单获取用户的输入数据。

三、jsp的语法

1、jsp的传统语法:采用的是<% //程序代码 %>   与标签语言有所不同,标准的标签语言只有<>(尖括号),没有%百分号

2、JSTL(JSP Standard Tag Library,JSP标准标签库):符合标准的标签语言(去除了jsp的百分号%),用来代替jsp。

3、JSF(JavaServer Faces):是一种用于构建 Web 应用程序的新标准 Java 框架,用来代替JSTL(但是推广的不是很好)。

四、jsp的传统语法

1、脚本程序

格式:<%代码片段 %>

脚本程序可以包含任意量的Java语句、变量、方法或表达式

注意:对于任何文本内容、HTML标签、jsp元素必须写在脚本程序的外面

2、jsp声明

格式:<%! declaration;[ declaration;]+... %> //这样声明的变量是成员变量

<% 变量 %> :这样声明的变量是局部变量,在service()方法内部,这样的话就不能声明方法了。 要区分开

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

3、 jsp表达式

格式:<%=表达式 %> //其中百分号与等号没有空格

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

注意:不能使用分号来结束表达式。

4、jsp注释

<%-- 注释 --%>JSP注释,注释内容不会被发送至浏览器甚至不会被编译<!-- 注释 -->HTML注释,通过浏览器查看网页源代码时可以看见注释内容

5、jsp指令元素(指令:directive)(这是编译指令)

JSP指令用来设置与整个JSP页面相关的属性。

<%@ page ... %>定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等(指明与jsp容器的沟通方式)<%@ include ... %>包含其他文件(不能传参数)<%@ taglib ... %>引入标签库的定义,可以是自定义标签(1)page指令的属性

contentType指定当前JSP页面的MIME类型和字符编码errorPage指定当JSP页面发生异常时需要转向的错误处理页面isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面import导入要使用的Java类(2)include指令的属性

<%@ include file="文件相对 url 地址" %>   //被包含的文件可以是JSP文件、HTML文件或文本文件。
(3)taglib指令的属性

<%@ taglib uri="uri" prefix="prefixOfTag" %>

uri属性确定标签库的位置,prefix属性指定标签库的前缀。


6、jsp动作元素(这是运行期间指令)

JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。

利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。

jsp:include(常用)用于在当前页面中包含静态或动态资源(可以传参数)jsp:useBean(常用)寻找和初始化一个JavaBean组件jsp:setProperty设置 JavaBean组件的值jsp:getProperty将 JavaBean组件的值插入到 output中jsp:forward(常用)从一个JSP文件向另一个文件传递一个包含用户请求的request对象jsp:plugin (常用)用于在生成的HTML页面中包含Applet和JavaBean对象jsp:element动态创建一个XML元素jsp:attribute定义动态创建的XML元素的属性jsp:body定义动态创建的XML元素的主体jsp:text用于封装模板数据

常见的属性

所有的动作要素都有两个属性:id属性和scope属性。

  • id属性:

    id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

  • scope属性:

    该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。

(1)、jsp:include动作元素可以带参数  (属性是page ,不是file) 
  • <jsp:includepage="date.jsp"flush="true">

  • <jsp:param name="ParamName" value="paramValue"/>

  • </jsp:include>

(2)、<jsp:forward> 动作元素
<jsp:forward page="相对 URL 地址" />
<jsp:forward>与response.sendRedirect的区别

<jsp:forward>的页面跳转是服务器端的跳转,使用的是同一个request

response.sendRedirect的页面跳转是客户端的跳转,使用的是不同的request

(3)jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。

这个功能非常有用,因为它使得我们可以发挥 Java 组件复用的优势。

参数说明:
id:对象实例名称
scope:Bean作用的范围,默认为page,对整个jsp页面有效。
class:Bean类名称
type:Bean实例类型,可以是本类或者其父类或者实现的接口,默认是本类

scope的参数
application:有效范围是整个应用程序。即对整个网站都有效。
page:仅涵盖使用javaBean的页面
session:有效范围在用户整个连接过程中(整个会话阶段均有效)
request:仅限于使用javaBean的请求。


7、jsp隐含对象

jsp隐含对象可以直接使用。

requestHttpServletRequest类的实例responseHttpServletResponse类的实例outPrintWriter类的实例,用于把结果输出至网页上sessionHttpSession类的实例applicationServletContext类的实例,与应用上下文有关configServletConfig类的实例pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问page类似于Java类中的this关键字ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象

五、jsp EL(jsp表达式语言)

EL可以用来访问存储在JavaBean中的数据,非常的方便。

JSP EL允许您指定一个表达式来表示属性值。一个简单的表达式语法如下:

${expr}
在JSP EL中通用的操作符是 . 和 {} 。这两个操作符允许您通过内嵌的JSP对象(jsp隐含对象)访问各种各样的JavaBean属性。

1、停止使用EL表达式,需要使用page指令将isELIgnored属性值设为true:

<%@ page isELIgnored ="true|false" %>
2、param和paramValues对象

param和paramValues对象用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。

举例来说,访问一个名为order的参数,可以这样使用表达式:${param.order},或者${param["order"]}。

param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。


3、JSP EL中的函数

JSP EL允许您在表达式中使用函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下:

${ns:func(param1, param2, ...)}

ns指的是命名空间(namespace),func指的是函数的名称,param1指的是第一个参数,param2指的是第二个参数,以此类推。

要使用任何标签库中的函数,您需要将这些库安装在服务器中,然后使用<taglib>标签在JSP文件中包含这些库。


getAttribute和getParameter的区别

  getAttribute表示从request范围取得设置的属性,那么我们必须先setAttribute设置属性,才能获得属性,设置与取得的为string类型。HttpServletRequest类既有getAttribute()方法也有getParameter方法,这两个方法有什么区别呢?

   1、getAttribute是返回对象,getParameter返回字符串。

   2、request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。

  3、与getAttribute()方法对应的有setAttribute()方法,但是没有雨getParameter()相对的setParameter().

  4、request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。


1、getAttribute()方法(返回的是对象)

  它是一个函数。它只有一个参数。那个参数就是我们使用getElementById()或者使用getElementByTagName()方法取出来的节点元素的属性名称。

2、getParameter()方法(返回的是String类型)

  getParameter的中文意思就是获取参数,那么这个方法的作用就是用来获取参数的,它得到的是String类型。或者是用于读取提交的表单中的值,或是是某个表单提交过去的数据。getParameter()是获取POST/GET传递的参数值;它用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。






原创粉丝点击