JSP知识点总结-面试

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)使用<jsp:useBean>标签:
<jsp:useBean id=”idName” class=”package.class” scope=”page|session|...”></jsp:useBean>

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中配置:
<servlet>
<servlet-name>welcomeservlet</servlet-name>
<servlet-class>servlets.WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>welcomeservlet</servlet-name>
<url-pattern>/servlets/WelcomeServlet</url-pattern>
上面的<url-pattern>不一定非要是类路径,也可以是其他的。
</servlet-mapping>

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都可以访问该参数
<context-param>
  <param-name>参数名</param-name>
  <param-value>参数值</param-value>
</context-param>
设置局部参数:只有本Servlet可以访问该参数
<servlet>
  <servlet-name>Servlet名称</servlet-name>
  <servlet-class>Servlet类路径</servlet-class>
  <init-param>
  <param-value>参数名</init-param>
  <param-value>参数值</param-value>
  </init-param>
</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声明的核心标签库:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
核心标签库:
(1)表达式操作:
<c:out>显示数据的内容;
<s:set>对变量或者JavaBean的变量属性进行赋值;
<c:remove>删除存在于scope中的变量。
(2)流程控制:
<c:if>用于简单的条件语句;
<c:choose>与<c:when>以及<c:otherwise>这三个标签通常会一起使用,用于复杂语句的判断;
<c:forEach>为循环控制标签,功能是将集合中的成员顺序浏览一遍,在实际应用开发中,使用频率最高;
<c:forTokens>标签是用来浏览字符串里的所有成员,其成员是用分隔符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(逻辑标签库):包含的标签来管理一些逻辑条件,根据逻辑条件进行一些操作。

JSP知识点总结-面试,布布扣,bubuko.com

JSP知识点总结-面试

上一篇:MVC设计模式总结


下一篇:树形展示数据——dhtmlxTree的使用