JSP中常见知识点总结(面试必备)

*  JSP的注释

<!--注释-->     发送到客户端的JSP注释(HTML注释):在客户端可以看到该注释

<%--注释--%>   不发送到客户端的JSP注释:在客服端打开源文件看不到该注释

 

*  静态include和动态include的区别

静态的:<%@ include file="head.jsp" %>

            动态的:<jsp:include page="head.jsp" flush="true"/>

静态的

就是静态嵌入一个文件,Tomcat服务器在编译阶段就完成,即将当前的jsp页面和要嵌入的文件合并成一个新的JSP页面,一起编译成servlet形式的java文件。

动态的

JSP文件和他所需要的文件在逻辑和语法上是独立的。Include动作标记是在jsp页面运行的时候才处理。不合并成一个新的jsp页面。

 

*  JSP的九大内置对象

  1. Out:一个缓冲的输出流,向客户端输出内容。
  2. page:当前JSP页面本身,它是java.lang.Object类的实例
  3. request:提取浏览器提交的信息。
  4. response 服务器对客户的请求做出响应,向客户端发送数据。
  5. session :会话对象,session对象指的是客户端与服务器的一次会话,
  6. application:实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭。
  7. pageContextjsp页面上下文对象,提供了对JSP页面内所有的对象及名字空间的访问.
  8. config 代表jsp对应的servlet的配置信息
  9. exceptionThrowable的实例,表示的是JSP的异常信息,如果要使用它,必须设置page指令:isErrorPage="true"

 

*  MVC文字描述

M代表Model,也就是模型,一个或多个JavaBean对象,用于存储数据。

V代表View,,也就是视图,一个或多个JSP页面,为模型提供数据显示

C代表Controller,也就是控制器,由servlet充当,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后servlet使用重定向方式请求视图中的某个JSP页面更新显示数据,即让改jsp页面通过使用JavaBean标记显示控制器存储在JavaBean中的数据。

 

*  MVC的处理过程:

①首先控制器(Cservlet))接收用户的请求,并决定应该调用哪个模型(Mjava))来进行处理

②然后调用模型用来处理用户的请求并返回数据

③最后控制器用相应的视图(Vview))显示模型返回的数据,并通过浏览器呈现给用户。

 

*  介绍DAO模式,工厂模式

 

*  Tomcat的目录结构

    bin/            二进制可执行文件和启动和关闭tomcat的脚本文件

    conf/           配置文件目录

    lib/            所有Web应用可见的类库目录

    logs/           日志目录

    server/         服务器所需的类库目录(tomcat6取消了)

    webapps/       Web应用所存放的目录

    work/          Tomcat的工作目录(存放临时文件,jsp生成的servlet文件)

    temp/          tomcat运行时产生的临时文件

 

*  Get请求和Post请求的区别

1.       从安全上看 get<post 因为get提交的数据信息会在浏览器的地址栏中显示

2.       从提交内容大小看 get<post get提交的数据不能大于2k,post提交的数据理论上不受限制的,但是实际编程中建议不要大于64k

3.       从请求响应速度上看 get>post get要求服务器立即处理请求,而post请求可能形成一个队列请求。

4.       get调用doGet方法,为post调用doPost方法

*  SeesionCookie的区别

1Session将信息保存在服务器上,而Cookie保存在客户端上

2SessionCookie更安全,SessionCookie更占资源

3Sssion使用了Cookie的机制,如果Cookie被禁用,则Session也无法使用,因为客户端的session IDcookie形式保存在客户端的内存当中,这个时候我们可以通过url重写,来保证session的有效性.

4Session是在服务器端,由服务器生成sessionID,通过sessionId保存数据在客服端

5Sessioncookie保存客户端数据,所以session依赖于cookie

6.如果浏览器不支持Cookie,可以通过URL重写来实现,

重写url的方法如下:response.encodeURL(request.getRequestURL().toString());  

7Cookie只能存String类型的数据,而Session可以存Object类型和简单数据类型的数据

*  Servlet的生命周期

当客户端第一次向web服务器发出一个servlet请求时,web服务器将会创建一个该servlet的实例,并且调用servletinit()方法;如果当服务器已经存在了一个servlet实例,那么,将直接使用此实例;然后再调用service()方法,service()方法将根据客户端的请求方式来决定调用对应的doXXX()方法;当servletweb服务器中删除的时候,web服务器将调用destroy()方法。

生命全过程:

1.加载

2.实例化

 3.初始化

 4.处理请求

 5.退出服务

*  SendRedirect()forward()的比较

1.SendRedirect()是发生在IE浏览器端,forward()在web服务器端直接发生的;

2. forward()仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

3. forward()更加高效,也有助于隐藏实际的链接,只能转发到本web应用的某个资源。

sendRedirect()可以跳转到一个其它服务器上的资源。

4.sendRedirect()request对象放入的属性值,不能给跳转到的页面使用;

Forward():request对象中的属性值,可以给转发到的页面继续使用。

* 编码中的乱码

Oracleutf8,javaUTF-8

服务器响应的编码格式是ISO-8859-1

1.  针对表单的post提交

request.setCharacterEncoding("UTF-8");

2.  针对表单的get提交

String name=new String(request.getParameter("name").getBytes("iso-8859-1","UTF-8"));

3.  针对超链接<a href=/web应用名/xxxname=myTest>你好</a>

String name=new String(request.getParameter("name").getBytes("iso-8859-1","UTF-8"));

4.  针对sendRedirect()

sendRedirect()要重新编码回去再编码回来。

String newName=java.net.URLEncoder.encode(name,"utf-8");

response.setHeader("Content-Disposition", "attachment;filename="+newName);

提取表单的时候采用ISO-8859-1的格式,仅仅设置响应头是不行的,尅采用设置请求的编码格式和响应头的编码格式。但这仅仅只针对采用post方式提交的时候起作用。如果是get方式请求的就不起作用了。

如果是get方式提交的,要配置Tomcat的配置文件conf文件夹下的server.xml,添加:

URIEncoding="GBK"

disableUploadTimeout="true"

在下面中添加:

 

posted @ 2011-08-23 17:26  浪漫满屋  阅读(520)  评论(0编辑  收藏  举报