servlet、jsp面试题

来源:互联网 发布:经典网络歌曲 编辑:程序博客网 时间:2024/05/22 07:54

Servlet

说一说Servlet的生命周期?

        Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init(),service()和destroy方法表达。

        Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

Servlet API中forward()与redirect()的区别?

    1.从地址栏显示来说

        forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
        redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
    2.从数据共享来说
        forward:转发页面和转发到的页面可以共享request里面的数据。
        redirect:不能共享数据。
        redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
        forward方法只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作。
        redirect 是服务器通知客户端,让客户端重新发起请求。
 所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "
    3.从运用地方来说
        forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
        redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。
    4.从效率来说
        forward:高
        redirect:低

request.getAttribute()和 request.getParameter()有何区别?

        1    request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。

              request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。

        2    getAttribute是返回对象,getParameter返回字符串。

        3    getAttribute()一向是和setAttribute()一起使用的,只有先用setAttribute()设置之后,才能够通过getAttribute()来获得值,它们传递的是Object类型的数据。而且必须在同一个request对象中使用才有效。,而getParameter()是接收表单的get或者post提交过来的参数。

JSP

jsp有哪些内置对象?作用分别是什么?

        JSP共有以下9个内置的对象:

        1.  request 用户端请求,此请求会包含来自GET/POST请求的参数

        2.  response 网页传回用户端的回应

        3.  pageContext 网页的属性是在这里管理

        4.  session 与请求有关的会话期

        5.  application servlet 正在执行的内容

        6.  out 用来传送回应的输出

        7.  config  servlet的构架部件

        8.  page JSP网页本身

        9.  exception 针对错误网页,未捕捉的例外

jsp静态包含和动态包含的区别

        1、<%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期。

        2、使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件。 

        3、使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数。

什么是cookie?Session和cookie有什么区别?

    区别:

        (1) cookie数据存放在客户的浏览器上,session数据放在服务器上
        (2) cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
        (3) session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
        (4) 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

    结论:

        将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。

jsp和servlet的区别、共同点、各自应用的范围?

        JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。

        Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

        JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。












原创粉丝点击