Servlet编程实例 续3
来源:互联网 发布:韩雪网络直播视频 编辑:程序博客网 时间:2024/05/26 08:42
----------------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 LoginServletextends HttpServlet {
/**
*用于序列化和反序列化的 ID
*/
private static finallong serialVersionUID = -7740192486028671728L;
//覆盖父类 HttpServlet 的 doGet()方法
@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("===== doGet =====");
//在 doGet() 方法里调用 doPost()方法
//这样,GET请求和POST请求可以共用一套处理逻辑
doPost(req, resp);
}
//覆盖父类 HttpServlet 的 doPost()方法
@Override
protectedvoid 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编程实例 续1
- Servlet编程实例 续2
- Servlet编程实例 续4
- Servlet编程实例
- java编程 Ajax+Servlet实例
- java网络编程-Ajax+servlet实例
- Java之Servlet编程实例一
- JavaWeb之Servlet编程实例二
- Servlet编程实例-servlet学习之旅(三)
- Servlet学习(二)Servlet编程实例-网站登录
- Servlet实例
- servlet实例
- Servlet 实例
- Servlet 实例
- Servlet 实例
- Servlet 实例
- Servlet 实例
- 死锁
- Valid Number
- 用户登录记住密码
- centos7开机出现welcome to emergency mode!
- node-sass 安装报错解决办法
- Servlet编程实例 续3
- android studio 导入 slidingmenu
- favicon出现的问题
- HDU 4155 Eliminate the Conflict(2-SAT)
- 动态分配线程数目-保证系统负载
- 删除链表中值为value的节点
- java获取当前时间是星期几
- 虚拟机下Centos本地光盘yum源配置
- http请求本地文件,路径中含有空格的处理 QT