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的长度要大。