Servlet规范

一、Servlet规范介绍:

1,servlet规范来自于JavaEE规范中的一种

2,作用

1)在Servlet规范中,指定【动态资源文件】开发步骤(给人看的)

2)在Servlet规范中,指定Http服务器调用动态资源文件规则

3)在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则

二、Servlet接口实现类:

1,Servlet接口来自于Servlet规范下一个接口,这个接口存在Http服务器提供jar包

2,Tomcat服务器下lib文件有一个servlet-api.jar存放Servlet接口(javax.servlet.Servlet接口)

3,Servlet规范中认为,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类

三、Servlet接口实现类开发步骤

1,第一步:创建一个Java类继承HttpServlet父类,使之成为一个servlet接口实现类

2,第二步:重写HttpServlet父类两个方法。doGet或者doPost。

3,第三步:将Servlet接口实现类信息【注册】到Tomcat服务器

【网站】--->【web】--->【WEB-INF】---> web.xml

<!--将Servlet接口实现类类路径地址交给Tomecat-->
<Servlet>
    <!--声明一个变量存储servlet接口实现类类路径-->
    <servlet-name>test</servlet-name>
    <!--声明servlet接口实现类类路径-->
    <servlet-class>com.yth.controller.OneServlet</servlet-class>
</Servlet>
<!--需要设置简短请求别名,方便访问-->
<servlet-mapping>
    <!--这里的变量名要与上边一致,表示给上述变量起别名-->
    <servlet-name>test</servlet-name>
    <!--设置别名-->
    <url-pattern>/one</url-pattern>
</servlet-mapping>

四、Servlet对象生命周期:

1,网站中所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建。开发人员不能手动创建Servlet接口实现类的实例对象

2,在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时,自动创建这个Servlet接口实现类的实例对象

在手动配置情况下,要求Http服务器在启动时自动创建某个Servlet接口实现类的实例对象

<servlet>
    <servlet-name>test</servlet-name>
    <setvlet-class>com.yth.controller.OneServlet</setvlet-class>
    <!--填写一个大于0的整数即可-->
    <load-on-startup>30</load-on-startup>
</servlet>

3,在Http服务器运行期间,一个Servlet接口实现类只能创建出一个实例对象

4,在Http服务器关闭时刻,自动将网站中所有的Servlet对象进行销毁

五、HttpServletResponse接口

1,介绍:

1):HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar

2):HttpServletResponse接口实现类由Http服务器负责提供

3):HttpServletResponse接口负责将doGet / doPost执行结果写入到响应体中交给浏览器

4):开发人员习惯将HttpServletResponse接口修饰的对象称为【响应对象】

2,主要功能:

1):将执行结果以二进制形式写入到【响应体】

PrintWriter out = response.getWriter();
out.print(result)

2):设置响应头中[content-type]属性值,从而控制浏览器使用对应编译器将响应体二进制数据编 译为【文字,图片,视频,命令】

response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");

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

String result = "http://www.baidu.com";
response.sendRedirect(result);

六、HttpServletRequest接口

1,介绍

1):HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar

2):HttpServletRequest接口实现类由Http服务器负责提供

3):HttpServletRequest接口负责在doGet / doPost方法运行时读取Http请求协议包中信息

4):开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】

2,作用

1):可以读取Http请求协议包中【请求行】信息

String url = request.getRequestURL().toString();
​
String method = request.getMethod();

2):可以读取保存在Http请求协议包中【请求头】或者【请求体】中请求参数信息

(浏览器以GET方式发送请求,请求参数保留在【请求头】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由Tomcat负责解码,Tomcat默认使用【UTF-8】)

(浏览器以POST方式发送请求,请求参数保留在【请求体】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由request负责解码,request默认使用【ISO-8859-1】)

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //通知请求对象,使用utf-8字符集进行解码
        req.setCharacterEncoding("utf-8");
        //通过请求对象获得【请求体】中【所有请求参数名】
        String value = req.getParameter("username");
        System.out.println("从请求体中得到的参数值:" + value);
    }
​
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过请求对象获得【请求头】中【所有请求参数名】
        String userName = request.getParameter("username");
        System.out.println("从请求头得到的参数值:" + userName);
    }

3):可以代替浏览器向Http服务器申请资源文件调用

七、请求对象和响应对象生命周期

1,在Http服务器接收到浏览器发送的【Http请求协议包】之后,自动为当前的【Http请求协议包】生成一个【请求对象】和一个【响应对象】

2,在Http服务器调用doGet / doPost方法时,负责将【请求对象】和【响应对象】作为实参传递到方法,确保doGet / doPost正确执行

3,在Http服务器准备推送Http响应协议包之前,负责将本次请求关联的【请求对象】和【响应对象】销毁

【请求对象】和【响应对象】的生命周期贯穿一次请求的处理过程中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值