java入门->servlet基础

Servllet

    什么是Servlet

        Servlet是sun提出的,用于在服务器端处理HTTP协议的组件;

    servlet特征

        1)可以给浏览器返回动态的HTML,图片等资源(处理http协议);

        2)Servlet是服务端的组件,必须部署(拷贝)在服务器上才能运行;

        3)Servlet:必须满足相关的规范;

    服务器:java服务器,javaWeb服务器,Servlet服务器:就是一个软件;

    Http协议:

        1)它就是一个规范,约定了浏览器和服务器如何通信,以及通信的数据格式;

        2)如何通信:a:建立连接;b:发送请求;c:接收响应;d:关闭连接;

             特点:一次请求一次连接,此种连接方式可以最大限度的降低服务器的压力;

        3)数据格式:请求数据:请求行(协议类型,路径,请求方式)

                                                 消息头(请求数据的描述信息)

                                                 实体内容(浏览器向服务器发送的数据)                

                                响应数据:状态行(协议类型,状态)

                                                  消息头(响应数据的描述信息)

                                                  实体内容(服务器向浏览器发送数据)

        4)如何处理HTTP协议

              1:如何通信:浏览器和服务器已经实现了该通信过程,实际上他们内部都有通信组件专门处理通信事宜;

              2:处理数据:服务器通过Servlet处理数据:request:用来处理(接收)请求数据;

                                                                                     response:用来处理(发送)响应数据;

    请求方式:

        1)浏览器向服务器发送请求及传递数据的方式;

        2)需要掌握的两种方式:

             2.1)get:采用URL传参,即浏览器会将参数附加在URL后面传递给服务器;

                              参数在传递过程中可见,隐私性差;

                              因为URL大小有限制,因此传递的数据受限,一般很小。

            2.2)Post:采用实体内容传参;

                               参数在传递过程中不可见;

                               实体内容大小不受限制;

        3)使用场景:

            3.1)默认:

                          表单默认使用get请求传参;

                          超链接发出的请求是get请求;

                          地址栏直接输入的地址是get请求;

            3.2)get:向服务器获取数据时;

            3.3)post:向服务器提交数据时;

    乱码问题:

        1)产生原因:编码和解码不一致导致的;

        2)get请求解决方案:

            2.1)修改/tomact/config/server.xml 在70行增加URIEncoding='UTF-8';

            2.2)让Servlet接收乱码,然后使用ISO 8859-1 将字符串还原成byte,再使用UTF-8将其转成String即可;

        3)post请求解决方案:

            在获取数据前,使用request设置实体内容的解决方式为UTF-8, req.setCharactorEncoding('UTF-8');

        4)响应时的解决方案:

            设置编码:res.setCharacterEncoding('UTF-8')

            设置解码:res.setContextType('text/html;charset=utf-8')

        5)总结:get请求尽量不传中文

                        post请求:req.setCharactorEncoding('UTF-8');

                        响应时:res.setContextType('text/html;charset=utf-8');

    JavaBean:

        1)必须有包;2)有默认的构造器;3)实现序列化接口;4)通常有get/set方法;

    servlet路径有3种配置方式,不同的方式其处理请求的能力不同;

        1)精确匹配(/add)

             1.1)只有这个唯一的名字可以访问Servlet;

             1.2)该Servlet只能处理这一种请求;

             1.3)试用于请求较少的项目;

        2)通配符(/*)

             2.1)任何请求都可以访问该Servlet;

             2.2)该Serviet可以处理一切请求;

             2.3)试用于请求较多的大项目;

        3)后缀(*.xxx)

            3.1)带有xxx后缀的请求可以访问servlet;

            3.2)该Servlet能处理所有.xxx后缀的请求;

            3.3)试用于一个Servlet处理一类(多个)请求;

    Servlet生命周期:

        1)实例化;  2)初始化;   3)就绪;   4)销毁;

    Context(上下文/环境)  

        1)可以给其内部的个体提供资源;

        2)可以给其相关的对象提供数据;

              ServletConfig-->Servlet;ServletConfig和Servlet是1对多的关系;可以将其理解为Servlet的私有环境;

    ServletContext

        1)是Servlet公有的环境;

        2)其数据可以被所有的Servlet共用;

        3)ServletContext和Servlet是1对多的关系;

        程序运行过程中,产生的共享数据可以存入Context;

         存:ctx.setAttribute("名称","值");

         取:ctx.getAttribute("名称");

    URI是uniform resource identifier 统一资源标识符,用来唯一的标识一个资源;

    URL是uniorm resource locator 统一资源定位器,是一种具体的URI,即URL可以用来标识一个资源,而且还只明了如何

    定位这个资源;

    URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则;

    URL类不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的;

    隐含(内置)对象

        1.request (*) HttpServletRequest;  

        2.response (*) HttpServletResponse;

        3.out      JspWriter;

        4.config    ServletConfig;

        5.application *   ServletContext

        6.exception      Throwable Jsp发生异常,只有在发生异常时可用;

        7.session (*)    HttpSession

        8.page *    Object   就代表当前页面,相当于this;

        9.pageContext  pageContext 页面的环境,用于给页面提供数据,该对象引用其它8个对象;

HTTP协议:

    状态管理

        HTTP协议是一种无状态的协议,每次连接处理一个请求;

        总结:HTTP协议下的服务器不认识浏览器,如果有些业务需要记住的话,就需要对状态进行管理;

    状态:

        就是一份数据,用于证明浏览器曾经访问过服务器;

        可以是任意的数据,只要能证明即可;  

    实现:HTTP协议是无状态协议;要想做状态管理,必须:

        1)Cookie:将数据存到浏览器;服务器压力小,但不安全,数据容易被改;

        2)Session:将数据存在服务器上,服务器压力大,但安全;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值