• Servlet程序(一)


     一、Servlet是什么

    1. Servlet程序是一个接口

    2. Servlet是JavaWeb三大组件之一

    3.  Servlet程序是运行在web服务器上的java小程序,它可以用来接收客户端的请求,以及响应客户端。

    二、手动实现一个Servlet程序

    1、创建Java类去实现servlet接口

     1 public class demo implements Servlet{
     2     @Override
     3     public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
     4         System.out.println("hello word");
     5     }
     6 
     7     @Override
     8     public void destroy() {
     9 
    10     }
    11 
    12     @Override
    13     public ServletConfig getServletConfig() {
    14         // TODO Auto-generated method stub
    15         return null;
    16     }
    17 
    18     @Override
    19     public String getServletInfo() {
    20         // TODO Auto-generated method stub
    21         return null;
    22     }
    23 
    24     @Override
    25     public void init(ServletConfig arg0) throws ServletException {
    26         // TODO Auto-generated method stub
    27         
    28     }
    29 }

    2、实现service方法

    @Override
        public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
            System.out.println("hello word");
        }

    3、需要到Web.xml文件中去配置一个servlet访问地址。

    <!-- servlet标签 表示在web服务器上配置了一个Servlet程序 -->
     <servlet>
        <!-- servlet唯一的名字 -->
        <servlet-name>HelloServlet</servlet-name>
        <!-- servlet全类名 -->
        <servlet-class>demo</servlet-class>
     </servlet>
     <!-- servlet-mapping配置一个请求地址 -->
     <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
     </servlet-mapping>
    访问时就可以用localhost:端口号/项目名/hell就可以,因为我们再配置文件里设置了它的访问地址。

    三、Servlet的生命周期

    1. 调用Servlet程序的构造方法 (初次访问被调用)

    2. 调用Servlet程序的init初始化方法 (初次访问被调用)

    3. 调用Servlet程序的Servlet方法 (每次访问都被调用)

    4. 调用Servlet程序的Servlet方法(在web工程停止时被调用)

    四、GET请求和POST请求的分发处理

    请求分发处理就是当客户端向服务器发出请求时,在服务器获取到请求后查看请求的类型,是GET还是POST。就是用request接口的HttpServletRequest类中的getMethod()方法得到。
    1 public void service(ServletRequest request, ServletResponse response) 
    2     throws ServletException, IOException {
    3 //      判断是GET请求还是POST请求
    4 //      getMethod() 可以得到,
    5         HttpServletRequest httpRequest = (HttpServletRequest) request;
    6         String method = httpRequest.getMethod();
    7         System.out.println("请求方式!"+method);
    8     }

     五、继承HttpServlet实现Servlet程序

    在实际开发中,我们很少会通过实现Servlet接口的形式来实现Servlet程序,而是通继承HttpServlet抽象类来实现Servlet程序,通过重写doGet()和doPost()来分发处理来自客户端的请求!
     1 public class demo1 extends HttpServlet {
     2     /*
     3      * 需要根据你的业务需求,重写doGet或doPost方法
     4      * doGet在GET请求的时候调用
     5      * doPost方法在Post请求的时候调用*/    
     6     @Override
     7     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     8     
     9         super.doGet(req, resp);
    10     }
    11     @Override
    12     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13         
    14         super.doPost(req, resp);
    15     }
    16 
    17 }

    六、利用Eclipse创建Servlet程序

     七、Servlet的体系结构

    八、ServletConfig类

    (一)、认识ServletConfig类

      1、ServletConfig类从类名中我们就可以体现出它的本质作用。就是Servlet程序的配置信息类嘛!

      2、每次Tomcat服务器创建Servlet程序的时候,都会创建一个ServletConfig对象,传递给init()初始化方法,做初始化使用!

      3、注意在这里Servlet程序是由Tomcat服务器创建,ServletCobfig类也是有它创建,这是需要我们弄清楚的地方!

    (二)、ServletConfig类的三大作用

      1、可以获取Servlet-name标签Servelt配置的名字(也就是在web.xml中配置的名称)

      2、可以获取<init-param>标签中配置的初始化参数

      3、获取ServletConfig 对象

    (三)、具体实现

      是通过重写init方法来实现的·,init()中有ServletConfig类型参数,通过参数去调用getServletName()、getInitParameter("参数名");、getServletConfig()分别获取Servlet程序的名称、参数、对象。

    1 @Override
    2     public void init(ServletConfig config) throws ServletException {
    3 //        1、获取<Servlet-name>标签配置的名称
    4         System.out.println("Servlet的名字:"+config.getServletName());
    5 //        2、获取Servlet程序的初始化参数
    6         System.out.println("Servlet初始化参数:"+config.getInitParameter("canshu"));
    7 //        3、获取Servlet对象
    8         System.out.println("Servlet对象:"+config.getServletContext());
    9     }

    (四)、Servlet程序编码中常见的问题

      1、ServletConfig类不光可以在init()方法中使用,也可以在其他方法中使用,例如doget和dopost方法中。但是要注意:当你重写了init()方法后,就不能在其他方法中使用。如果想要使用必须在init()方法中调用super.init(config)方法。

    1 @Override
    2     public void init(ServletConfig config) throws ServletException {
    3 //        必须添加,否则不能在其他方法中使用
    4         super.init(config);
    5     }

      2、当重写了dogett()和dopost(),不要调用super.doGet(req,resp);或者super.doPost(req,resp)方法;否则就会向客户端发送错误!

    @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //        super.doGet(req, resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //        super.doPost(req, resp);
        }
  • 相关阅读:
    UVA 10692
    XCODE插件 之 Code Pilot 无鼠标化
    VC版超级记事本
    抓包函数-pcap_next
    通过PowerShell卸载全部的SharePoint 2010 解决方式
    typedef和#define的差别——————【Badboy】
    一个简单演示样例来演示用PHP訪问表单变量
    怎样隐藏Windows7 系统保留分区
    2016 360笔试题------找第一个仅仅出现一次的字符
    Eclipse中Easy Shell插件配置PowerCmd
  • 原文地址:https://www.cnblogs.com/geq2020/p/12425971.html
Copyright © 2020-2023  润新知