频道栏目
首页 > 程序开发 > Web开发 > Jsp > 正文
JSP知识点汇总(建议收藏)
2017-09-11 09:32:24      个评论    来源:时间慢慢的博客  
收藏   我要投稿

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的失效时间。主要应用于统计一个用户的访问次数

点击复制链接 与好友分享!回本站首页
上一篇:JSP中的scriptlet和注释
下一篇:搭建JSP运行环境(EclipseforjavaEEDevelopers+Tomcat7.0.79)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站