• java复习web篇——servlet


      1.Servlet

    Servlet的概述: 就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.Servlet就是SUN公司提供的一个动态网页开发技术.
    2.5版本:基于配置式开发(web.xml)
    3.0版本:基于注解式开发
    Servlet的作用:
        它会基于HTTP协议, 在服务器端接收客户端发出的请求, 然后进行相应的业务逻辑处理, 处理完了以后, 会向客户端返回一个响应


      2.使用Servlet:
        (1). 编写一个类
            1. 实现servlet 接口
            2. 继承GenericServlet 类
            3. 继承HttpServlet 类
                实际开发使用
            一般要实现servlet的话, 都是通过继承HttpServlet 类


        (2). 将编写的这个类配置到服务器中.
            配置web.xml
                注意: url-pattern 的值不可以出现重复的, 否则tomcat 启动失败
     
      3.使用ServletRequest接收参数:
        * String getParameter(String name);  ------用于接收一个名称对应一个值的数据.
        * String[] getParameterValues(String name);  ------用于接收一个名称对应多个值的数据.
        * Map getParameterMap();------用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.
        * Enumeration getParameterNames()-------用于获取表单中提交的所有的参数的名称.
     
      4.servlet 执行过程:
        1. 根据浏览器的servlet访问的标识去项目中的web.xml文件中去找相匹配的url-pattern的值
        2. 去servlet-mapping中的servlet-name 标签中去获取值
        3. 去servlet标签中的servlet-name 的标签中去找相匹配的值
        4. 去servlet-class中找到servlet的路径, 通过反射的方式来让相对应的servlet运行
     
      5.Servlet的生命周期
        servlet 何时被创建, 何时被销毁
            当客户端向服务器端发出一个请求的时候, 服务器端首先会判断对应的servlet是否已经被初始化了, 如果该servlet没有被初始化的话, 那么首先会执行init() 对该servlet进行初始化, 接着运行service(), 如果该servlet已经被初始化了, 那么直接运行service(), 当服务器关闭的时候, 会执行destory() 销毁servlet
                init()
                    只会被运行一次, 初始化servlet的时候
                service()
                    每次操作servlet的时候, 都会被执行
                destory()
                    只会执行一次, 销毁servlet


      6.扩展的标签: <load-on-startup>
        用来控制servlet什么时候被初始化---- 写在<servlet></servlet>标签中
        如果该标签没有被设置或者值为负数, 那么该servlet只有被访问的时候才会被初始化, 如果该标签的值为正数的话, 那么当服务器一启动该servlet就会被初始化
        注意: 值必须为整数, 当为正整数的时候, 值必须大于1, 值越小优先级越高

      7. HTTP协议超文本传输协议

    定义:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
    作用:规定浏览器和服务器的数据交互的格式.


    (1)HTTP协议的特点:
        基于请求和响应的模型
                * 必须先有请求后有响应.
          * 请求和响应必须成对出现.
        默认的端口号是80.


    (2)HTTP协议的请求部分

     客户端 :(浏览器, 手机, 平板) 发出请求, 发送给服务器端
        请求行:
            请求方式:GET和POST的区别
                * GET的提交的参数会显示到地址栏上,而POST不显示.
                * GET往往是有大小限制的,而POST没有大小的限制.
                * GET没有请求体,而POST有请求体.
                * 提交路径:
                * 协议版本:
        请求头:都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
             User-Agent:代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
              Referer:代表的是网页的来源. --- 防盗链.
            If-Modified-Since:通常与响应中的头Last-Modified一起使用查找本地缓存
        请求体:
            封装POST提交方式的提交的参数


    (3)HTTP协议的响应部分

     服务器:发出响应, 发送给客户端
        响应行:
                * 协议版本
                * 状态码        :
                        * 200    :成功
                        * 302    :重定向
                        * 304    :查找本地缓存
                        * 404    :资源不存在
                        * 500    :服务器内部错误
                * 状态码描述


        响应头:键值对,一般一个key对应一个value,也有一个key对应多个value
            * Last-Modified:与请求中的If-Modified-Since一起使用查找本地缓存.
            * Content-Dispostion    :文件下载的使用使用的一个头信息.
            * Location    :重定向的跳转的路径.
            * Refresh:定时刷新/定时跳转.

    响应头是用来修饰响应体的
        setHeader("",""):一个key 对应一个value
        addHeader(): 一个key 对应多个value


        响应体:
            显示浏览器的页面的内容
    用来设置需要返回给客户端的信息
        getWriter().write()
        getOutputStream().write()
     
    设置响应体需要注意的问题:
        1. 使用字符流肯定出现中文乱码
        2. 字符流和字节流不可以同时在一个servlet中出现, 否则500
        3. 字符流不可以直接输出数字, 如果输出数字的话, 会按照ASCii表进行转码.
            getWriter().write(20) ;
            解决: getWriter().write(20+"") ;

  • 相关阅读:
    查询datatime类型
    ms的题目,无聊不妨看看
    读取客户端收藏夹资料的问题
    delphi中的DBGrid无法刷新数据
    jsp与javascript
    .net2.0 web site中的cs文件怎么编译为dll
    由传奇木马引起的遐想
    com组件的调用
    Crystal Report的奇怪问题
    算法导论15章LCS实现(c++)
  • 原文地址:https://www.cnblogs.com/unrulywind/p/9163411.html
Copyright © 2020-2023  润新知