7 Servlet交互和作用域对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7 Servlet交互和作用域对象相关的知识,希望对你有一定的参考价值。

1.多个web组件进行跳转(加上/就是绝对路径)

WEB组件跳转的三种方式:(组件包括Servlet,jsp,Filiter)
     ①.请求转发(forword)
       request对象.getRequestDispatcher(String path).forword(request,response);
        特点:
         地址栏不变
                 AServlet和BServlet共享同一个请求(共享请求数据)
         页面响应的数据是有BServlet决定的
         不能跨域访问
         可以访问WEB-INF下面的资源
 ②.URL重定向(redirect)
         response对象.sendRedirect(String path);
     特点:
          地址栏中的地址改变
          AServlet和BServlet各自发一个请求(不能共享请求数据)
          页面响应的数据是由BServlet决定的
          可以跨域访问
          不能访问WEB-INF下面的资源

              1.1使用请求转发
           需要在同一个请求对象中共享数据
           需要访问WEB-INF下面的资源
      1.2.使用URL重定向
           需要跨域访问
           使用URL重定向可以防止表单重复提交

          1.3.请求包含(include)

2.需要多个页面跳转共享数据要依赖作用域对象(web组件的3大作用域)

  对象名称                   数据类型                 对象描述

 request                        HttpServletRequest    在一个请求中共享数据
 session                        HttpSession           在一个会话共享数据
(ServletContext)application     ServletContext      在一个应用中共享数据

 所有作用域对象设置/获取数据一样:
     设置共享数据:
         作用域对象.setAttribute(String name,Object value);
     获取共享数据:
         作用域对象.getAttribute(String name);

   各自的作用共享的数据只能在各自的作用域中取出来,不能跨作用域取共享数据

3.ServletContext接口和常用方法

     接口ServletContext就是上下文
 获取ServletContext对象:
         ServletContext ctx=request.getSession().getServletContext();
  获取当前应用的上下文路径:
           String path=ctx.getContextPath();
  获取当前项目的根路径:
           ctx.getRealPath(String name);
  获取全局的初始化参数:
           ctx.getInitParameter(String name);
      获取局部的初始化参数:
           super.getInitParameter(String name);

全局初始化参数的配置:
      <context-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
 </context-param>

4.JSP

 ①.JSP的原理:
   JSP文件-->Servlet类-->编译成字节码-->解释执行

   JSP底层使用Servlet输出流输出html代码片段

  JSP语法:
          输出数据到页面上:<%= %>
      相当于在servlet中的service方法写java代码:<% %>

 ②.JSP的三大指令:
        page/include/taglib
  指令的语法:
       <%@  指令名称  属性名称="属性值"%>
      2. include(静态包含,包含其他组件)
            语法:<%@ include file=""%>
        动态包含:<jsp:include page=""/>
          3.taglib(引入外部标签)
          <%@taglib uri="" prefix=""%>
 ③.JSP的九大内置对象
        pageContext   在当前页面共享数据
    request       在一个请求共享数据
    session        在一个会话中共享数据
    application     在一个应用中共享数据
    response        响应对象
    exception       异常对象
    config          获取初始化配置参数对象
    out            输出流对象
    page          当前servlet对象

 ④.JSP的四大作用域
    pageContent
request
session
application
 ⑤.JSP的动作元素
        <jsp:include/>
    <jsp:forward/>
    <jsp:param/>:在包含和转发时,利用该标签传递请求参数

       静态包含和动态包含的区别:
          静态包含在翻译的时候,将多个JSP合并翻译成一个Servlet
      动态包含在翻译时,每个jsp文件都会翻译成对应的Servlet,
      在程序运行加载到JVM中的时候动态合并
       动态包含可以传递参数
 ⑥.改JSP的模版文件
     JSP Files-->Templates-->New JSP File(html)

以上是关于7 Servlet交互和作用域对象的主要内容,如果未能解决你的问题,请参考以下文章

Python - 模块

JSP九大内置对象及四个作用域

JSP九大内置对象及四个作用域

jsp四大作用域和servlet三大作用域及内置对象

java web 九大内置对象和四个作用域之间的关系是啥?

JS作用域作用域链