Servlet规范

servlet接口实现类开发步骤

注意

在web开发过程中,只有作为Servlet接口实现类才有资格作为动态资源文件。
Servlet接口由http服务器厂商负责提供
接口来自于这个包:F:\JAVA\apache-tomcat-9.0.45-windows-x64\apache-tomcat-9.0.45\lib\servlet-api.jar!\javax\servlet

该过程中需要使用的到抽象类,抽象类的作用是:1.降低接口实现类对接口实现过程难度。2.将接口中不需要使用的抽象方法交给抽象类进行完成。3.这样接口只需要对需要使用的方法进行重写

servlet接口:
init,
getservletconfig,
getservletinfo,
destory ----------这四个方法对于servlet接口实现类没有用。
service() 这个方法有用。

Tomcat根据Servlet规范调用Servlet接口实现类规则:
Tomcat有权创建Servlet接口实现类实例对象

Servlet  OneServlet=new  OneServlet();

Tomcat根据实例对象调用Service方法处理当前请求
OneServlet.service()

第一步

创建一个java类继承于httpServlet这个父类,使之成为一个Servlet接口实现类

package com.bjpowernode.controller;
import javax.servlet.http.HttpServlet;
public class OneServlet extends HttpServlet {

}

第二步

重写HttpServlet 父类两个方法Get()和Post();


public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
        System.out.println("Oneservlet类针对浏览器发送get请求方式处理");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Oneservlet类针对浏览器发送post请求方式处理");
    }
}

第三步

将servlet接口实现类信息注册到Tomcat服务器
【网站】----》【web】----》【WEB-INF】----》web.xml

 <!--将servlet接口实现类类路径地址交给Tomcat-->
    <servlet>
        <servlet-name>OneServlet</servlet-name> <!--声明一个变量存储servlet接口实现类类路径 -->
        <servlet-class>com.bjpowernode.controller.OneServlet </servlet-class><!--声明servlet接口实现类类路径 -->
    </servlet>
    <!--Tomcat String mm=" com.bjpowernode.controller.OneServlet"-->
    <!--为了降低用户访问servlet接口实现类的难度,需要设置简短请求别名 -->
    <servlet-mapping>
        <servlet-name>OneServlet</servlet-name>
        <url-pattern>/one</url-pattern><!--设置简短的请求别名,必须以‘/’开头 -->
    </servlet-mapping>
    <!--
    当请求别名设置好了以后,如果浏览器要向Tomcat索要Oneservlet时地址
    http://localhost:8080/myweb/one
    -->

Servlet生命周期

1.网站中的所有servlet接口实现类实例对象只能有http服务器负责创建,开发人员不能手动创建这个servlet接口实现类实例对象。
2.在默认情况下,http服务器接收到对于当前servlet接口实现类第一次请求时会自动创建这个servlet接口实现类实例对象
在手动配置情况下,要求http服务器在启动时自动创建某个servlet接口实现类的实例对象。

    <servlet>
        <servlet-name>mm</servlet-name><!--声明一个变量存储servlet接口实现类类路径 -->
        <servlet-class>com.bgpowernode.count.oneservlet</servlet-class><!--声明servlet接口实现类类路径 -->
        <load-on-startup>30</load-on-startup><!-- 填写一个大于0的整数 表示在Tomcat启动时就要将该命令用于对象-->
    </servlet>

3.在http服务器运行期间,一个servlet接口实现类只能被创建出一个实例对象。
4.在http服务器关闭时,会自动将网站中所有servlet对象销毁。

HttpServletResponse接口

介绍

1.HttpservletResponse接口来自于servlet规范中,在Tomcat中存在servlet-api.jar
2.HttpservletResponse接口实现类由Http服务器负责提供
3.HttpServletResponse接口负责将docet/doPost方法执行结果写入到【响应体】交给浏览器
4.一般将HttpServletResponse接口修饰的对象称为“响应对象”

主要功能

1.将执行结果以二进制的形式写入响应体
2.设置响应头中[content-type]属性值,从而控制浏览器使用对应编译器将响应体二进制数据编译为【文字,图片,视频,命令】;

response.setContentType("text/html;charset=utf-8");

在默认的情况下,content-type属性的值"text" content-type="text"此时浏览器将会采用【文本编译器】对响应体二进制数据进行解析

3.设置响应头中【location】属性,将一个请求地址赋值给location.从而控制浏览器向指定服务器发送请求

response.sendRedirect("http://www.baidu.com");//当浏览器接收到响应包后如果发现响应头中带有location属性,将自动通过地址栏向location指定网站发送请求。sendRedirect方法远程控制浏览器请求行为【请求地址,请求方式,请求参数】

