HTTP协议:

超文本传输协议 , 是一个应用层的网络传输协议 !

特点:
    1.    简单, 快速.
    2.    无连接协议 , 每次连接服务器只处理一次客户端的请求 ,处理完毕, 立即断开.
    3.    无状态协议 , 处理请求, 以及进行响应时 ,没有记忆能力 !
    4.    支持多种不同的数据提交方式 ,GET/POST 等等
    5.    数据传输很灵活, 支持任意数据类型 .

HTTP协议的组成部分

1.    请求 
        请求由四部分组成:
            -    请求头
                    请求头部的信息, 由一个个的键值对组成 , 描述的是有关客户端的信息.
            -    请求体
                    GET请求没有请求体. 当请求方式为POST时 ,存在请求体, 请求体是用于存储数据的数据容器 !
            -    请求空行
                    请求头部与请求体之间的一行空白
            -    请求行
                    由一个个的键值对组成, 描述的是:描述了请求的方式,远端服务器地址 ,以及所使用的协议版本等信息.

2.    响应
        响应由三部分组成:
            -    响应头
                    响应头部的信息, 由一个个的键值对组成, 描述的是有关服务器的信息.
            -    响应体
                    服务器给客户端回复的主体内容 .
            -    响应行
                    描述了响应的协议版本, 响应状态码, 以及响应成功或失败的相关解释.

开发环境下: 代码部署到服务器后, 访问的路径:

http://ip地址:端口号/项目名/文件名.后缀名

HttpServlet 类

简介:
    是JavaWeb中的 三大组件之一 .
    本质上:     就是一个运行在tomcat中的  java类

作用:
    用于处理客户端的请求, 以及对客户端进行响应 .

步骤:
    1.    编写一个类, 继承自HttpServlet
    2.    重写父类的service(HttpServletRequest request,HttpServletResponse response)方法
    3.    在service方法中 对用户进行响应.

案例:
    public class Servlet1 extends HttpServlet{
        /**
         * @param request :        请求对象 , 包含了请求相关的所有信息
         * @param response :    响应对象 , tomcat提供的用于给客户端响应内容的 各种工具.
         */
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.    设置响应的 编码格式 以及 响应的内容类型
            response.setContentType("text/html;charset=utf-8");
            //2.    获取用于打印响应体的 打印流
            PrintWriter pw = response.getWriter();
            //3.    打印一些准备响应的内容
            pw.println("<h1>从前有座山 , 山上有座尼姑庵 ! 庵里有个老尼姑 ...</h1>");
            pw.flush();
            //当service方法执行完毕后, tomcat会将我们准备好的响应体发送给浏览器
        }
    }

将编写好的servlet 映射到一个网址上:

web3.0之前版本:
    修改项目中的配置文件 web.xml

    在web.xml根节点中 加入:

        1.    servlet节点 ,用于将serlvet类告知tomcat
            <servlet>
                <servlet-name>任意的标识符,给servlet起别名</servlet-name>
                <servlet-class>包名.类名<servlet-class>
            </servlet>
        2.    servlet-mapping , 通过别名告知tomcat ,某servlet的映射网址
            映射网址 ,通常以/开头 , 例如:        /demo1  , 访问网址: http://ip地址:端口号/项目名/demo1   
            <servlet-mapping>
                <servlet-name>要添加映射网址的别名</servlet-name>
                <url-pattern>/映射的网址</url-pattern>
            </servlet-mapping>

web3.0+    版本:
    通过WebServlet注解:

    案例:
    @WebServlet("/hello2")
    public class Servlet2 extends HttpServlet{
        /**
         * @param request :        请求对象 , 包含了请求相关的所有信息
         * @param response :    响应对象 , tomcat提供的用于给客户端响应内容的 各种工具.
         */
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.    设置响应的 编码格式 以及 响应的内容类型
            response.setContentType("text/html;charset=utf-8");
            //2.    获取用于打印响应体的 打印流
            PrintWriter pw = response.getWriter();
            //3.    打印一些准备响应的内容
            pw.println("<script>alert('恭喜你, 获得奖品: 苹果笔记本电脑一台 , 现金1980 ,请输入银行卡密码领取')</script>");
            pw.println("<input ><button onclick='alert(\"哈哈哈哈哈哈哈,你真信啊\")'>提交</button>");
            pw.flush();
            //当service方法执行完毕后, tomcat会将我们准备好的响应体发送给浏览器
        }
    }

Servlet的生命周期

指的是 Servlet从创建 到 消亡的 周期!

Servlet的创建时机:    默认情况 , 当用户第一次访问Servlet的映射地址时  . 对象创建.
Servlet的销毁时机:    当tomcat关闭, 或 项目从tomcat删除时. Servlet被销毁.

三个方法的体现:

    1.    init方法        :    此方法在对象创建后, 执行.
    2.    service方法    :    服务方法,当用户每一次访问时, 执行,  用于处理用户的请求, 以及对用户进行响应 .
    3.    destroy方法    :    当tomcat关闭 或 项目从tomcat删除时 执行;    

ServletConfig对象

是Servlet的配置对象, 每一个Servlet都拥有一个ServletConfig .

我们在web.xml中 进行Servlet配置时. 可以向一个Servlet中 添加初始化的参数. 
这些参数以键值对的形式存储在ServletConfig中


在web.xml中 , 向ServletConfig 存储数据的格式:
    <servlet>
        ...
        <!-- init-param标签可以存在多个, 每一个init-param都表示一个键值对 -->
        <init-param>
            <param-name>键</param-name>
            <param-value>值</param-value>
        </init-param>
    </servlet>

在Servlet中 得到ServletConfig对象的方式:     
    方式1与方式2是互斥的.

    方式1.
        在Servlet中, 重写生命周期init(ServletConfig config)方法 , 使用方法参数中的config对象
    方式2.
        在Servlet的任意代码位置 , 通过getServletConfig();方法. 得到对象

从ServletConfig 取出数据的格式:

    String value = config对象.getInitParameter(String name);

调整 Servlet的创建时机

在web.xml中 . 配置servlet时.

<servlet>
    <servlet-name...
    <servlet-class...
    <load-on-startup>数字</load-on-startup>
</servlet>

load-on-startup: 
    取值为数字: (默认值为-1)
        当值为负数时:    懒汉模式, 第一次请求时加载 , 
        当值≥0时 , 描述的是请求的顺序, 值越小越早加载.

        如果多个servlet值相同:    按照web.xml中servlet的配置顺序 自上而下加载.

如何接收用户 表单 的参数

1.    根据一个name , 接收单个参数 
        String value = request.getParameter(String name);    

2.    根据一个name , 接收一组参数
        String[] values = request.getParameterValues(String name);


11月      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!