java基础(1)

来源:互联网 发布:淘宝开店系统异常 编辑:程序博客网 时间:2024/06/07 13:55
>Collection和Collections的区别?
Collection是集合类的上级接口,继承它的接口主要有Set和List,Collections是针对集合的一个帮助类,它提供了一系列静态方法实现对各种集合的搜索、排序和线程安全化等操作。

Collection是最基本的接口。jdk不提供直接基础继承自Collection的类,jdk提供的类都是继承子Collection的子接口,如List和Set接口。实现List接口的常用类有LinkedList、ArrayList、Vector、Stack。实现Set接口的常用类有HashSet和TreeSet

Stack继承自Vector,实现一个后进先出的堆栈。

Map没有继承Collection接口。实现Map的接口的主要有HashMap和HashTable
>简单描述下HashMap和Hashtable的区别是什么?
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口。注意区别在于HashMap允许空键值,由于非线程安全,效率上可能高于Hashtable,HashMap允许将null作为一个entry的key或者value,而Hasetable不允许,HashMap把Hashtable的contains方法去掉了,改成了containsvalue和containskey。
两者最大的不同是,Hashtable的方法是synchronized的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步,HashMap和Hashtable采用的hash/rehash的算法几乎一样,所以性能不会有很大差异。

>解释冷备份和热备份的不同点以及各自的优点。
热备份针对归档模式的数据库,在数据库仍旧处于工作状态进行备份。而冷备份指在数据库关闭后进行备份,适用于所有模式的数据库,热备份的优点在于当备份时,数据库仍旧可以使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且冷备份的数据库可工作在非归档模式下,数据库的性能会比归档模式好(因为不比将archive log 写入硬盘)。

>DTD(Document Type Definition)就是一个规范xml文档结构的文档,其实,它起到了规范xml中数据结构的作用。
DTD的定义规范如下:
1、文档类型的定义:定义允许什么或者不允许什么在文档中出现,预先规定文档中元素的结构,属性类型和实体引用等,可直接在文档中定义DTD,或引用外部DTD,DTD不一定是必须的,只是需要的时候可以定义DTD。
2、DTD的调用:合法的XMl文档必须遵循某一类文档的结构声明,一旦声明就会于此类文档相应结构关联起来。dtd的调用就是指定文档使用什么样的DTD,它的出现在文档的xml声明后、基本元素前。dtd可以包含在xml中,也可以在外部定义。然后在xml中直接引用。

>在jsp中,tld指令用来声明jsp欲使用的标签库
标签描述器TLD:标签处理器是通过实现jsp容器调用一系列预定义的方法执行定制标签行为的一个java类

>jsp内置对象及其作用:
HttpServletRequest类的Request对象:代表请求对象,主要用于接受客户端通过http协议连接传输到服务器端的数据。
HttpServletResponse类的Response对象:代表响应对象,主要用于向客户端发送数据。
JspWriter类的Out对象:主要用于向客户端输出数据,Out的基类是JspWriter。
HttpSession类的session对象:主要用来分别保存每个用户的信息与请求关联的会话,会话状态维持是Web开发者必须面对的问题。
ServletContext类的application对象:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户共享。
PageContext类的PageContext对象:管理页面属性,为jsp页面包装页面的上下文,管理对属于jsp的特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。
ServletConfig类的Config对象:代码片段配置对象,表示Servlet的配置。
Object类的Page(相当于this)对象:处理jsp网页,是Object类的一个实例,指的是jsp实现类的实例,即它也是jsp本身,只有在jsp页面范围内之内才是合法的。
Exception对象:处理jsp文件执行时发生的错误和异常,只有在错误页面里才可以使用,前提是在页面指令里要有isErrorPage=true。例如在可能出现错误的jsp页面写上:
<%@ page contentType="text/html;charterset=gb2312" language="java" isErrorPage=true%>

>如果不希望在jsp页面里存取http会话,应该如何设定page指令?
<%page session="disabled"%>

>jsp的6个基本动作指令和作用
jsp:include:在页面被请求的时候引入一个文件
jsp:useBean:寻找或者实例化一个javaBean
jsp:setProperty:设置javaBean的属性
jsp:getProperty:输出某个javaBean的属性
jsp:forward:把请求转到一个新的页面
jsp:plugin:根据浏览器类型为java插件生成Object或者EMBED标记

>jsp中动态include和静态include的区别是什么
动态include用jsp:include实现
<jsp:include page="include.jsp" flush="true"/>总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态include用include伪代码实现,不会检查所包含文件的变化,适合用于包含静态页面
<%@include file=“include.htm”%>

>Cookie的工作流程
如何发送cookie?下面选项哪个正确?
a、使用new Cookie语句
b、调用response.addCookie()方法
c、使用Cookie的setMaxAge()方法
d、setCookie()方法
分析:
在Cookie发送到客户端前,先要通过new Cookie创建一个Cookie,所以a是错误的
然后用addCookie方法发送一个http header,jsp调用response.getCookies()下从客户端读入Cookie,getCookies方法返回一个http请求头中的内容对应cookie对象数组,你只需要用循环访问该数组的各个元素,调用getName方法取得与指定名字相关联的值,所以b对
setMaxAge(int expiry)以秒为单位,设置Cookie过期的时间,所以c是错误的
没有setCookie方法。
答案:b

>Servlet容器在启动时会加载web应用,并为每个web应用创建唯一的ServletContext对象。可以把ServletContext看成是一个web应用服务器端组件的共享内存,ServletContext对象包含在ServletConfig对象中,ServletConfig对象在初始化Servlet时由Web服务器提供给Servlet。

>在使用服务器端的会话管理时,通过什么方法标识会话?
Cookie

     每当新用户请求一个使用了httpsession对象的jsp页面时,jsp页面除了发回应答页面外,它还要向浏览器发送一个特殊的数字,这个特殊的数字称为“会话标识符”,它是唯一的用户标识符。此后,httpsession对象就驻留在内存中,等待同一个用户返回时再次调用它的方法。
     在客户端,浏览器保存标识符,并在每一个后继请求中把这个会话标识符发送个服务器,会话标识符告诉jsp容器当前请求不是用户发出的第一个请求,服务器以前已经为该用户创建了httpsession对象,此时,jap容器不再为用户创建新的对象,而是寻找具有相同会话标识符的对象,然后建立该httpsession对象和当前请求的关联。
    会话标识符以cookie的形式在服务器和浏览器之间传送,如果浏览器不支持cookie呢?此时,对服务器的后继请求将不会带有会话标识符,结果,jsp容器认为该请求来自一个新的用户,会在创建一个httpsession对象,而以前的对象仍驻留内存中,但是该用户以前的会话信息丢失了。

>HttpServletResponse状态码:
1xx:信息状态码,表示请求已经被接受,正在被处理
2xx:正确状态码,表示该请求已经正确被接受并处理,没有错误等发送,例如 200表示一切正确
3xx:重定向状态码,例如301或者302表示该资源已经不存在或者换了地址,客户端需要重新定向到一个新的资源,服务器响应中会附带这个新资源。
4xx:请求错误,例如401表示没有权限访问,404表示资源不存在,405表示访问方式错误(如Servlet只接受GET及POST方式访问,但是客户端却以DELETE方式访问)
5xx:服务器错误。例如500表示程序出现异常而中途停止运行。
0 0
原创粉丝点击