Servlet编程实例 续3
----------------siwuxie095
Servlet 跳转之请求的转发
修改 LoginServlet.java:
| 
 package com.siwuxie095.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; 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 的 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); String forward=null; if (userName.equals("siwuxie095")&&password.equals("8888")) { //请求转发 forward="/success.jsp"; /** * 定义一个 RequestDispatcher对象 * RequestDispatcher 即请求调度器 * 其对象rd封装了转发的操作,接收来自客户端的请求,然后将其转发到指定的资源上 * * 通过 req 的 getRequestDispatcher()方法获取一个RequestDispatcher对象 * 其String类型的参数 forward 表示要转发的地址 */ RequestDispatcher rd=req.getRequestDispatcher(forward); //使用forward()方法完成转发操作 rd.forward(req, resp); //请求重定向 //resp.sendRedirect(req.getContextPath()+"/success.jsp"); }else { //请求转发 forward="/error.jsp"; RequestDispatcher rd=req.getRequestDispatcher(forward); rd.forward(req, resp); //请求重定向 //resp.sendRedirect(req.getContextPath()+"/error.jsp"); } /** * 请求转发: * 整个过程只涉及一次浏览器与服务器的交互,即只有一次请求响应, * 在整个转发过程中,各组件共享同一组请求和响应对象 * * 注意:转发只能在同一应用的组件间进行,不能转发给其他应用的组件 * * 而请求重定向 sendRedirect 可以转发给其他应用地址 */ } }  | 
访问:localhost:8080/MyServlet/login.jsp,分别输入 siwuxie095 和 8888

转发到:localhost:8080/MyServlet/success.jsp,成功获取 用户名 和 密码

整个过程分析如下:
浏览器的请求首先发送给 LoginServlet
LoginServlet 处理完毕后,将 req 和 resp 对象传递给 success.jsp,
传递的过程称之为 请求转发
整个过程只涉及一次浏览器与服务器的交互,即只有一次请求响应
在整个转发过程中,各组件共享同一组请求和响应对象
注意:转发只能在同一应用的组件间进行,不能转发给其他应用的组件
而请求重定向 sendRedirect() 可以转发给其他应用地址
如:令 forward="https://www.baidu.com/"; ,将会报 HTTP Status 404 错误
说明:请求转发不能转发给其他应用的地址,而请求重定向则可以访问其他应用的地址
【made by siwuxie095】
Servlet编程实例 续3的更多相关文章
- Servlet编程实例 续4
		
---------------siwuxie095 JSP+Servlet+JDBC 继续完善登录实例,将校验逻辑改为:从数据库中获取用户信息进行校验 数据库准备 在 Navicat for MySQ ...
 - Servlet编程实例 续2
		
-----------------siwuxie095 Servlet 跳转之请求的重定向 继续完善登录实例,如下: login.jsp 不变,修改 LoginServlet,新建两个 JSP 文件 ...
 - Servlet编程实例 续1
		
-----------------siwuxie095 在 LoginServlet 中,右键->Open Type Hierar ...
 - 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 ...
 
随机推荐
- UIImageView 获取图片的 宽 高
			
该文章纯属这两天开发的经验之谈 并且也是平常没注意 这回发现的一个小方法 并且很实用 在开发中 提高了很大的效率 更加符合高保真的要求 通常 美术 切的一些图片 需要 :1还原的 现在 我们一般支持i ...
 - STM32 JTDO JREST复用为普通IO
			
一.开启AFIO的时钟(必须保证先打开AFIO,否则无效) RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 二.禁用JTAG,使能SWD GP ...
 - 0523 CSS知识点
			
高级选择器分为:后代选择器.子代选择器.并集选择器.交集选择器 后代选择器 使用空格表示后代选择器.顾名思义,父元素的后代(包括儿子,孙子,重孙子) .father .item .a p{color: ...
 - etcd -> Highly-avaliable key value store for shared configuration and service discovery
			
The name "etcd" originated from two ideas, the unix "/etc" folder and "d&qu ...
 - ubuntu 部署的mysql无法远程链接
			
允许远程用户登录访问mysql的方法 从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器: # mysql -u root -proot mysql& ...
 - 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)
			
1. [代码][JS]代码 <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...
 - 英语发音规则---(e)s和-(e)d的读音规则
			
英语发音规则---(e)s和-(e)d的读音规则 一.总结 一句话总结: 1.大部分可数名词的复数及动词第三人称单数的一般现在式,是以-(e)s结尾的? moths,glasses:digs,teac ...
 - GeoServer基础教程(二):GeoServer的Web管理界面快速入门
			
转载:http://blog.163.com/daimiao_study/blog/static/248923117201542522742373/ GeoServer的控制和管理是基于网页形式,所有 ...
 - MicroMessage的动态操作(第二步)
			
现在开始将静态页面转化成动态页面.将页面上的信息转化成 数据库提供的信息. 建立jdbc获取数据库连接,并设置一个查询sql语句,查出所有结果.但是因为查询结果rs包含全表信息,是多行. 为了保存查询 ...
 - 2018-06-07 RF test 1 :TX Power test
			
Test item: 1.Output power: 屏蔽网房-同轴线-频谱仪 The radio circuitry, generally referred to as the Device U ...