A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 水煮牛蛙 中级黑马   /  2018-5-21 17:12  /  598 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-5-23 16:51 编辑

servelet


1.什么是Servlet:
        * 就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
        * Servlet就是SUN公司提供的一个动态网页开发技术.
2.Servlet的作用:
        * 用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
3.Servlet的使用:
        *1. 编写一个类实现Servlet接口.
        *2. 将编写的这个类配置到服务器中.


4.Servlet接口的使用:
        * 创建一个类,实现Servlet接口
        * 实现它所有的方法
        * 重写它的service(ServlerRequest req,ServletResponse)方法
          在方法内写入要执行的代码
        * 在web.xml文件中配置实现Servlet接口类的虚拟路径名
        4.1例:
          <!-- 配置Servlet -->
  <servlet>
          <!-- Servlet的名称 -->
          <servlet-name>test1</servlet-name>
          <!-- SErvlet的全路径 -->
          <servlet-class>com.itheima.a_servlet.ServletDemo1</servlet-class>
  </servlet>
  
  <!-- Servlet的映射 -->
  <servlet-mapping>
          <!-- Servlet的名称 -->
          <servlet-name>test1</servlet-name>
          <!-- Servlet的访问路径 -->
          <url-pattern>/ServletDemo1</url-pattern>
  </servlet-mapping>
  4.2 配置好后该Servlet接口实现类的访问路径为:
                http://ip:port/工程名/url-pattern值

5.Servlet的相关类
5.1 ServletRequest 接口
        * 定义将客户端请求信息提供给某个 servlet 的对象。
          servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该 servlet
          的 service 方法。
          ServletRequest 对象提供包括参数名称、参数值、属性和输入流的数据。
          扩展 ServletRequest 的接口可提供其他特定于协议的数据;
                ** 例如: javax.servlet.http.HttpServletRequest 提供的 HTTP 数据
        *常用方法
        * String getParameter(String name);               
                ---用于接收一个名称对应一个值的数据.
        * String[] getParameterValues(String name);
                ---用于接收一个名称对应多个值的数据.
        * Map getParameterMap();                                       
                ---用于接收表单中的所有的数据,Map的key是表
                单提交的参数名称,Map的value是提交参数的值.
        * Enumeration getParameterNames()                        
                ---用于获取表单中提交的所有的参数的名称.
5.2 HttpServletResponse 接口
        * 定义辅助 servlet 将响应发送到客户端的对象。
          servlet 容器创建 ServletResponse 对象,
          并将它作为参数传递给 servlet 的 service 方法。
        *常用方法:
        * addHeader(String name,String value);                --- 针对一个key对应多个value的响应头.
                * addDateHeader(String name,long date);
                * addIntHeader(String name,int value);
        ** 使用: add开头这种,可以对头信息的值后边追加值
                        例: 头信息为 : xxx:aaa
                                执行完addHeader("xxx","bbb");  -->结果: xxx:aaa,bbb
               


        * setHeader(String name,String value);                --- 针对一个key对应一个value的响应头.
                * setDateHeader(String name,long date);
                * setIntHeader(String name,int value);
        ** 使用: set开头这种,可以对头信息的值进行修改
                                例: 头信息为 : xxx:aaa
                                        执行完setHeader("xxx","bbb");  -->结果: xxx:bbb
               
5.3.ServletContext 对象
        5.3.1概述:
                * ServletContext对象存取数据,存的数据都是有一定的作用的范围的.
                  这种对象称为是域对象.(有三个域)
            * 服务器启动时就会为该工程创建一个ServletConnection对象
                  并且就只创建一个
                * 它的作用域为整个web工程
                * 它的使用:
                        在任意一个Servlet的实现类中
                        this.getServletConntext().setAttribute("count",count);
                        //解释:
                        * this.getServletConntext()获取ServletContext对象
                        * 然后再用对象调用它的方法
        5.3.2ServletContext的对象常用方法
                * void setAttribute(String name,Object object)
                        --用来向ServletContext中存入数据.
                * Object getAttribute(String name)
                        --用来从ServletContext中获取数据.
                * void removeAttribute(String name)
                        --用来从ServletContext中移除数据.
        5.4.ServletConfig 接口
                * 作用:了解.获得Servlet的配置信息
                * 方法:
                        * String getServletName();               
                                ---获得Servlet在web.xml中配置的name的值.
                                例: 获取的是 servlet-name 标签下的UserServlet
                                <servlet-name>UserServlet</servlet-name>
                                <servlet-class>com.a_servlet.UserServlet</servlet-class>
                        
                        * String getInitParameter(String name);        
                                ---获得Servlet的初始化参数的值.
                        * Enumeration getInitParameterNames();               
                                ---获得所有Servlet的初始化参数的名称.
                        * ServletContext getServletContext()
                                ---获取一个ServletConntext对象
        5.5.ServletContext 接口
                * 作用:
                        * 1.用来获得全局初始化参数.
                        * 2.用来获得文件的MIME的类型.(一般在上传下载时使用)
                        * 3.作为域对象存取数据.
                * ServletContext是一个域对象.
                        * 作用范围:整个web工程.
                        * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.(一个web项目中只有一个ServletContext对象)
                        * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.


                        * 4.用来读取web项目下的文件.??
                        
                        
        5.6.ServletRequest 接口
               
        5.7.ServletResponse 接口
                 
        5.8.HttpServlet        类
                * 提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。
                * HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一:
                        ** doGet,如果 servlet 支持 HTTP GET 请求
                        ** doPost,用于 HTTP POST 请求
                        ** doPut,用于 HTTP PUT 请求
                        ** doDelete,用于 HTTP DELETE 请求
                        ** init 和 destroy,用于管理 servlet 的生命周期内保存的资源
                        ** getServletInfo,servlet 使用它提供有关其自身的信息
        5.9.GenericServlet 类
                * 定义一般的、与协议无关的 servlet;
