admin 管理员组

文章数量: 887239


2024年1月16日发(作者:jsp声明)

01、jsp有哪些内置对象?作用分别是什么?

所谓内置对象就是不加声明就可以在JSP页面脚本中使用的成员变量。JSP总共9种内置对象,分别为:request、response、session、application、out、pageContext、config、page、exception。

request对象的作用是与客户端交互,获取客户端的from、cookies和超链接的信息,或者收集服务器端的环境变量信息。

response对象的主要作用是对客户的请求做出动态响应,向客户端发送数据。

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

session 对象是由服务器自动创建的与用户请求相关的对象,

用于保存该用户的信息,跟踪用户的操作状态。

application 对象可将信息保存在服务器中,直到服务器关闭;application 对象被所有客户共享,能让Servlet访问关于其环境的信息,实现客户间的数据共享。

page 对象是指向当前JSP程序本身的对象,是、Object类的实例对象,可以使用Object类的方法。

config 对象的主要作用是取得服务器的配置信息。

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

02、jsp有哪些动作?作用分别是什么?

JSP的基本动作包括:jsp:useBean、 jsp:include、jsp:setProperty、jsp:getProperty、jsp:forward、jsp:plugin、jsp:fallback、jsp:param。

:寻找或者实例化一个JavaBean。

:在页面被请求的时候引入一个文件。

:设置JavaBean的属性。

:输出某个JavaBean的属性。

:把请求转到一个新的页面。

:根据浏览器类型为Java插件生成OBJECT或EMBED标记。

:用于Java插件不能启动时显示给用户的的信息弹出。

:以 “名-值”的形式为其他标签提供附加信息。

03、简述JSP的处理过程。

(1)客户端通过浏览器向服务器发出请求,该请求中包含了请求的资源的路径。

(2)服务器根据被加载的客户端的请求加载被请求的JSP页面。

(3)Web服务器中的JSP引擎把被加载的JSP页面转换成servlet。

(4)JSP引擎把生成的JSP页面编译成class文件。

(5)服务器执行这个class文件。

(6)服务器把执行结果发送给浏览器显示。

04、在JSP中有哪几种注释的方法?

JSP中的注释一般分为两种:一种是JSP注释,是JSP本身的用于描述JSP程序的代码,它会被JSP容器忽略,不会出现在网页源代码中;另一种是HTML注释,用于描述JSP页面执行后的结果,这种注释会被客户端看到。

05、简述JSP页面中的组成元素。

JSP页面中的元素可分为脚本元素、指令元素、动作元素三种类型。脚本元素是嵌入到JSP页面中的Java代码;指令元素则是针对JSP引擎如何处理代码;动作元素主要用于连接所要使用的组件,另外还可以控制JSP引擎的动作。

06、Servlet的基本架构

SServlet的框架的核心是t接口,所有的servlet都必须实现这一接口。在servlet接口中定义了5个方法,其中有3个方法代表servlet的生命周期:init方法,负责初始化对象;servlet方法负责相应客户的请求;destory方法,当servlet对象退出生命周期时,负责释放占有的资源。

07、Servlet执行时一般实现哪几个方法?

Servlet执行时一般实现init()方法、servlet()方法、destory()方法。Init()方法,负责初始化对象;

servlet()方法负责相应客户的请求;destory()方法,当servlet对象退出生命周期时,负责释放占有的资源。

08、表单提交方式中的get和post有什么区别?

(1)get是从服务器上获取数据,post是向服务器传送数据。

(2)get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

(3)对于get方式,服务器端用tring获取变量的值,对于post方式,服务器端用获取提交的数据。

(4)get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

(5)get安全性非常低,post安全性较高。

09、Java Servlet的主要功能和作用是什么?

Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。装入后,Servlet继续运行直到其它客户机发出请求。

功能:

(1)创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面。

(2)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)。

(3)与其它服务器资源(包括数据库和基于Java的应用程序)进行通信。

(4)用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。

(5)当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态。

(6)对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。

(7)将定制的处理提供给所有服务器的标准例行程序。

10、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

Jsp和servlet的区别和联系:

