jsp基础知识详解 - 公司荣誉 - 正定县枫林商贸有限公司
现在的位置: 主页 > 公司荣誉 > 文章正文
jsp基础知识详解
作者:正定县枫林商贸有限公司 来源:www.hbflsm.com 发布时间:2017-09-04 13:28:45
jsp基础知识详解

JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。

JSP这门技术的最大的特点在于,写jsp就像在写html,但:

它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。

相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。

不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。

其原因为,程序的数据通常要美化后再输出:

让jsp既用Java代码产生动态数据,又做美化会导致页面难以维护。

让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。

因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。

Jsp的运行原理:

目标:

Web服务器是如何调用并执行一个jsp页面的?

Jsp页面中的html排版标签是如何被发送到客户端的?

Jsp页面中的java代码服务器是如何执行的?

Web服务器在调用jsp时,会给jsp提供一些什么java对象?

思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?

其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:

以下是MyJsp.jsp页面的内容:

JSP相关技术详解(自己整理,方便复习,陆续更新...) JSP页面工作原理

1、JSP文件必须在JSP服务器内运行

2、JSP文件必须生成Servlet才能执行

3、每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet

4、JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面

JSP注释

1、HTML注释

2、JSP注释<%----%>

HTML的注释可以通过源代码查看到,但JSP的注释是无法通过源代码查看到的。这表明JSP注释不会被发送到客户端。

JSP声明

在JSP声明中声明方法看起来很特别,似乎没有类,只有方法的定义,方法似乎可以脱离类独立存在。实际上,JSP声明将会转换成Servlet的成员变量或成员方法,因此JSP声明依然符合Java语法。由于JSP声明语法定义的变量和方法对应于Servlet的成员变量和方法,所以JSP声明部分定义的变量和方法可以使用private、public等访问修饰符修饰,也可使用static修饰,将其变成类属性和类方法。但不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应Servlet变成抽象类,从而导致无法实例化。

JSP脚本

JSP脚本将转换成Servlet里_jspService方法的可执行性代码。这意味着在JSP小脚本部

分也可以声明变量,但在JSP脚本部分声明的变量是局部变量,将不能使用private等访问控制符修饰,也不能使用static修饰。

实际上不仅JSP小脚本部分会转换成_jspService方法里的可执行性代码,JSP页面里的所有静态内容都将由_jspService方法里输出语句来输出,这就是JSP脚本可以控制JSP页面中静态内容的原因,由于JSP脚本将转换成_jspService方法里的可执行性代码,而Java语法不允许在方法里定义方法,所以JSP脚本里不能定义方法。

JSP的三个编译指令

a)Page:该指令是针对当前页面的指令

b)Include:用于指定包含另一个页面

c)Taglib:用于定义和访问自定义标签

静态包含意义:包含页面在编译时将完全包含了被包含页面的代码。

JSP的7个动作指令

1、jsp:forward指令

a)执行forward指令时,用户请求的地址依然没有发生改变,但页面内容却完全变为被forward目标页的内容

b)执行forward指令转发请求时,客户端请求参数不会丢失

2、include指令

a)Include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入到本页里。

静态导入和动态导入有如下两点区别:

a)静态导入是将被导入页面的代码完全融入,两个页面融合成一人整体Servlet;而动态导入则在Servlet中使用Include方法来引入被导入页面的内容。

b)静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

c)除此之外,执行include动态指令时,还可增加额外的请求参数,如:

3、useBean、setProperty、getProperty指令

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:十堰SEO http://shiyan.4567w.com


  • 上一篇:Apache Shiro Web应用整合-标签库
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 正定县枫林商贸有限公司 ALL RIGHTS RESERVED.
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100