日期:2014-05-16  浏览次数:20410 次

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:o