servlet(3)

常见的网络访问后缀:

-   .html   : 网页
-   .htm    : 网页
-   .php    : php技术实现的动态网页
-   .jsp    :   Java Server pages Java代码+HTML代码实现的动态网页
-   .do     :   JavaEE 的 Struts1 建议使用.do结尾
-   .action :   JavaEE 的 Struts2 建议使用.action结尾

ServletContext 了解

(此技术, 在Servlet中 应用较少, 但是在后期的JSP技术中, 它很重要 ,它是JSP九大隐含对象之一, 是四大域对象中范围最大的, 表示整个应用(application)! )

Servlet上下文环境 ! 

用于关联多个Servlet 

是Servlet之间通信的桥梁, 用于在多个Servlet之间 进行数据的共享 !

-----------------------------------------

ServletContext , 在每一个项目中, 存在且只存在一个 , 当tomcat启动时, 会为每一个项目创建一个ServletContext对象, 当Tomcat关闭 , 或应用被卸载时, 销毁ServletContext


在使用上, 我们可以将它当作一个每个Servlet 都可以获取引用的MAP集合,   我们可以在这个ServletContext中, 存储 / 删除 / 获取 数据 !

如何从Servlet中 获取ServletContext

ServletContext context = getServetContext();

    这个方法,  是HttpServlet的方法!  所以我们的Servlet都可以直接在 service/doget/dopost 方法中 调用此方法, 获取上下文 !

获取 / 设置 / 删除 ServletContext的属性(Attribute) 

-   获取属性: 
    Object value = context.getAttribute(String key);

-   设置属性:
    context.setAttribute(String key,Object value);

-   删除属性:
    context.removeAttribute(String key);

获取当前项目运行时所在的文件夹

String dir = getServletContext().getRealPath("/");

ServletConfig 了解

是Servlet的配置对象, 每一个Servlet都拥有一个配置对象
获取ServletConfig对象
两种方式:  

    两种方式建议选择一种使用: 

    -   在Servlet中 , 通过getServletConfig方法获取

    -   重写init方法, 得到参数列表中的 ServletConfig对象
通过web.xml 向Servlet添加初始化参数!
<servlet>
    <servlet-name></servlet-name>
    <servlet-class></servlet-class>
    <init-param>
        <param-name>key</param-name>
        <param-value>value</param-value>
    </init-param>

</servlet>
通过ServletConfig对象, 获取初始化参数
//通过一个key , 获取一个初始化的值
String value = config.getInitParameter(String key);

//获取所有的key
String[] keys = config.getInitParameterNames();

JDBC + Servlet

图书管理系统: 


目前:  

    M   :   model   :   编写好的一个个具备功能的对象模型

    V   :   view    :   JSP

    C   :   controls:   Servlet

请求的 重定向 与 转发 *****

请求转发与重定向, 在一次操作流程中, 可以发生多次 ! 

切记, 一定要存在出口 (一定要进行具体的响应) !
请求转发
一个web组件 , 将未处理完毕的请求, 通过tomcat 转交给另一个web组件进行处理 !

步骤: 

    1.  在处理请求的操作中, 获取请求转发器
        RequestDispatcher rd = request.getRequestDispatcher("转发的地址");           

    2.  通过请求转发器, 开始转发请求 
        rd.forward(request,response);

    在一段代码里, 只会出现一个请求转发的逻辑 , 所以一般我们都是简写如下: 

        request.getRequestDispatcher("转发的地址").forward(request, response);

注意: 

    在请求转发操作后的代码中, 不能再出现请求转发 / 重定向 / 响应 等操作 !

特点: 
    1.  转发过程中, 各个web组件之间, 共享请求对象 与 响应对象 !

    2.  请求转发, 浏览器只发起了一次请求, 浏览器地址不会发生改变 !

    3.  转发的操作, 只能转发到当前项目中的web组件 !
在请求转发过程中, 多个web组件之间 可以通过请求对象, 共享数据 !
因为请求转发流程中所有的web组件 共享 一个请求对象, 所以我们可以在请求对象中, 将数据进行存储 , 以达到数据传递的效果 !


请求对象 可以存储 / 删除 / 获取 Attribute :
-   获取属性: 
    Object value = request.getAttribute(String key);

-   设置属性:
    request.setAttribute(String key,Object value);

-   删除属性:
    request.removeAttribute(String key);
请求重定向 *****
格式: 

    response.sendRedirect("地址");

原理: 

    当客户端请求服务器中的一个web组件时, 组件给客户端返回了一个302的状态码 , 和一个location地址 !

    当浏览器接收到服务器返回的302状态码以后. 会立即向location发起一个新的请求 !

特点: 

    1.  在请求重定向的过程中, 产生了两次请求  和 两次响应 

    2.  在用户看来, 用户浏览器地址发生了改变

    3.  重定向可以  将 请求重定向至  外部服务器地址 !
 

猜你喜欢

转载自www.cnblogs.com/zymssg/p/10333159.html