Servlet之间的交互

Servlet-平常笔记3面试


Web之间的跳转和信息共享

  Servlet之间的交互:信息共享和相互跳转。跨域

 

Web组件之间的跳转:

  1)三种类型:请求转发(forward)、URL重定向(redirect)、请求包含(include)。浏览器

  请求转发:session

    用法:request对象.getRequestDispatcher(String path).forword(request, response);app

    参数:path表示目标资源名称(就是要跳转到哪里)。spa

forward(request, response)才是跳转,不能漏对象

  URL重定向: blog

    用法:response对象.sendRedirect(String path);接口

    参数:path表示目标资源名称。生命周期

  常见面试题:转发和URL重定向的区别。

请求转发 URL重定向
不改变浏览器地址路径 浏览器地址改变
跳转先后是同一个请求,共享数据  跳转先后是两个不一样的请求,数据不共享
不能够跨域访问资源 能够跨域访问资源
能够访问WEB-INF下的资源 不能够访问WEB-INF下的资源
最终响应输出有跳转后的决定 最终响应输出有跳转后的决定

 

Web组件的四大做用域对象

  四大做用域对象从小到大分别为:pageContext、request、session、application。

名称 类型 描述
pageContext PageContext 当前JSP页面范围
request HttpServletRequest 当前请求范围,同一个请求中,有效,每次请求都是新的请求对象
session HttpSession 当前会话范围,(通常浏览器不关闭就在)同一个session中共享会话
application ServletContext 当前应用范围,Tomcat开启就建立该对象(有且只有一个),直至Tomcat关闭

 

  操做:

  设置共享信息:

    域对象.setAttribute(String name, Object value);

  获取共享信息:

    Object value = 域对象.getAttribute(String name);

  修改共享信息:

    从新设置一个同名属性

  删除共享信息:

    域对象.removeAttribute(String name);

  1.通常登录信息存放在Session中。

  2.组件之间的数据共享存放在request中,此时只能使用请求转发。

 

ServletContext接口

  Web容器在启动时,会建立一个ServletContext对象,当容器关闭时,对象被销毁,在整个Web生命周期中,只有该对象,表示当前的应用。


  如何获取ServletContext对象:

  1)若在Servlet中,使用super.getServletContext获取。 GenericServlet实现了Servlet和ServletConfig接口,而getServletContext方法就在ServletConfig接口中。

  2)经过请求对象获取:

    request对象.getServletContext();  Tomcat7开始支持

    request对象.getSession().getServletContext();

  经常使用方法:

  1)String getContextPath(); 获取当前应用的上下文路径。

  2)StringgetRealPath(String path); 获取资源的绝对路径。

  3)全局初始化参数:

  

  获取全局的初始化参数,就不能使用ServletConfig对象.getInitParameter来获取,而应该使用ServletContext对象.getInitParameter来获取。

 

   在总结的最后发现,getParameter()方法和getAttribute()方法好像都能获取信息,那他们有什么区别呢?

  百度了一下,他们的用途不同,前者多用于获取用户输入的信息,如表格;后者多用于开发者本身设置的用来共享的信息。

相关文章
相关标签/搜索