zoukankan      html  css  js  c++  java
  • Servlet复习1: 一个简单的Servlet的使用

    Servlet学习

    1. Servlet与JSP的关系

    2. Servlet的声明周期

    3. 一个简单的Servlet的使用方法

    什么是Servlet? 什么又是JSP?

    继承了javax.servlet的一些类的程序 , 已经具有了Servlet的特征

    但是Servlet的可视性不是太好, JSP可以弥补这一点 , jsp是Java Server Pagers , 是一种使用java作为脚本的语言, 在web服务器中可以转化为Servlet , 在传统的HTML网页中使用<% java语言 %> 就可以嵌入java代码了

    Servlet是服务器端的小程序 , 可以用来通过多种方法扩充一个Web服务器.

    PS:这句话告诉我们:

    1. Servlet 是一个java写的程序

    2. Servlet是运行在服务器端的 , 而不是Client

    3. 写Servlet的最终目的是为了让服务器帮我们做事情

    Servlet与JSP的关系:
    相同点: JSP最终会转化为一个Servlet

    不同点:

    1 Servlet是持久的 , 仅需要Web服务器加载一次

    2 Servlet是可扩展的 , 因为java是面向对象的

    3 JSP是为了解决Servlet中的编程困难为开发的技术 , jsp是脚本语言 , Servlet是java语言

    4 Servlet必须在编译之后才可以进行

    5 第一次运行时 , JSP需要转化为Servlet然后在编译 , 才可以运行 . 而Servlet直接就编译了 .(所谓的第一次就是web容器中没有存在一模一样的文件)

    6 servel写业务逻辑十分强大 . jsp写视图层效果很好

    Servlet生命周期:

    Servlet是javax.Servlet.httpServlet的子类.

    1 装载Servlet

    2 调用构造函数 实例化一个Serlet对象 , 这个对象的名字有<servelt-name/>指定

    3 调用init()方法

    4 服务Service()

    5卸载destoory()

    Demo:

    目录结构:

    clip_image002

    Web.xml

    clip_image002[4]

    ----------------------------Test1.java----------------------------------------------------------

    package com.controller;

    import java.io.IOException;

    import java.io.PrintWriter;

    import javax.servlet.ServletConfig;

    import javax.servlet.ServletException;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    /**

    * Servlet implementation class Test1

    *测试声明周期

    */

    @WebServlet("/Test1")

    public class Test1 extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**

    * @see HttpServlet#HttpServlet()

    */

    public Test1() {

    super();

    System.out.println("----------------construction----------------");

    // TODO Auto-generated constructor stub

    }

    /**

    * @see Servlet#init(ServletConfig)

    */

    public void init(ServletConfig config) throws ServletException {

    // TODO Auto-generated method stub

    System.out.println("---------init------------");

    System.out.println(this.getClass());

    }

    /**

    * @see Servlet#destroy()

    */

    public void destroy() {

    super.destroy();

    System.out.println("----------------destroy-----------");

    // TODO Auto-generated method stub

    }

    /**

    * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)

    */

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // TODO Auto-generated method stub

    System.out.println("------service---------------");

    }

    /**

    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

    */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // TODO Auto-generated method stub

    doPost(request, response);

    System.out.println("---------------默认调用doget()------------");

    }

    /**

    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

    */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // TODO Auto-generated method stub

    PrintWriter out = response.getWriter();

    out.println("-------------------书写内容-------------------------") ;

    out.flush();

    out.close();

    }

    }

    index.jsp

    clip_image006

     

     

    效果图:

    PS: 请注意地址栏的变化

    image

     

    image

     

     

    image

     

     

    这个时候发现没有调用doget()方法

    原因是: 于是这样写了一下:

    发现还是没有>>>>>>>>>>>>>>>这时你发现你写的这个类上的Service方法是这样写的:

    image

    对! 就是覆盖了了父类的方法了 ,如此一来,Servlet的Service()只会运行Syso了

    为此应该改成:

    image

    这是这个类成了这样的:

    package com.controller;
    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    /**
    * Servlet implementation class Test1
    *测试声明周期
    */
    @WebServlet("/Test1")
    public class Test1 extends HttpServlet {
        private static final long serialVersionUID = 1L;
          
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Test1() {
           
            super();
          
            System.out.println("----------------construction----------------");
            // TODO Auto-generated constructor stub
        }

        /**
         * @see Servlet#init(ServletConfig)
         */
        public void init(ServletConfig config) throws ServletException {
            // TODO Auto-generated method stub
            System.out.println("---------init------------");
            System.out.println(this.getClass());
        }

        /**
         * @see Servlet#destroy()
         */
        public void destroy() {
            super.destroy();
            System.out.println("----------------destroy-----------");
            // TODO Auto-generated method stub
        }

        /**
         * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
         */
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            super.service(request, response);
            System.out.println("------service---------------");
        }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doPost(request, response);
           
            System.out.println("---------------doget()------------");
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            PrintWriter out  = response.getWriter();
           
            out.println("-------------------content-------------------------") ;
           
            out.flush();
            out.close();
           
        }

    }

    ---------------------------------------------------

    效果是:

    在启动之后

    显示

    image

    后台输出信息为:

    image

    点击连接之后:

    image

    控制台输出信息是

    image

  • 相关阅读:
    Watir and Selenium
    WebDriver 原理 (zhuan)
    Junit4 如何实现并发测试用例,及 Selenium Grid2 与 Junit4 结合进行并发测试。
    Excel: 如何知道 A列中的条目是否在 B 列中
    WebDriver如何工作 (zhuan)
    复习 多线程
    Way To Get Xpath From IE (forward)
    Eclipse 常用快捷键
    如何引入(调用)一个 js文件
    Wireshark 常见 filter (转)
  • 原文地址:https://www.cnblogs.com/greentomlee/p/4324075.html
Copyright © 2011-2022 走看看