HttpservletRequest接口

介绍:

  1. HttpservletRequest接口来自
    于servlet规范中,在Tomcat中存在servlet-api.jar
    2)HttpservletRequest接口实现类由Http服务器负责提供
    3)HttpservletRequest接口负责在doGet/doPost方法运行时读取Ettp请求协议包中信息
    4)开发人员习惯于将HttpservletRequest接口修饰的对象称为【请求对象】

作用:

1)可以读取Http请求协议包中【请求行】信息
2)可以读取保存在Htp请求协议包中【请求头】或则【请求体】中请求参数信息
3)可以代替浏览器向Http服务器申请资源文件调用

请求转发解决方法

在这里插入图片描述

Cookie

介绍

1)cookie来自于servlet规范中一个工具类,存在于Tomcat提供servlet-api.jar中
2)如果两个servlet来自于同一个网站,并且为同一个浏览器/用户提供服务,此时借助于cookie对象进行数据共享
3)Cookie存放当前用户的私人数据,在共享数据过程中提高服务质量

原理

用户通过浏览器第一次向Myweb网站发送请求申请oneservlet.oneservlet在运行期间创建一个cookie存储与当前用户相关数据oneservlet工作完毕后,【将cookie写入到响应头】交还给当前浏览器。
浏览器收到响应响应包之后,将cookie存储在浏览器的缓存
一段时间之后,用户通过【同一个浏览器】再次向【myweb网站】发送请求申请Twoservlet时【浏览器需要无条件的将myweb网站之前推送过来的cookie,写入到请求头】发送过去此时Twoservlet在运行时,就可以通过读取请求头中cookie中信息,得到oneservlet提供的共享数据

实现命令

同一个网站oneservlet 与Twoservlet借助于cookie实现数据共享
在这里插入图片描述
在这里插入图片描述

Httpsession接口

介绍

  1. Httpsession接口来自于servlet规范下一个接口。存在于Tomcat中servlet-api.jar其实现类由Http服务器提供。Tomcat提供实现类存在于servlet-api.jar
  2. 如果两个servlet来自于同一个网站,并且为同一个浏览器/用户提供服务,此时
    借助于Httpsession对象进行数据共享
  3. 开发人员习惯于将Httpsession接口修饰对象称为【会话作用域对象】

httpsession 与 Cookie 的区别

  1. 存储位置:一个在天上,一个在地下
    cookie:存放在客户端计算机(浏览器内存/硬盘)
    Httpsession:存放在服务端计算机内存
  2. 数据类型
    cookie对象存储共享数据类型只能是string
    Httpsession对象可以存储任意类型的共享数据object
  3. 数据流量
    一个cookie对象只能存储一个共享数据
    Httpsession使用map集合存储共享数据,所以可以存储任意数量共享数据
  4. 参照物
    cookie相当于客户在服务端【会员卡】
    Httpsession相当于客户在服务端【私人保险柜】

httpsession命令实现

同一个网站下OneServlet将数据传递给TwoServlet

在这里插入图片描述
Http服务器如何将用户与HttpSession关联起来
cookie
5.getSession() 与 getSession(false)
1)getSession(): 如果当前用户在服务端已经拥有了自己的私人储物柜.
要求tomcat将这个私人储物柜进行返回
如果当前用户在服务端尚未拥有自己的私人储物柜
要求tocmat为当前用户创建一个全新的私人储物柜

2)getSession(false):如果当前用户在服务端已经拥有了自己的私人储物柜.
要求tomcat将这个私人储物柜进行返回
如果当前用户在服务端尚未拥有自己的私人储物柜
此时Tomcat将返回null

6.HttpSession销毁时机:

1.用户与HttpSession关联时使用的Cookie只能存放在浏览器缓存中.
2.在浏览器关闭时,意味着用户与他的HttpSession关系被切断
3.由于Tomcat无法检测浏览器何时关闭,因此在浏览器关闭时并不会
导致Tomcat将浏览器关联的HttpSession进行销毁
4.为了解决这个问题,Tomcat为每一个HttpSession对象设置【空闲时间】
这个空闲时间默认30分钟,如果当前HttpSession对象空闲时间达到30分钟
此时Tomcat认为用户已经放弃了自己的HttpSession,此时Tomcat就会销毁
掉这个HttpSession

7.HttpSession空闲时间手动设置
在当前网站/web/WEB-INF/web.xml

    <session-config>
 <session-timeout>5</session-timeout> <!--当前网站中每一个session最大空闲时间5分钟-->
 </session-config>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值