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 ...
随机推荐
- Spring MVC 通过反射将数据导出到excel
直接上代码 // 导出excel方法 @RequestMapping("exportExcel") public void exportExcel(HttpServletReque ...
- 【LeetCode】:二叉搜索树
相关概念: 一棵二叉搜索树(BST)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据内容key和指向孩子(也可能是父母)的指针属性.如果某个孩子结点不存 ...
- ie6不认识
1. ie6 不认识这样连续写的类选择 .class1.class2{ } 2. ie6 下不解析 css input[type="text"] 等等类别的选择
- JavaScript日期选择控件Kalendae
在线演示 本地下载
- bootstraptable的 showFooter属性
如果想在表格最下面显示统计的信息可以使用这个属性 首先 先在表格加上这个属性 showFooter:true, 然后 在需要的列里面新增属性 footerFormatter 设置列的名称 然后在需 ...
- Spring Cloud2.0之整合Consul作为注册中心
使用Consul来替换Eureka Consul简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. 它具有很多优点.包括: 基于 raft ...
- hive启动时报错 java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D at org.apache.hadoop.fs.Path.initialize
错误提示信息如下 错误信息如下 [root@node1 bin]# ./hive Logging initialized -bin/lib/hive-common-.jar!/hive-log4j.p ...
- 分治思想求解X的M次幂方
package main import ( "fmt" ) //递归形式分治求解 func power(x, m int) int { { } else { y := power( ...
- Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示
Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 ...
- node.js+express验证码的实现
安装ccap库 npm install ccap var ccap = require(); var captcha = ccap({ width:190, height:50, offset:30, ...