Java面试题-day15 JSP相关知识点合集(续)

JSP相关知识点合集(续)

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

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

  • request: 用户端请求,此请求会包含来自 GET/POST 请求的参数
  • response: 网页传回用户端的回应
  • pageContext: 网页的属性是在这里管理
  • session: 与请求有关的会话期
  • application: 与当前应用对应的 ServletContext 对象, 应用中只有一个
  • out: 用来传送回应的输出 {}<%=%>
  • config: 与 jsp 配置对象的对象, 一般无用
  • page: jsp 对应的 Servlet 对象
  • exception: 针对错误网页,未捕捉的异常对象

2) 在JSP中提供了四种属性保存范围

在一个页面范围内:pagecontext
在一次服务器请求范围内:request
在一次会话范围内:session
 在一个应用服务器范围内:application

3) JSP请求是如何被处理的

浏览器首先要请求一个以.jsp 扩展名结尾的页面,发起 JSP 请求,然后,Web 服务器读取这个请求,使用 JSP 编译器把 JSP 页面转化成一个 Servlet 类。需要注意的是,只有当第一次请求页面或者是 JSP 文件发生改变的时候 JSP 文件才会被编译,然后服务器调用 servlet 类,处理浏览器的请求。一旦请求执行结束,servlet 会把响应发送给客户端。这里看下如何在 JSP中获取请求参数。

4) jsp有哪些动作? 作用分别是什么?

jsp:include:在页面被请求的时候引入一个文件。
jsp:forward:把请求转到一个新的页面。
jsp:useBean:寻找或者实例化一个 JavaBean。
jsp:setProperty:设置 JavaBean 的属性。
jsp:getProperty:输出某个 JavaBean 的属性。

5) JSP中动态 INCLUDE与静态 INCLUDE的区别?

  1. 动态包含: 用jsp:include, 包含的动作是在 jsp 对应的 Serlet 处理请求时去执行的,每次请求都会执行.
  2. 静态包含: 用 include 指令, 包含的动作是在 jsp 被编译成 java 文件时执行的,只有第一次请求时执行.

6) Cookie

Cookie是服务器端保存在客户端的一组资源。
应用:在登陆时会问是否要记住密码,或是在一定时间不用再登陆,这样的功能就是通过Cookie实现的。

 public void addCookie(Cookie cookie)
 Cookie是通过服务器设置到客户端上去的,用response对象。
 如果要在服务器端取得Cookie,用request对象。
 如果要Cookie长留在本地计算机上,可以设置Cookie的保存时间。(此时就可以在新的页面中取出Cookie的值)
Cookie是保存在客户端上的信息,安全性较差,不要把过多的隐秘信息保留在Cookie中,这样不安全。
 Cookie可以用setMaxAge设置最大保留时间
 服务器端在客户端第一次访问之后,会设置一个默认的Cookie在客户端上:JsessionID

7) Session

session对象:主要用于保存用户的各种信息,直到它的生命周期(一般为900s)超时或人为释放掉为止。用户只要一连接到服务器,就立刻分配一个session给用户。
可以通过session对象来判断此用户是否是合法用户

Session的主要方法:
 服务器上通过sessionID来区分不同的用户, 任何连接到服务器上的用户,服务器都会为之分配唯一的一个不会重复的sessionID。session.getId() ,长度为:32
 判断是否是新的session。Session.isNew()
 设置属性:
public void setAttribute(String name,Object value)
 取得属性:
public Object getAttribute(String name)
 删除属性
public void removeAttribute(String name)
让用户的session失效
Session.invalidate()
 取得用户最后一次操作的时间
public long getLastAccessedTime()
获得创建时间
public long getCreationTime();

8) 说说你对 Cookie与 Session技术的理解?

cookie 是一种浏览器端的缓存技术, 而 Session 是一种服务器端的缓存技术(依赖 cookie)
session和cookie用于跨网页共享数据
session:记录独有的个人信息,在不同的页面中传递。

主要方法:setAttribute(),getAttribute()

cookie:保存于客户端,供浏览器与Web服务器互通数据用的纯文字文件。当IE执行时,会在计算机中产生一个cookie。
session将信息保存在服务器上,而cookie保存在客户端上。
session比cookie更安全,session比cookie更占用资源。

开发原则:session少用。尽量少向session中保存信息。Session使用了cookie的机制,如果cookie禁用,则session也无法使用。此时可以使用URL地址重定向解决。
当客户端第一次访问web应用或者第一次使用request.getSession()获取HttpSession时,Servlet容器会创建Session,生成一个long类型的唯一ID(你可以使用session.getId()获取它)并把它保存在服务器的内存里。Servlet容器同样会在HTTP响应里设置一个Cookie,cookie的名是JSESSIONID并且cookie的值是session的唯一ID。
根据HTTP cookie规范(正规的web浏览器和web服务器必须遵守的约定),在cookie的有效期间,客户端(web浏览器)之后的请求都要把这个cookie返回给服务器。Servlet容器会利用带有名为JSESSIONID的cookie检测每一个到来的HTTP请求头,并使用cookie的值从服务器内容里获取相关的HttpSession。

HttpSession会一直存活着,除非超过一段时间没使用。你可以在web.xml里设定这个时间段,默认时间段是30分钟。因此,如果客户端已经超过30分钟没有访问web应用的话,Servlet容器就会销毁Session。之后的每一个请求,即使带有特定的cookie,都再也不会访问到同一个Session了。servletcontainer会创建一个新的Session。

另外,在客户端的session cookie拥有一个默认的存活时间,这个时间与浏览器的运行时间相同。因此,当用户关闭浏览器后(所有的标签或者窗口),客户端的Session就会被销毁。重新打开浏览器后,与之前的Session关联的cookie就再也不会被发送出去了。再次使用request.getSession()会返回一个全新的HttpSession并且使用一个全新的session ID来设置cookie。

购物车最好使用cookie,但是cookie是可以在客户端禁用的,这时候我们要使用cookie+数据库的方式实现,当从cookie中不能取出数据时,就从数据库获取。

9) 自动登陆功能的编码实现?

  1. 登陆功能是用 Session 实现的,就是向 Session 对象中保存当前用户的对象2. 自动的功能由Cookie 实现, 在登陆时将用户的信息保存为持久化 Cookie
  2. 下次访问时, 读取请求中如果有用户信息的 Cookie 就可以自动登陆

10) 如何防止表单重复提交?

答: 使用 Session 技术:

  1. 在 regist.jsp 页面中生成一个唯一随机值, 将其保存到 Session 中, 同时将其保存为表单的隐藏域的值
  2. 在处理注册的请求时,获取 Session 中值,获取请求参数的值,比较两者是否相同, 如果相同说明不是重复提交,请求通过同时删除 session 中保存的值,如果不相同则是重复提交, 不能通过。

11) 结合项目谈谈你对MVC的理解

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。

MVC中的模型、视图、控制器它们分别担负着不同的任务。

  • 视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
  • 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性
  • 控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
    然后根据处理的结果调用相应的视图来显示处理的结果。

MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。
如在项目中要对应MVC的话:View 对应项目中Jsp,Controler对应Action,Model 对应service+dao层的业务逻辑和持久层的操作。

Guess you like

Origin blog.csdn.net/m0_56368068/article/details/120943015