zoukankan      html  css  js  c++  java
  • Servlet编程实例 续1

    -----------------siwuxie095

       

       

       

       

       

       

       

       

    在 LoginServlet 中,右键->Open Type Hierarchy(或 使用快捷键:F4)

       

    Type Hierarchy 视图中显示了 LoginServlet 的继承关系,点击 HttpServlet

       

       

       

       

    在下方,可以看到 HttpServlet 有许多以 do 开头的方法,用来处理不同的 HTTP 请求

       

       

       

       

    HTTP 请求的类型(HTTP METHOD):

       

    OPTIONS

    用于返回服务器支持的 HTTP 方法

    POST

    用于将指定的资源提交到服务器进行处理

    GET

    用于从指定的资源请求数据

    PUT

    用于上传指定的资源

    DELETE

    用于删除指定的资源

    HEAD

    与 GET 相同,但返回的只是 HTTP 的报头,不会返回文档的主体

    TRACE

    用于返回 TRACE 请求的所有头信息

       

       

    一般在浏览器中输入网址访问资源都是通过 GET 方法

       

    在表单提交时,可以通过 method 属性指定提交方式为 GET 或 POST,

    默认的提交方式是 GET。对于 HTTP 的几种提交方式,基本上只会用到

    GET 和 POST

       

       

       

    GET 与 POST 的区别:

       

    操作

    GET

    POST

    刷新

    不会重复提交

    重复提交

    数据长度

    2048 个字符

    无限制

    数据类型

    ASCII 字符

    无限制

    可见性

    URL 中可见

    URL 中不可见

    安全性

       

       

       

       

    在 Servlet 中分别处理 Get 请求和 POST 请求,将 LoginServlet.java 改为:

       

    package com.siwuxie095.servlet;

       

    import java.io.IOException;

       

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

       

    // LoginServlet 继承自 HttpServlet

    public class LoginServlet extends HttpServlet {

    /**

    * 用于序列化和反序列化的 ID

    */

    private static final long serialVersionUID = -7740192486028671728L;

       

    // /**

    // * 先覆盖父类 HttpServlet service()方法,

    // * 右键->Source->Override/Implement methods

    // * 选择 HttpServlet service()

    // * service() 中编写业务处理逻辑

    // */

    // @Override

    // protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    // String userName=req.getParameter("uname");

    // String password=req.getParameter("upwd");

    // System.out.println("用户名:"+userName);

    // System.out.println("密码:"+password);

    // }

     

     

    //覆盖父类 HttpServlet doGet() 方法

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    System.out.println("===== doGet =====");

    // doGet() 方法里调用 doPost() 方法

    //这样,GET请求和POST请求可以共用一套处理逻辑

    doPost(req, resp);

    }

       

    //覆盖父类 HttpServlet doPost() 方法

    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    System.out.println("===== doPost =====");

    String userName=req.getParameter("uname");

    String password=req.getParameter("upwd");

    System.out.println("用户名:"+userName);

    System.out.println("密码:"+password);

    }

     

     

     

    }

       

       

    访问:localhost:8080/MyServlet/login.jsp,分别输入 siwuxie095 和 8888

       

       

       

    如果使用 GET 方式提交,则跳转的 URL 为:

    localhost:8080/MyServlet/loginServlet?uname=siwuxie095&upwd=8888

       

    如果使用 POST 方式提交,则跳转的 URL 为:

    localhost:8080/MyServlet/loginServlet

       

       

       

    LoginServlet 能够区分不同的请求类型,分别进入 doGet() 或 doPost() 方法

       

    这是因为在父类 HttpServlet 的 service() 方法中,能够根据请求的类型,分别

    调用对应的 doGet()、doPost() 等方法

       

    「使用快捷键:Ctrl+O,打开 Outline 视图,找到 service() 方法」

       

       

       

       

    而这些方法的实现,是在具体的子类中进行实现的

       

       

       

    HttpServlet 这样的设计是一种非常常用的设计模式:模板方法模式

       

    在一个方法中定义一个算法的骨架,然后将某些步骤推迟到子类中去实现

       

    「模板方法允许子类重新定义算法的某些步骤,而不改变方法的结构」

       

       

       

    打开 Outline 视图(大纲视图)的方法:

       

    1)右键->Quick Outline(快捷键:Ctrl+O)

       

    2)Window->Show View->Outline

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    年纪大了,要学会控制自己的欲望
    java为什么要用类型擦除实现泛型?--c++,java,c# 的泛型是如何实现的
    面向对象:类的成员---只是特定(类的)命名空间的全局变量(函数)而已
    人的意志与自然法则—人的意志与人造事物
    所有的思考都有两个目的:建模降熵
    控制论、系统论与熵
    秩序(也常简称为序)是系统的本质特征之一
    控制论:基于全局信息和整体目标、整体规则的系统结构和状态维护
    人类社会的全部认识成果可以概括为三大领域的科学,即自然科学、社会科学和思维科学
    “逻辑”的古希腊词源
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6704866.html
Copyright © 2011-2022 走看看