验证requset的forward()、include()跳转

  1. indextest.jsp :接受用户输入的用户名和密码
  2. 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相关推荐

  1. 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include

    当一个 Web资源 收到客户端的请求后,如果希望服务器通知另一个web资源处理请求,那么这时可以通过 RequestDispatcher 接口的实例对象实现. web资源分为静态和动态 静态资源 静态 ...

  2. unity3d为对象添加脚本的两种方法

    首先添加一个物体,然后新建一个C#脚本.接下去有两种方法把C#脚本与物体绑定. 1.在类声明上方添加如下代码: [AddComponentMenu("a/b")] 这句话表示在该物 ...

  3. js对象转换为数组的两种方法

    第一种方法: Object.values(obj) 示例: var obj = { name: '小明', age: 22 }; console.log( Object.values(obj) ); ...

  4. 修改对象属性名的两种方法

    每天都能遇到奇奇怪怪的问题哈 修改前的数据 let HouChen = [{ name: '羽神', 年龄: 13, sex: '女', userList: [{ id: 1, Z_name: '钢铁 ...

  5. java 请求转发_javaweb之请求的转发和重定向

    1.什么是请求转发和请求重定向? 请求转发: xxServlet收到请求,然后直接转发给yyServlet,然后yyServlet返回给客户端.整个过程中,客户端发出一个请求,收到一个响应. 重定向: ...

  6. java类图与代码实例

    在 Java编程中,类图是一个非常重要的概念.类图的作用是用来展示类的结构以及类之间的关系.通过类图,可以很方便地展示出对象之间的关系.下面我将使用实例来演示一下我在学习 Java时的类图. 首先我们 ...

  7. core 实例化接口_实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  8. 06_Request对象封装请求信息(获取请求信息,和把前端请求转发到当前服务器其他资源)

    请求头运用 解决浏览器的兼容性问题 解决获取中文请求参数值 乱码问题 Referer作用:防盗链,统计访问 两个模块需要开两个服务器,分别设置不同虚拟目录和端口号 获取请求数据 获取请求行数据 获取请 ...

  9. Request对象实现请求转发

    一.请求转发 指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理. 在Servlet中实现请求转发的两种方式: 通过ServletContext的getRequestDisp ...

最新文章

  1. 那还剩下多少学习激情?
  2. docker 无法正常启动 解决方法
  3. C# delegate and event
  4. Android开发之旅:组件生命周期(二)
  5. Spring Boot 单元测试二三事
  6. 列表迭代器ListIterator的用法
  7. JavaScript实现页面滚动到div区域div以动画方式出现
  8. Android中常见的MVC/MVP/MVVM模式
  9. Ubuntu 16.04 安装 MPI(Message Passing Interface)
  10. 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表、
  11. Zepto:实现移动端tab选项
  12. RoboCode 参考代码
  13. ThinkPHP5小区物业管理系统
  14. 如何区分字母大写I小写字母l以及数字1
  15. [机器视觉]摄像机标定(2) 张正友标定最详细推导
  16. 采用java编写一个软件,100以内的口算题【软件构造大作业】
  17. Android自定义进度条拖动,Android之ProgressBar(进度条)和SeekBar(拖动条)
  18. 什么是生态型平台企业?
  19. 缺失msvcr120.dll一般性问题如何解决
  20. 4G无线WIFI太阳能低功耗监控摄像头野外4G监控无电无网远程摄像机

热门文章

  1. PAT甲级1031 Hello World for U:[C++题解]模拟、数学运算
  2. Acwing900. 整数划分[计数类dp]:完全背包解法
  3. tcp/ip 协议栈Linux源码分析五 IPv6分片报文重组分析一
  4. python调用pyd_Python生成pyd文件
  5. 论文公式编号右对齐_word技能之添加样式以及公式自动编号
  6. 文本编辑器创建状态栏
  7. 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
  8. php分页样式,thinkphp分页样式修改
  9. 崩溃重启_三星手机大量系统崩溃,黑屏乱码无限重启,三星用户一片哀嚎
  10. linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?