热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JSP相关知识

1、JSP运行机制JSP容器管理JSP页面生命周期的两个阶段:转换阶段(translationphase)和执行阶段(executionphase)。当有一个对JSP页面的客户请求

1、 JSP运行机制

 技术分享

JSP容器管理JSP页面生命周期的两个阶段:转换阶段(translation phase)和执行阶段(execution phase)。当有一个对JSP页面的客户请求到来时,JSP容器检验JSP页面的语法是否正确,将JSP页面转换为Servlet源文件,然后调用javac工具类编译Servlet源文件生成字节码文件,这一阶段是转换阶段。接下来,Servlet容器加载转换后的Servlet类,实例化一个对象处理客户端的请求,在请求处理完成后,响应对象被JSP容器接收,容器将HTML格式的响应信息发送到客户端,这一阶段是执行阶段。

如果只想编译JSP页面而不是执行它,那么可以在对JSP页面的请求中附加jsp_precompile参数,并将该参数设为true。例如:http://localhost:8080/ch/hello.jsp?jsp_precompile=true,这将编译hello.jsp页面,而不会执行它,也就是说,在客户端你不会看到hello.jsp的输出。所有以jsp_开头的请求参数都是被保留的,JSP页面应该忽略以jsp_开头的请求参数。

在tomcat中jsp页面会被编译到%CATALINA_HOME%\work\Catalina\localhost目录中。

2、 JSP页面标签

如果没有JSP标签,web页面仅仅是普通的HTML。JSP标签能够将java代码插入到web页面中以简化数据的处理和显示。

JSP标签有两种基本类型:脚本标签和JSP保留关键字标签。脚本标签为用户提供了使用任何种类java代码的自由,JSP的保留关键字标签则是JSP库所提供的特殊的语言特征。

3、 JSP基本指令和动作

JSP基本指令

Jsp命令指令用来设置与整个jsp页面相关的属性,它并不直接产生任何可见的输出,而只是告诉引擎如何处理其余jsp页面。其一般语法形式为:<%@ 指令名称 属性=“值”%>。

三种命令指令分别是page、include、taglib

一、page指令

功能:设定整个jsp网页的静态属性。

语法:<%@ page 标签元素=“值”%>,比如:<% page language=”java” %>

标签元素:language、import、contentType、session、errorPage、isErrorPage等等。

1、  language

language=”language” 指定JSP Container要用什么语言来编译JSP网页。目前只可以使用java语言,不过不排除增加其他语言。默认值为Java。比如:<%@page language=”java”%>

2、  import

import=”importList” 定义此JSP页面可以使用哪些Java API。用逗号分隔列出一个或多个全值类名。以下是自动包含的,不必被指出:java.lang.*;java.servlet.*;java.servlet.jsp.*;java.servlet.http.*; 比如<%@page import=”java.util.*”%>

3、  contentType

cOntentType=”ctinfo” 表示将生成servlet中使用的MIME类型和可选字符解码。比如<%@ page cOntentType=”text/html;charset=GBK”%>

4、  session

session=”true|false” 指明JSP页面是否需要一个HTTP会话,如果为true,那么产生的servlet将包含创建一个HTTP会话(或访问一个HTTP会话)的代码。缺省为true。

5、  errorPage

errorPage=”error_url” 表示如果发生异常错误,网页会被重新指向一个URL页面。错误页面必须在其page指令元素中指定isErrorPage=”true”

6、  isErrorPage

isErrorPage=”true|false” 如果此页面被用作处理异常错误的页面,则为true。在这种情况下,页面可被指定为另一页面page指令元素中errorPage属性的取值。指定此属性为true将使exception隐含变量对此页面可用。缺省值为false。

二、include指令

功能:include指令用来向当前页面插入一个静态文件的内容。这个文件可以是JSP、HTML、文本或是java程序。

语法:<%@ include file=”filename” %> 比如<%@ include file=”111.txt” %>

标签元素:file

注意:include指令元素和行为元素主要有两个方面的不同点。

1、  include指令是静态包含,执行时间是在编译阶段执行,引入的内容为静态文要,在编译成servlet时就和包含者融合到一起。所以file不能是一个变量,也不能在file后接任何参数。

2、  include行为是动态包含,执行时间是在请求阶段执行,引入的内容在执行页面是动态生成再包含到页面中。

3、  <%@ include file=”filename” %> 如果直接以文件名开头,指的是正在使用的JSP文件所在的路径,如果以/开头,指的是正在使用的JSP文件上下的路径关系。

三、taglib指令

功能:使用标签库定义新的自定义标签,在JSP页面中启用定制行为。

当页面引用了用户自定义标签时,taglib指令用于引用自定义标签库,并指定标签的前缀。

语法:<%@ taglib uri=”URIToTagLibrary” prefix=”tagPrefix”%>

如<%@ taglib uri=http://www.jspcentral.com/tags prefix=”JAXP”%>
标签元素:uri、Prefixpage指令元素的属性

Uri=”tagLibraryUri” 标签库描述器的URI,主要是说是tagLibrary的存放位置。

Prefix=”tagPrefix” 用于标识在页面后面部分使用定制标签的唯一前缀。

         JSP基本动作

         JSP中的动作元素包括:include、forwar、useBean、getProperty、setProperty、plugin、param。

1、  include动作

标签用来包含一个静态或者动态的文件。

2、  forward动作

标签用来重定向一个静态HTML、jsp文件或者是一个程序段。

3、  useBean动作

标签用来在JSP页面中创建一个Bean实例,并指定其名称和作用范围。

4、  getProperty动作

标签用来获取Bean的属性值(在此之前必须用创建它),并将之转化为一个字符串,然后将其插入到输出的页面中。

5、  setProperty动作

标签表示用来设置Bean中的属性值。

6、  plugin动作

标签用于在浏览器中播放或显示一个对象(典型为applet和Bean),这种显示需要在浏览器上安装Java插件。当JSP文件被编译后送往浏览器时,元素将会根据浏览器的版本替换成或者元素。

7、  param动作

标签用来传递参数,必须与forward、include及plugin动作配合使用。

4、 JSP内置对象

1、request        请求对象        类型ServletRequest     作用域request

2、response       相应对象        类型ServletResponse    作用域Page

3、pageContext    页面上下文对象  类型PageContext       作用域Page

4、session         会话对象       类型HttpSession        作用域Session

5、application      应用程序对象   类型ServletContext      作用域Application

6、out            输出对象       类型JspWriter           作用域Page

7、config          配置对象       类型ServletConfig        作用域Page

8、page           页面对象       类型Object             作用域Page

9、exception       例外对象       类型Throwable          作用域Page

application作用域就是服务器启动到关闭的整段时间,在这个作用域内设置的信息可以被所有应用程序使用。application作用域上的信息传递是通过ServletContext实现的.

session作用域比较容易理解,同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现,

 一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。Servlet之间的信息共享是通过HttpServletRequest接口的两个方法  来实现的。

page对象的作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。对page对象的引用通常存储在pageContext对象中。

JSP相关知识


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
心若繁花花满地
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有