6.servlet 相关类的获取方法
        * ServletConfig 可以通过Servlet 和 HttpServlet 获取
        * ServletContext 可以通过HttpServlet获取


        * ServletRequest / ServletResponse 都是由Servlet容器创建


7.Servlet的实现的关系
                Servlet                        :接口
                   |
                GenericServlet        :通用的Servlet
                   |
                HttpServlet                :HttpServlet
                * 编写一个类继承HttpServlet,重写doGet和doPost方法.
                * 在web.xml中配置url-pattern
8.Servlet的相关配置
        8.1启动时创建Servlet
                * Servlet默认是在第一次访问的时候创建的.
                现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
               
                        *在web.xml中在<servlet></servlet>标签中配置:
                                * <load-on-startup>2</load-on-startup>  
                                        --- 传入正整数,整数越小,被创建的优先级就越高.
                                * 在tomcat中1已经被使用,因此只能从2开始使用
                例:
                          <servlet>                                
                                <servlet-name>CountServlet</servlet-name>
                                <servlet-class>com.a_servlet.CountServlet</servlet-class>
                                <load-on-startup>2</load-on-startup>
                          </servlet>
9.web.xml配置文件 的标签解释
                <servlet>
                        <servlet-name>UserServlet</servlet-name>
                        <servlet-class>com.a_servlet.UserServlet</servlet-class>
                        <init-param>
                                <param-name>username</param-name>
                                <param-value>pingguo</param-value>
                        </init-param>
                        <init-param>
                        <param-name>password</param-name>
                        <param-value>123</param-value>
                        </init-param>
                        <load-on-startup>2</load-on-startup>
                 </servlet>
                 <servlet-mapping>
                        <servlet-name>UserServlet</servlet-name>
                        <url-pattern>/UserServlet</url-pattern>
                 </servlet-mapping>


* <init-param> 用于写入一些初始化信息
        <param-name>password</param-name>
        <param-value>123</param-value>
   </init-param>
   
* <load-on-startup>2</load-on-startup>
        :自动加载启动,在服务器启动时就会加载
10.
        * url-pattern配置方式共有三种:
                1.完全路径匹配        :以 / 开始                                
                        例如:        /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
                2.目录匹配                :以 / 开始 需要以 * 结束.        
            例如: ' /* '  ,  '/aaa/*'  , '/aaa/bbb/*'
                3.扩展名匹配 :不能以 / 开始 以 * 开始的.
                        例如: *.do , *.action
                        ***** 错误的写法        : ' /*.do '
                * 三种路径匹配的优先级:
                        ***** 完全路径匹配 > 目录匹配 > 扩展名匹配
                        * 设置优先级的目的:
                            访问规则保证了一次请求只有一次响应
11.web项目开发中的路径               
        11.1相对路径:都是需要找位置相对关系.不能以 / 开始的.
                * ./ 当前路径  ../上一级目录
                * 使用相对路径访问:
                        * http://localhost:8080/day09/demo4-url/demo1.html
                        * http://localhost:8080/day09/ServletDemo6
        11.2绝对路径:不需要找位置相对关系. 以 / 开始的.
                * 绝对路径中分为客户端路径和服务器端路径:
                        * 客户端路径一定要加工程名.                /day09/ServletDemo6
                        * 服务器端路径不需要加工程名.        /ServletDemo6

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马