-----------------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】

Servlet编程实例 续1的更多相关文章

  1. Servlet编程实例 续4

    ---------------siwuxie095 JSP+Servlet+JDBC 继续完善登录实例,将校验逻辑改为:从数据库中获取用户信息进行校验 数据库准备 在 Navicat for MySQ ...

  2. Servlet编程实例 续2

    -----------------siwuxie095 Servlet 跳转之请求的重定向 继续完善登录实例,如下: login.jsp 不变,修改 LoginServlet,新建两个 JSP 文件 ...

  3. Servlet编程实例 续3

    ----------------siwuxie095 Servlet 跳转之请求的转发 修改 LoginServlet.java: package com.siwuxie095.servlet; im ...

  4. Servlet编程实例1

    编程目的:使用JSP+servlet,来实现一个登陆页面,登陆成功则提示成功,登陆失败则提示失败. 编程要求:登陆页面由login.jsp负责显示,登陆成功由success.jsp负责显示,登陆失败由 ...

  5. Servlet编程实例

    ---------------siwuxie095 登录实例: 从 login.jsp 提交登录信息到 LoginServlet,在 LoginServlet 中打印登录信息 工程结构目录如下: Lo ...

  6. Servlet编程实例2

    上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容. 所以为了做出改进,这次使用RequestDispatcher ...

  7. Servlet编程实例-servlet学习之旅(三)

    LoginServlet代码: public class LoginServlet extends HttpServlet{ @Override protected void service(Http ...

  8. Servlet编程

    Servlet编程 1. servlet概念及相关接口简介 java Servlet是运行在web服务器或应用服务器上的程序,他是作为来自web浏览器或其他HTTP客户端的请求和HTTP服务器山的数据 ...

  9. Servlet编程-步步为营

    [环境]eclipse j2ee;Tomcat 7.0; [模型1] package com.zhiqi; import ...; public class TestServlet extends H ...

随机推荐

  1. php类和对象(二)

    面向对象第三大特性:多态 概念: 当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致我们在使用该引用取调用相应方法时表现出的不同 条件: 1.必须有继承 2.子类必须对父类的方法进行重写 ...

  2. CSS选择器(一)

    一.CSS 元素选择器 最常见的 CSS 选择器是元素选择器.换句话说,文档的元素就是最基本的选择器. 如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p.h1.em.a,甚至可 ...

  3. ubuntu14.04 spring cloud config server + gradle搭建

    Server端:在eclipse上,创建Java Project项目.自带的src包删掉手动建文件夹.基础的目录文件都创建上 |--ZSpringCloud|--build.gradle|----sr ...

  4. Java多线程系列 面试题

    1. https://blog.csdn.net/jjj19891128/article/details/24393661  多线程经典面试题 2. https://blog.csdn.net/ll6 ...

  5. [原创]关于设置linux中vim 显示行号

    1.更改所有账户配置 直接更改/etc/vimrc vim /etc/vimrc 在vimrc文件的最后添加 set nu 即可 wq退出. 这样,不论使用哪个账号登陆,vim打开后都显示行号 2.为 ...

  6. php生成各种验证码

    片段 1 片段 2 片段 3 index.html ```<script type="text/javascript" src="jquery.min.js&quo ...

  7. [算法]打印N个数组的整体最大Top K

    题目: 有N个长度不一的数组,所有的数组都是有序的,请从大到小打印这N个数组整体最大的前K个数. 例如: 输入含有N行元素的二维数组代表N个一维数组. 219,405,538,845,971 148, ...

  8. LINQ 学习路程 -- 查询操作 OfType

    OfType操作根据集合中的元素是否是给定的类型进行筛选 IList mixedList = new ArrayList(); mixedList.Add(); mixedList.Add(" ...

  9. bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块

    1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MB Description 每天,农夫 John ...

  10. GridView内容详解(转载)

    GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性 ...