欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP知识点汇总(建议收藏)

程序员文章站 2022-03-23 20:39:49
JSP是Java Server Page的缩写,是基于Java Servlet以及整个Java体系的WEB开发技术,是一种动态网页技术标准。 运行原理: 客户端请求服务端的一个...

JSP是Java Server Page的缩写,是基于Java Servlet以及整个Java体系的WEB开发技术,是一种动态网页技术标准。

运行原理:

客户端请求服务端的一个JSP页面,如果该JSP页面被第一次请求,服务器的JSP引擎首先将JSP页面文件转译成Java源文件(其实是将JSP文件转换为一个Servlet),接着编译Java源文件并将生成的字节码文件存储在服务器的localhost\work\网站目录\,最后执行这个字节码文件响应客户的请求;当该JSP文件被第二次请求的时候,服务器将检查该JSP文件自最后一次被存取后是否经过修改,如果没有修改则请求将交给还在内存中的servlet的jspService()方法,如果被修改,文件被重新编译并取代内存中的servlet,并执行jspService()方法。

Jsp内部方法:

jspInit(){}:jsp Page被初始化的时候调用该方法,并且该方法仅在初始化时执行一次,所以可以在这里进行一些初始化的参数配置等一次性工作,由作者创建

jspDestroy(){}:jsp Page由于某种原因被关闭的时候调用该方法,由作者创建

jspService(){}:由jsp容器自动创建的处理jsp Page的方法,由jsp容器创建,不能由作者定义。

当jsp文件第一次被处理时,他会被转化成一个servlet。jsp引擎首先把jsp文件转化成一个java源文件,如果在转化过程中发生错误的话,会立刻中止,同时向服务器端和客户端发送错误信息报告;如果转化成功了,就会产生一个class类。然后再创建一个 Servlet对象,首先执行jspInit()方法进行初始化操作,由于整个执行过程jspInit()方法只执行一次,所以可以在这个方法中进行一些必要的操作比如连接数据库,初始化部分参数等等,接着执行_jspService()方法,对客户端的请求进行处理,对每一个请求会创建一个线程,如果同时有多个请求需要处理的话就会创建多个线程,由于servlet长期贮存与内存中,所以执行速度快,但是由于初始化需要编译,所以第一次执行还是比较慢的,如果由于某种原因导致jsp网页关闭或者销毁的话会执行jspDestroy()方法。

JSP与CGI(通用网关接口)的异同?

两者都是服务端的动态编程技术,但主要的区别是当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程由JSP引擎服务器管理;而传统的CGI为每个客户启动一个进程,相对而言,线程占用的CPU资源少,所以效率要高。

JSP包含的基本内容

1、JSP的变量、方法、表达式<%=%>被计算的表达式一定要有返回结果,不以;为结尾

2、注释元素:<%– - -%>(不被送到客户端),与html注释不同,用这种方式的注释是完全不会暴露给客户端的,但在<%%>中还是使用’//’作注释.

HTML的 !被送到客户端并且会被查看

3、脚本元素,程序段<% %>:书写JSP页面内所需的任何逻辑,该部分代码会被编译到servlet的service方法中。通过在page指令中使用import参数,可以从<%%>内调用所有JavaAPI,因为任何JSP代码实际上都被编译成Java Servlet,它本身就是一个类,所以在JSP中我们有权使用整套丰富的JavaAPI,因此几乎没有任何局限性。

4、声明元素<%! %>:用于定义全局变量或是在页内任何地方都可以访问的Java方法,相当于在servlet类中定义了全局变量和成员方法,被声明的变量或方法并不在JSP页内产生任何输出,除非在<%%>中被引用,它们仅仅用于定义。

5、指令元素:通过使用JSP指令,可以包含非Java代码模块,如HTML文件;JSP定义了三个页内指令用于设置JSP参数或扩展代码

1)<%@page %>:可以为网页设定一些基本参数,包括编程语言,页面的编码格式,导入类,转向错误页等

2)<%@include%>:使一个JSP文件可以包含其他文件(html,jsp)的内容,如存于单独文件中的HTML报头和页脚。如果引入的页面已经声明过变量和方法,就可以直接使用而不必再次声明,被引入的页面也会被编译成本页面的一部分,声明可以扩展范围,也就是说可以扩展到任何静态的JSP文件,如:xx.jsp声明了一些变量和方法,用include指令引入yy.jsp,那么yy.jsp就可以继承和使用这些变量和方法;如果在xx.jsp中使用引入yy.jsp,若yy.jsp是静态文件,则可以继承并使用声明的变量和方法,动态则不可以。

3)<%@taglib%>:用于扩充标准的JSP标签集。表示JSP文件使用了自定义的标签,同时引用标签库,也指定了标签的前缀.

uri属性:标签库描述符,uri统称为’资源标识符’,代表web上可用的资源,如果标记库文件是放在远程服务器,那么就要使用绝对路径来访问,如果下载到本地,只需要用相对uri的方式指明标记库文件在本地的目录路径。

6、动作元素:JSP动作利用xml语法格式的标记来控制servlet引擎的行为,如插入文件,使用JavaBean组件,重定向请求等。

1)jsp:include:该动作与include指令的区别在于include引入的文件会在jsp文件被转换成servlet的时候插入,即两个JSP页合成一个JSP,然后被转译成Servlet;而jsp:include引入的文件将在页面被请求的时候插入,即容器调用JSP页面实现类处理请求并响应的时候才引入的,所以jsp:include引入页面时,实际只是引用了一个JSP文件被转换并编译后产生的Servlet类文件,如此一来,被引用的JSP文件是作为一个单独的文件来执行后才被调用。

2)jsp:useBean

3)jsp:forward

4)jsp:setProperty

5)jsp:getProperty

6)jsp:plugin

JSP九大内置对象

1)page:页面对象。JSP中引入了PageContext上下文对象,通过它可以访问页面的许多属性,

2)通过PageContext对象还可以获取这九大内置对象,如:getOut();getRequest()等。

表示的是当前JSP页面本身,就像Java定义的this一样

3)request:该对象封装了用户提交的信息,通过一些方法可以获取封装的信息;当获取客户提交的汉字字符时,会出现乱码问题,解决的方法是:将获取字符串用ISO8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转换为字符串即可。示例:

String name=request.getParameter(“username”);

byte [] by=name.getBytes(“ISO8859-1”);

name=new String(by);

4)session:它在用户访问第一个JSP页面时自动创建,完成会话期管理,从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开服务器结束,被称为一个会话。创建Session对象的同时,将为session对象分配一个String类型的ID号,并将这个ID号发送到客户端,保存在cookie中,这样session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消。

5)application:服务器启动后就产生这个对象,它是属于应用级的对象,即所有的客户在浏览各个页面时都共享这个对象,直到服务器关闭。

6)out:是一个输出流,用来向客户输出数据。

7)config:配置对象,表示此JSP的ServletConfig

8)response:对客户的请求作出动态响应,向客户端发送数据。

9)exception:在处理异常的页面中可以直接访问该对象。

没有cookie:是web服务器保存在用户硬盘上的一段文件,每个cookie对象以键/值对的方式存储;向客户端发送cookie主要通过response对象的addCookie(Cookie c)方法;读取客户端的cookie主要通过request对象的getCookies()方法,返回一个数组;可以设置cookie的失效时间。主要应用于统计一个用户的访问次数