Web面试题Ⅱ

1、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么

  JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

2、jsp 的四种作用域

  page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面

  request 是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)

  session 是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求

  application 是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

3、Request 对象的主要方法

  setAttribute(String name,Object):设置名字为 name 的属性值

  getAttribute(String name):返回由 name 指定的属性值

  getAttributeNames():返回 request 对象所有属性的名字集合(枚举)

  getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组

  getCharacterEncoding():返回请求中的字符编码方式

  getContentLength():返回请求的 Body 的长度

  getHeader(String name):获得 HTTP 协议定义的文件头信息

  getHeaders(String name):返回指定名的 request Header 的所有值(枚举)

  getHeaderNames():返回所有 request Header 的名字(枚举)

  getInputStream():返回请求的输入流,用于获得请求中的数据

  getMethod():获得客户端向服务器端传送数据的方法

  getParameter(String name):获得客户端请求中传送的 name 指定的参数值

  getParameterNames():获得客户端传送给服务器端的所有参数的名字(枚举)

  getParameterValues(String name):获得有 name 指定的参数的所有值

  getProtocol():获取客户端向服务器端传送数据所依据的协议名称

  getQueryString():获得查询字符串

  getRequestURI():获取发出请求字符串的客户端地址

  getRemoteAddr():获取客户端的 IP 地址

  getRemoteHost():获取客户端的名字

  getSession([Boolean create]):返回和请求相关 Session

  getServerName():获取服务器的名字

  getServletPath():获取客户端所请求的脚本文件的路径

  getServerPort():获取服务器的端口号

  removeAttribute(String name):删除请求中的一个属性

4、如何实现 servlet 的单线程模式

  <%@page isThreadSafe=”false”%>

5、页面间对象传递的方法

  request,session,application,cookie 等。

6、详细描述 MVC

  基于 Java 的 Web 应用系统采用 MVC 架构模式,即 model(模型)、view(视图)、controller(控制)分离设计;这是目前 WEB 应用服务系统的主流设计方向。

  Model:即处理业务逻辑的模块,每一种处理一个模块;

  View:负责页面显示,显示 MODEL 处理结果给用户,主要实现数据到页面转换过程;

  Controller:负责每个请求的分发,把 FORM 数据传递给 MODEL 处理,把处理结果的数据传递给 VIEW 显示。

7、MVC 的各个部分都有那些技术来实现?如何实现

  MVC 是 Model-View-Controller 的简写。

  "Model" 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现)

   "View" 是应用的表示面(由 JSP 页面产生)

  "Controller" 是提供应用的处理过程控制(一般是一个 Servlet)

  通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

8、Servlet 执行时一般实现哪几个方法

  public void init(ServletConfig config)

  public ServletConfig getServletConfig()

  public String getServletInfo()

  public void service(ServletRequest request,ServletResponse response)

  public void destroy()

9、struts 的入口类

  ActionServlet,所有的 struts 请求都经由该类转发处理。

10、几种会话跟踪技术

  URL重写、隐藏表单域、Cookie、Session。

  URL重写:可以在 URL 后面附加参数,和服务器的请求一起发送,这些参数为键/值对

    特点:(参数存放)参数是存放在 url 里的,有1024长度限制

       (Cookie禁用)当Cookie被禁用时依旧能够工作

       (持久性)不存在持久性,一旦浏览器关闭就结束

  隐藏表单域:<input type="hidden" id="xxx" value="xxx">

    特点:(参数存放)参数是存放在请求实体里的,因此没有长度限制,但是不支持 GET 请求方法,因为 GET 没有请求实体

       (Cookie禁用)当Cookie被禁用时依旧能够工作

       (持久性)不存在持久性,一旦浏览器关闭就结束

  Cookie:是浏览器保存的一个小文件,其包含多个键值对。服务器首先使用 Set-Cookie 响应头传输多个参数给浏览器,浏览器将其保存为 Cookie,后续对同一服务器的请求都使用Cookie 请求头将这些参数传输给服务器

    特点:(参数存放)参数是存放在请求头部里的,也存在长度限制,但这个限制是服务器配置的限制,可以更改

       (Cookie禁用)可能会禁用Cookie

       (持久性)浏览器可以保存Cookie一段时间,在此期间Cookie持续有效

  Session:基于前三种会话跟踪技术之一(一般是基于Cookie技术基础,如果浏览器禁用Cookie则可以采用URL重写技术),在每一次请求中只传输唯一一个参数:SESSIONID,即会话id,服务器根据此会话id开辟一块会话内存空间,以存放其他参数

    特点:会话数据全部存放在服务端,减轻了客户端及网络压力,但加剧了服务端压力。既然是基于前三种会话技术之一(Cookie、url重写、隐藏表单域),因此也具备其对应的几个特点

posted @ 2020-06-03 17:36  朝暮的小知识  阅读(134)  评论(0)    收藏  举报