代码实例--请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include

本文详细介绍了如何在Java Servlet中使用forward()和include()方法,从indextest.jsp获取用户输入,通过ValidateServlet进行验证。成功则通过forward跳转到welcomeva.jsp,失败时利用include返回并显示错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

验证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-admin
            request.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值