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 |
用于返回 |
一般在浏览器中输入网址访问资源都是通过
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 // /** // * 先覆盖父类 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 System.out.println("===== doGet ====="); //在 doGet() 方法里调用 doPost() 方法 //这样,GET请求和POST请求可以共用一套处理逻辑 doPost(req, resp); } //覆盖父类 HttpServlet 的 doPost() 方法 @Override protected 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的更多相关文章
- Servlet编程实例 续4
---------------siwuxie095 JSP+Servlet+JDBC 继续完善登录实例,将校验逻辑改为:从数据库中获取用户信息进行校验 数据库准备 在 Navicat for MySQ ...
- Servlet编程实例 续2
-----------------siwuxie095 Servlet 跳转之请求的重定向 继续完善登录实例,如下: login.jsp 不变,修改 LoginServlet,新建两个 JSP 文件 ...
- Servlet编程实例 续3
----------------siwuxie095 Servlet 跳转之请求的转发 修改 LoginServlet.java: package com.siwuxie095.servlet; im ...
- Servlet编程实例1
编程目的:使用JSP+servlet,来实现一个登陆页面,登陆成功则提示成功,登陆失败则提示失败. 编程要求:登陆页面由login.jsp负责显示,登陆成功由success.jsp负责显示,登陆失败由 ...
- Servlet编程实例
---------------siwuxie095 登录实例: 从 login.jsp 提交登录信息到 LoginServlet,在 LoginServlet 中打印登录信息 工程结构目录如下: Lo ...
- Servlet编程实例2
上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容. 所以为了做出改进,这次使用RequestDispatcher ...
- Servlet编程实例-servlet学习之旅(三)
LoginServlet代码: public class LoginServlet extends HttpServlet{ @Override protected void service(Http ...
- Servlet编程
Servlet编程 1. servlet概念及相关接口简介 java Servlet是运行在web服务器或应用服务器上的程序,他是作为来自web浏览器或其他HTTP客户端的请求和HTTP服务器山的数据 ...
- Servlet编程-步步为营
[环境]eclipse j2ee;Tomcat 7.0; [模型1] package com.zhiqi; import ...; public class TestServlet extends H ...
随机推荐
- J.U.C重入锁
ReentrantLock重入锁 ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式, 重入的意思就是,如果已经获得了锁,如果执行期间还需要获得这个锁的话,会直接获得 ...
- 【九】MongoDB管理之安全性
要保证一个安全的MongoDB运行环境,DBA需要实施一些控制保证用户或应用程序仅仅访问它们需要的数据.这些措施包括但不限于: 认证机制 基于角色的访问控制 加密 审计 一.认证机制 认证是验证客户端 ...
- 20145229吴姗珊 《Java程序设计》第9周总结
20145229吴姗珊 <Java程序设计>第9周总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交 ...
- (转)Windows下面安装和配置MySQL(5.6.20)
原文地址:http://www.cnblogs.com/qiyebao/p/3887055.html 1.首先到http://dev.mysql.com/ 上下载windows版mysql5.6免安装 ...
- nginx gzip 压缩设置
mime.types 中包含所有文件的类型,不知道的可以去里面查询 gzip配置的常用参数 gzip on|off; #是否开启gzip gzip_buffers 32 4K| 16 8K #缓冲( ...
- codevs 1299 切水果 线段树
1299 切水果 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果 ...
- Codeforces 461B Appleman and Tree:Tree dp
题目链接:http://codeforces.com/problemset/problem/461/B 题意: 给你一棵树(编号从0到n-1,0为根节点),每个节点有黑白两种颜色,其中黑色节点有k+1 ...
- php把字符串指定字符分割成数组
<?php $str="1|2|3|4|5|"; $var=explode("|",$str); print_r($var); ?> $var=ex ...
- 维度表, 事实表, 数据仓库, BI...
以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...
- c语言代码风格2
1.注释 注释的目的是为了说明做了什么,而不是怎么做,所以注释表达应该准确而又简洁.注释要放在被注释内容的上方或右方.注释一般采用/*.........*/或//........ 对代码源文件和函数应 ...