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

JSP知识点总结-面试

程序员文章站 2022-07-09 22:23:30
1、JSP中9种内置对象: (1)out对象:负责管理对客户端的请求信息 (2)request对象:负责得到客户端的请求信息 (3)response对象:负责向客户端发出响应 (4...
1、JSP中9种内置对象:
(1)out对象:负责管理对客户端的请求信息
(2)request对象:负责得到客户端的请求信息
(3)response对象:负责向客户端发出响应
(4)session对象:负责保存同一客户端一次会话过程中的一些信息
(5)application对象:表示整个应用环境的信息
(6)exception对象:表示页面上发生的异常,可以通过它获得页面异常信息
(7)page对象:表示的是当前JSP页面本身,就像Java定义的this一样
(8)pageContext对象:表示的是此JSP的上下文
(9)config对象:表示此JSP的ServletConfig

2、response.sendRedirect与jsp:forword>两种跳转方式的区别?
(1)从浏览器的地址显示上来看:
  forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发给浏览器,因此此时客户端浏览器的地址不变。
  而redirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址栏会改变。
(2)从数据共享上来看:
  forward转发的页,以及转发到的目标页能够共享request里面的数据,而redirect转发的页以及转发到的目标页不能共享request里面的数据。
(3)从功能上来看:
  redirect能够重定向到当前应用程序的其他资源,而且能够重定向到同一个站点上的其他应用程序中的资源。
  forward方法只能在同一个web应用程序内的资源之间转发请求,则可以理解为服务器内部的一种操作。
(4)从效率上来看:
forward效率较高,因为跳转仅仅发生在服务器端。
redirect相对较低,因为类似于再进行一次请求。

3、Cookie操作:cookie是一种常见的在页面之间传递数据的过程。Cookie是一个小的文本数据,由服务器端生成,发送给客户端浏览器,客户端浏览器如果设置为启用cookie,则会将这个小文本数据保存到某个目录下的文本文件内,下次登录同一网站,客户端浏览器自动将cookie读入。

4、定义JavaBean有如下两种方法:
(1)直接在JSP中实例化JavaBean:这是在JSP中使用Java代码,不提倡
  Student student=new Student();
  //下面就可以使用实例化的student
%>
(2)使用标签:


5、设置JavaBean属性和获取JavaBean属性。
6、JavaBean的scope范围:
(1)page:表示JavaBean对象的作用范围只是在其实例化的页面上,只有在当前页面可用,在其他页面不可用。
(2)request:表示JavaBean实例除了可以在当前页面上可用之外,还可以在通过forward(3)session:表示JavaBean对象可以存在session中,该对象可以被同一个用户一次会话的所有页面认识到。(要保证是同一个客户端,session才可以的)
(4)application:表示JavaBean对象可以存在application中,该对象可以被所有用户的所有页面认识到。

7、配置servlet,在web.xml中配置:

welcomeservlet
servlets.WelcomeServlet


welcomeservlet
/servlets/WelcomeServlet
上面的不一定非要是类路径,也可以是其他的。


8、在不关闭服务器的情况下,若干次访问只创建一个对象,只创建一个对象,很多用户访问的时候,会不会造成等待?
解:不会的,因为Servlet采用的是多线程机制,每一次请求,系统就会分配一个线程来运行doGet函数,但是这样也会带来安全问题,一般说来,不要在Servlet内定义成员变量,除非这些成员变量是所有的用户公用的。

9、Servlet中获取对象的方法:
(1)获取out对象:PrintWriter out=response.getWriter()
(2)获取request和response对象:
(3)获得session对象:HttpSession session=request.getSession()
(4)获得application对象:ServletContext application=this.getServletContext()

10、在Servlet中设置和读取参数:
(1)设置参数:
设置全局参数:所有的Servlet都可以访问该参数

  参数名
  参数值

设置局部参数:只有本Servlet可以访问该参数

  Servlet名称
  Servlet类路径
  
  参数名

  参数值
  

(2)获取参数:
获取全局参数:
ServletContext application=this.getServletContext(); application.getInitParameter(“参数名称”);
获取局部参数:
this.getInitParameter(“参数名称”);

11、Servlet内实现跳转:
(1)重定向(对应JSP内置对象中的sendRedirect)
response.sendRedirect(“URL地址”);
(2)服务器内跳转(对应于JSP中的forward标签):
ServletContext application=this.getServletContext();
RequestDispatcher rd=application.getRequestDispatcher(“URL地址”);
rd.forward(request,response);
一般情况下,当不需要传递参数或者需要跳转到另一个服务器页面时使用重定向,当需要从A页面跳转到B页面时,存在着大量的暂态数据(即在B页面显示过后就可以不用的数据),为了节省内存,可以使用forward,可以避免把很多内容存储在session中。

12、JSTL声明的核心标签库:

核心标签库:
(1)表达式操作:
显示数据的内容;
对变量或者JavaBean的变量属性进行赋值;
删除存在于scope中的变量。
(2)流程控制:
用于简单的条件语句;
以及这三个标签通常会一起使用,用于复杂语句的判断;
为循环控制标签,功能是将集合中的成员顺序浏览一遍,在实际应用开发中,使用频率最高;
标签是用来浏览字符串里的所有成员,其成员是用分隔符delims所分隔的。
(3)迭代操作:
(4)URL操作。

13、Ajax(Asynchronous JavaScript and XML),当一个异步过程调用发出后,调用者不需要立刻得到结果,可以继续做自己的事情,等到过程调用完毕,再通过回调函数通知调用方。而在同步情况下,调用方必须等待对方得到结果,才能继续运行。
Ajax包含一下5部分:
(1)异步数据获取技术:使用XMLHttpRequest,(它是所有技术的基础)
(2)基于标准的表示技术:使用XHTML与CSS
(3)动态显示和交互技术:使用Document Object Model(文档对象模型)
(4)数据互换和操作技术:使用XML与XSLT
(5)JavaScript:将以上的技术融合在一起

14、实现Ajax程序的5个核心步骤:
(1)在IE中实例化Msxml2.XMLHTTP对象:
var xmlHttp=new ActiveObject(“Msxml2.XMLHTTP”);
Msxml2.XMLHTTP是IE浏览器内置的对象,该对象具有异步提交数据和获取结果的功能,如果不是IE浏览器,则实例化方法如下:
<script type=”text/javascript”>
Var xmlHttp=new XMLHttpRequest();
</script>
(2)指定异步提交的目标和提交方式,调用了xmlHttp的open方法:
xmlHttp.open(“get”,”info.jsp”,true);此方法共单个参数,参数1表示请求的方式,参数2表示请求的目标是info.jsp,参数3为true时表示异步请求,为false表示非异步请求。
注意:此时知识指定异步提交的目标和提交方式,并没有进行真正的提交。
(3)指定当xmlHttp状态改变时,需要进行的处理,处理一般是以相应函数的形式进行:
xmlHttp.onreadystatechange=function(){
  //处理代码
}
该代码中用到了xmlHttp的onreadystatechange事件,表示xmlHttp状态改变时,调用处理代码。也可以直接将处理代码单独写成函数。
(4)编写处理代码:
xmlHttp.onreadystatechange=function(){
  if(xmlHttp.readyState==4)
  infoDiv.innerHTML=xmlHttp.responseText;
}
(5)发出请求,调用xmlHttp的send函数:
xmlHttp.send();

15、Ajax具有如下的优点:
(1)减轻服务器负担,避免整个浏览器窗口刷新的时造成的重复请求。
(2)带来更好的用户体验。
(3)进一步促进页面呈现和数据本身的分离。
缺点:
(1)对浏览器有一定的限制,对于不兼容的浏览器,无法使用。
(2)Ajax没有刷新按钮,浏览器上的“后退”按钮是失效的,因此,客户经常无法回退到以前的操作。

16、MVC(Model、View、Controller):软件开发过程中比较流行的设计思想,基于该思想,将JSP拆成三个模块来实现,首先,编写JSP,负责输入查询代码,提交到Servlet,Servlet进行安全验证,调用DAO来访问数据库,得到结果,跳转到JSP显示。
我们可以从这种设计思想上发现:程序被分成了不同的模块,显示、业务逻辑、过程控制相互独立,使得软件在伸缩性和可维护性方面有了很大的优势。
M(Model),封装应用程序的数据结构和事务逻辑,集中体现应用程序的状态,当数据状态改变的时候,能够在视图中体现出来,JavaBean适合这个角色。
V(View),是Model的外在表现,模型状态改变时,有所体现,JSP非常适合这个角色。
C(Controller),对用户的输入进行响应,将模型和视图联系到一起,负责将数据写到模型中,并调用视图,Servlet适合这个角色。

17、Structs中常用的组件:JSP、ActionServlet、ActionForm、Action、JavaBean、配置文件等。
(1)用户输入,JSP表单提交给ActionServlet。
(2)ActionServlet将表单信息封装在ActionForm内,转交Action。
(3)ActionServlet不直接处理业务逻辑,让Action来调用JavaBean(DAO)。
(4)Action返回要跳转的JSP页面地址给ActionServlet。
(5)ActionServlet进行跳转,结果在JSP上显示。
注意:
(1)ActionServlet先实例化LoginForm对象,然后调用LoginForm的setAccount函数,封装表单数据,然后实例化LoginAction进行处理。
(2)LoginForm和LoginAction第一次实例化之后就不会再实例化,这和Servlet的原理是一样的,实际上是一个对象用多线程的方式来运行。

18、Struts三个主要标签库:
(1)struts-html taglib(htm标签库):包含来生成动态HTML用户界面和窗体标签。
(2)struts-bean taglib(bean标签库):包含访问bean和bean属性时使用的标签,也包含一些消息显示的标签。
(3)struts-logic taglib(逻辑标签库):包含的标签来管理一些逻辑条件,根据逻辑条件进行一些操作。