代码实例--请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
验证requset的forward()、include()跳转
- indextest.jsp :接受用户输入的用户名和密码
- ValidateServlet.java: 验证用户的数据是否正确
- 正确,则用 forward 方法跳转到 welcomeva.jsp(显示欢迎信息的页面)
- 错误,则调用 include 方法跳转到 indextest.jsp,并给出错误提示
首页面–indextest.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head><meta charset="UTF-8"><title>登录</title><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="form-group">
<form action="${pageContext.request.contextPath}/chap3validatefi" method="post" class="form-horizontal" role="form"><table class="table table hover"><tr><td> <label for="username" class="col-sm-2 control-label">用户名</label></td><td><input type="text" class="form-control" id="username" name="username" placeholder="请输入密码"></td></tr><tr><td><label for="userpass" class="col-sm-2 control-label">密码</label></td><td><input type="password" class="form-control" id="userpass" name="userpass" placeholder="请输入密码"></td></tr><tr><td><input type="submit" class="btn btn-success" align="center" ></td></tr></table>
</form>
</div>
</body>
</html>
数据处理及验证–ValidateServlet.java
@WebServlet(name = "ValidateServlet", urlPatterns = "/chap3validatefi")
public class ValidateServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置响应的文本类型、编码方式response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();String userName = request.getParameter("username");String userPass = request.getParameter("userpass");System.out.println(userName + ";" + userPass);if ("admin".equals(userName) && "123".equals(userPass)) {out.print("成功登录,正在用forward方法跳转新的资源");// 创建request范围的变量userName-adminrequest.setAttribute("userName ", "admin");// 创建RequestDispatcher对象RequestDispatcher rd = request.getRequestDispatcher("/chapter3jsp/welcomeva.jsp");// 转发请求rd.forward(request, response);} else {out.print("登录失败,正在用include方法跳转新的资源");out.print("用户名或者密码错误,请重新输入!");RequestDispatcher rd = request.getRequestDispatcher("/chapter3jsp/indextest.jsp");rd.include(request, response);}}
}
欢迎界面–welcomeva.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"><title>登录成功</title>
</head>
<body>
<%=request.getParameter("username")%>欢迎你,登录成功!
</body>
</html>
代码的运行流程图
用户名和密码正确
用户名和密码错误
文件结构
webpro
src
chapter3
ValidateServlet.java
web
chapter3jsp
welcomeva.jsp
indextest.jsp
代码实例--请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include相关推荐
- 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
当一个 Web资源 收到客户端的请求后,如果希望服务器通知另一个web资源处理请求,那么这时可以通过 RequestDispatcher 接口的实例对象实现. web资源分为静态和动态 静态资源 静态 ...
- unity3d为对象添加脚本的两种方法
首先添加一个物体,然后新建一个C#脚本.接下去有两种方法把C#脚本与物体绑定. 1.在类声明上方添加如下代码: [AddComponentMenu("a/b")] 这句话表示在该物 ...
- js对象转换为数组的两种方法
第一种方法: Object.values(obj) 示例: var obj = { name: '小明', age: 22 }; console.log( Object.values(obj) ); ...
- 修改对象属性名的两种方法
每天都能遇到奇奇怪怪的问题哈 修改前的数据 let HouChen = [{ name: '羽神', 年龄: 13, sex: '女', userList: [{ id: 1, Z_name: '钢铁 ...
- java 请求转发_javaweb之请求的转发和重定向
1.什么是请求转发和请求重定向? 请求转发: xxServlet收到请求,然后直接转发给yyServlet,然后yyServlet返回给客户端.整个过程中,客户端发出一个请求,收到一个响应. 重定向: ...
- java类图与代码实例
在 Java编程中,类图是一个非常重要的概念.类图的作用是用来展示类的结构以及类之间的关系.通过类图,可以很方便地展示出对象之间的关系.下面我将使用实例来演示一下我在学习 Java时的类图. 首先我们 ...
- core 实例化接口_实例讲解Springboot整合MongoDB进行CRUD操作的两种方式
1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...
- 06_Request对象封装请求信息(获取请求信息,和把前端请求转发到当前服务器其他资源)
请求头运用 解决浏览器的兼容性问题 解决获取中文请求参数值 乱码问题 Referer作用:防盗链,统计访问 两个模块需要开两个服务器,分别设置不同虚拟目录和端口号 获取请求数据 获取请求行数据 获取请 ...
- Request对象实现请求转发
一.请求转发 指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理. 在Servlet中实现请求转发的两种方式: 通过ServletContext的getRequestDisp ...
最新文章
- 那还剩下多少学习激情?
- docker 无法正常启动 解决方法
- C# delegate and event
- Android开发之旅:组件生命周期(二)
- Spring Boot 单元测试二三事
- 列表迭代器ListIterator的用法
- JavaScript实现页面滚动到div区域div以动画方式出现
- Android中常见的MVC/MVP/MVVM模式
- Ubuntu 16.04 安装 MPI(Message Passing Interface)
- 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表、
- Zepto:实现移动端tab选项
- RoboCode 参考代码
- ThinkPHP5小区物业管理系统
- 如何区分字母大写I小写字母l以及数字1
- [机器视觉]摄像机标定(2) 张正友标定最详细推导
- 采用java编写一个软件,100以内的口算题【软件构造大作业】
- Android自定义进度条拖动,Android之ProgressBar(进度条)和SeekBar(拖动条)
- 什么是生态型平台企业?
- 缺失msvcr120.dll一般性问题如何解决
- 4G无线WIFI太阳能低功耗监控摄像头野外4G监控无电无网远程摄像机
热门文章
- PAT甲级1031 Hello World for U:[C++题解]模拟、数学运算
- Acwing900. 整数划分[计数类dp]:完全背包解法
- tcp/ip 协议栈Linux源码分析五 IPv6分片报文重组分析一
- python调用pyd_Python生成pyd文件
- 论文公式编号右对齐_word技能之添加样式以及公式自动编号
- 文本编辑器创建状态栏
- 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
- php分页样式,thinkphp分页样式修改
- 崩溃重启_三星手机大量系统崩溃,黑屏乱码无限重启,三星用户一片哀嚎
- linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?