(1)jsp经编译后就变成了Servlet。(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

(2)jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。

(3)Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

联系:JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。

区别:Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

11、HttpServletResponse类的sendRedirect方法(请求重定向)和RequestDispatcher类的forward方法(请求转发)有何不同?

HttpServletResponse类的sendRedirect方法可以把用户重新定向到其他页面或servlet,但是不能将用户对当前JSP页面或servlet的请求和响应 (HttpServletRequest对象和HttpServletResponse对象)传递给所重新定向JSP页面或servlet。

RequestDispatcher对象使用forward方法可以把用户对当前JSP页面或servle的 请求转发给另一个JSP页面或servlet,而且将用户对当前JSP页面或servlet的请 求和响应(HttpServletRequest对象和HttpServletResponse对象)传递给所转发的JSP页面或servlet。也就是说,当前页面所要转发的目标页面或servlet对象可以使用request获取用户提交的数据。

12、简述四种会作用域page/request/session/application。

到其他的资源后被删除。

范围内的对象。

13、简述Servlet的生命周期。

14、JSP中动态INCLUDE与静态INCLUDE的区别?

(1) 动态INCLUDE用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

(2) 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面。

15、两种跳转方式分别是什么?有什么区别?

两种跳转方式分别是forward跳转:和response跳转:direct("跳转页面地址")。

前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数。后者完全转向新页面,不会再回来。相当于go to 语句。

16、简述请求转发和请求重定向的区别。

进行请求转发时,存储在request对象中的信息会被保留并带到目标页面中;请求重定向是重新生成一个request请求,然后将该请求重定向到指定的URL,所以事先存储在request对象中的信息都不存在了。

17、JSP 和 Servlet 中的请求转发分别如何实现?

JSP 中的请求转发可利用 forward 动作实现:;Serlvet 中实现请求转发的方式为:getServletContext().getRequestDispatcher(path).forward(req,res)。

18、JSP中Model2的工作原理是什么?

JSP的Model2实际上就是引入了MVC设计模式,采用Servlet+JavaBean+JSP进行开发。

Model2采用Servlet作为控制器(Controller)负责接收客户端Web浏览器发送来的所有请求,并依据处理的不同结果,转发到对应的JSP页面(Viewer)实现在浏览器客户端的显示。

通常在Servlet中只包含了控制逻辑和一些简单的处理逻辑,更加复杂的业务处理逻辑则借助特定的JavaBean(Model)具体实现。

19、简述include指令标识和动作标识的差异。

(1) inlcude指令通过file属性来确定被包含的页面,将file属性值看做一个实际存在的文件路径,所以该指令不支持任何表达式;动作标识通过page属性确定被包含的页面,支持JSP表达式。

(2) include指令包含的文件,内容会原封不动的插入到该指令的位置,与该指令合成进行编译,若改变了被包含文件,主文件要重新编译;动作标识包含文件时,当该标识被执行时,程序会将请求转发到被包含的文件,并将执行结果输出到浏览器中,然后返回到包含文件继续执行后面的代码,JSP编译器对两个文件分别进行编译,被包含文件改动不会影响源文件。

20、简述内置对象session和application的区别。

Session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个对象。

21、在Servlet的doGet()和doPost()方法中,如何得到与JSP内置对象out、request、rsponse、session、application分别对应的对象?

(1)可以通过以下代码获取out对象:PrintWriter out = ter();

(2)Servlet直接继承了HttpServlet类,可以直接使用request和response对象

(3)可以通过以下代码获取session对象:HttpSession session=sion();

,需要通过vletContext()来获取。Servlet自动定义了ServletConfig对象。故可以使用以下application对象

ServletContext application =vletContext(); 或者:

ServletConfig config=getServletConfig();

ServletContext application=vletContext();

22、简述数据库连接池的实现原理。

(1) 预先创建一定数量的连接,存放在连接池中。

(2) 当程序请求一个连接时,连接池是为该请求分配一个空闲连接,而不是去重新建立一个连接;当程序使用完连接后,该链接将重新回到连接池中,而不是直接将连接释放。

(3) 当连接池中的空闲连接数量低于下限时,连接池将根据管理机制追加创建一定数量的连接;当空线连接数量高于上限时,连接池将释放一定数量的连接。

23、forward和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

24、有两个页面和,要从传值到有几种方法?分别是什么?

(1) 最常用的方法是用form中的text、input然后在页面中这样获取:String

username=ameter(参数名)

(2) 直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开,然后在下一页面用:ameter(参数名)来获取。

(3) 在form中放hidden,后在下一页面用:ameter(参数名)来获取。

25、JSP页面是如何被执行的?JSP执行效率比Servlet低吗?

当客户端向一个JSP页面发出请求时,Web Container将JSP转化成Servlet的源代码(只在第一次请求时),然后编译转化后的Servlet并加载到内存中执行,执行的结果Response到客户端。

JSP只在第一次执行的时候会转化为Servlet,以后每次执行Web容器都是直接执行编译后的Servlet,所以JSP和Servlet只是在第一次执行的时候不一样,JSP慢一点,以后的执行都是相同的。

26、HttpServlet类中的主要方法都有哪些?

HttpServlet的主要方法有 doGet, doPost, doPut, doDelete, doTrace等等。

27、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是类

servlet。

Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的

HTML 里分离开来 。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。 JSP 侧重于视图,Servlet 主要用于控制逻辑。

28、简述Java中异常处理的机制?

异常处理机制可以从两个方面来描述,当一个Java程序违反了Java语义规范时,JVM虚拟机就会抛出一个异常,比如说当遇到null时,会抛出一个NullPointerException,当遇到下标越界的时候回抛出一个IndexOutOfBroundsException,除此之外,程序员还可以自定义异常,去扩展这种语义的检查,并在合适的时机通过throw关键字抛出异常。

29、什么是继承?

继承,指一个对象直接使用另一对象的属性和方法。

30、请简述重载和重写的区别?

(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。

(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。


本文标签: 请求 对象 页面 服务器