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 ...
 
随机推荐
- 图片加载Picasso
			
https://github.com/square/picasso 基本用法 // 基本用法 // 普通加载图片 Picasso.with(PicassoActivity.this) .load(&q ...
 - Chrome Extension 扩展程序 小白入门
			
Chrome Extension 扩展程序 前请说明:本文适用于之前从来没有接触过chrome extension扩展程序的同学~ 编写demo 创建项目文件夹chrome_ext_demo,在项目根 ...
 - Data Structure Array: Maximum of all subarrays of size k
			
http://www.geeksforgeeks.org/maximum-of-all-subarrays-of-size-k/ #include <iostream> #include ...
 - BOM之history
			
history是JavaScript中BOM上的一个对象,其中存储了浏览器的历史记录 history存储简单过程 浏览器会将一个窗口中访问的网页进行记录,不管我们通过以下哪种方式改变页面,浏览器都会把 ...
 - CSS3自定义下拉框菜单
			
在线演示 本地下载
 - Vim的map
			
linux系统下.vimrc文件(这个文件可以在家目录新建): 这个文件记录着vim的配置信息: 如: "显示行号 set number "键映射map “如按F5,在word的前 ...
 - expr命令使用
			
转载:http://www.cnblogs.com/f-ck-need-u/p/7231832.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字符串提取.字符串长度计算等功能. ...
 - GW知识点
			
1.取值: protected void Button1_Click(object sender, EventArgs e) { string str = ""; foreach ...
 - 机器学习(十七)— SVD奇异值分解
			
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
 - 十一  Django框架,Session
			
Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 1.数据库(默认)2.缓存3.文件4.缓存+数据库5.加密cookie 1.数据库Session,保存在数据库 ...