JSP总结

来源:互联网 发布:tensorrt tensorflow 编辑:程序博客网 时间:2024/06/08 01:40

转自:http://zhoushunlong.iteye.com/blog/766407


index:
1,什么JSP
2,JSP有什么用
3,JSP九大内置对象,七大动作,三大指令
4,JSP怎么处理一个请求
5,为什么要使用JSP自定义标签,怎么自定义一个JSP标签
6,两种服务器的跳转方式以及它们之间的区别
7,共享数据在web应用中的范围(JSP的四大作用域)
8,动态包含与静态包含的区别
9,get提交与post提交的区别



一,什么JSP?


在HTML文件中加入java程序片度和JSP标签,就构成了JSP网页。java程序片段可以操作数据库,重定向网页等操

 

作,JSP它实现了建立动态网页所需要的功能。所有程序操作都在服务端执行,网页上只显示输出结果,所以JSP技

 

术大大降低了对浏览器的要求。



二,JSP有什么用?


它可以生成动态网页,这比传统的HTML要强的多。



三,JSP九大内置对象,七大动作,三大指令?


九大内置对象:


out:向客户端输出数据。


request:向客户端请求数据,数据的范围只发生在提交的范围之内(2个页面)。


response:封装了jsp产生的响应,然后被发送到客户端以响应客户的请求,重定向跳转到任意界面。


session:只能在当前页面保存信息,主要用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据。


application:对象负责提供应用程序在服务器中运行时的一些全局信息。


page:代表正在运行的JSP数据请求。


pagecontext:


exception:


config:

七大动作:


include:用于指定包含另一个页面。这里指的是动态包含。


forward:执行页面跳转,请请求的处理交给下一个页面。


useBean:用来创建一个JavaBean的实例。


setProperty:


getProperty:

 

plugin:

三大指令:
page:这是针对当前页面的指令,如声明当前JSP页面的使用的语言。用于导包。声明JSP编译产生的类继承哪个父类。


taglib:用于定义和访问自定义标签。


include:用于指定包含另一个页面。这里指的是静态包含。

静态包含与动态包含的区别:


1,静态包含是统一编译的,而动态包含是单独编译的。


2,静态包含不总是检查被包含的页面的变化,动态包含总是会检查被包含的页面的变化。


3,因为动态包含是JSP动作,所以它是可以带参数的,而静态包含是JSP指令,所以是不能带参数的。

 

 

四,JSP怎么处理一个请求?


当我们发送一个请求道JSP页面时,JSP容器会对JSP文件进行语法分析并生成Servlet源文件,然后对其编译,然后把请求

 

的响应给浏览器。这里该注意的地方:Servlet源文件的生成和编译仅在初次调用JSP时发生,如果原始的JSP文件有

 

新,JSP容器会检测到更新的地方,在执行它之前会重新生成Servlet并进行编译。



五,为什么要使用JSP自定义标签,怎么自定义一个JSP标签?


(1)JSP脚本非常丑陋,难以阅读。JSP脚本和HTML代码混杂,维护成本高。HTML页面中嵌入JSP脚本,导致美工人员难以参与

 

开发。所以用自定义标签来解决这些问题。


(2)1,写一个自定义标签的类,这个类继承SimpleTagSupport,重写doTag方法,这个方法负责生成页面内容。


2,建立TLD(标签库定义)文件。在这个文件里定义了标签名,自定义标签的处理类,指定自定义标签库的URL等一些息。


3,在JSP页面上用taglib指令引入自定义标签库。

注意:自定义标签库的目的是以简单的标签,隐藏复杂的逻辑。但是我们不推荐在标签处理类中访问数据库,因为标签库是表

 

现层组件,它不应该包含任何业务逻辑实现代码,更不应该执行数据库访问,它只应该负责显示逻辑。

 


六,两种服务器的跳转方式以及它们之间的区别?


(1)两种服务器跳转:response和forward


(2)1,response可以跳转到任何一个地址页面,forward只能在本服务器内跳转。


2,forward比response的执行效率要高。


3,forward跳转之后,浏览器的地址栏不发生改变,而response跳转之后,是显示跳转后的页面文件名。


4,在客户端页面文件中使用response.setAttribute()存储了某个值后,forward跳转页面后可以取得存储的值,

 

而response则取不到

 


七,共享数据在web应用中的范围(JSP的四大作用域)?


在web应用中,如果某种数据需要被多个web组件共享,我们可以把这些共享数据存放在特定的范围内,

 

在JSP中,共享数据有四种存在范围:page,request,session,application。

page:共享数据的有效范围是用户请求访问当前JSP页面。


request:向客户端请求数据,数据的范围只发生在提交的范围之内(2个页面)。


session:共享数据存在整个HTTP会话的生存周期内,同一个HTTP会话中web组件共享它。

 

session范围内的共享数据实际上是存放在HttpSession对象中的。


application:共享数据存在整个web应用的生命周期内,web应用中的所有web组件都能共享它。

 

共享数据实际上存放在ServletContext对象中的。

在这里注意的是,如果把共享数据保存在request范围内也能完成和存放在session范围内同样的功能,则优先考虑

 

request。因为HttpServletRequst对象的生命周期比HttpSession对象要短的多,当服务器响应完用户请求时,

 

相应的request对象就会结束生命周期,java的JVM会负责回收request对象占用的内存。



八,动态包含与静态包含的区别?


1,单独编译(动态包含)和统一编译(静态包含,实现变量共享)。


2,静态包含不总是检查被包含的页面的变化,动态包含总是会检查被包含的页面的变化。


3,静态包含是不带参数的,动态包含是可以带参数的。

 


九,get提交与post提交的区别?


当method没有任何注明的时候,则表单默认的提交方式是get。


(1)安全性问题:get不安全,post安全(get会把表单里的信息全都打印到地址栏上)。

 

(2)长度问题:post比get的长度要大。


0 0