response、请求转发和重定向、cookie(学习笔记)

login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="check.jsp" method="post">
        <!--默认是get提交方式,method="get"-->
        用户名:<input type="text" name="uname"><br>
        密码:<input type="password" name="upwd"><br>
             <input type="submit" value="登陆">
    </form>
</body>
</html>

check.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%//重定向、请求转发
    //地址栏是否改变 是 否
    //是否保留第一次请求时的数据 
        request.setCharacterEncoding("utf-8");
        String name=request.getParameter("uname");
        String pwd=request.getParameter("upwd");
        if(name.equals("abc") && pwd.equals("abc")){
            //response.sendRedirect("success.jsp");//页面跳转 重定向 导致数据丢失 
            request.getRequestDispatcher("success.jsp").forward(request, response);//页面跳转请求转发
        }else{
            out.print("用户名或密码有误");
        }
    %>
</body>
</html>

success.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    登陆成功!<br>
    欢迎您:
    <%
        String name=request.getParameter("uname");
        out.print(name);
    %>
</body>
</html>

Java中的请求转发重定向都是用于在不同的Servlet之间进行页面跳转的方式,但它们的实现方式和效果是不同的。 请求转发是指在当前Servlet中处理完请求后,将请求转发给另一个Servlet进行处理,转发后的请求由另一个Servlet来产生响应。请求转发的代码如下: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("/b"); dispatcher.forward(request, response); ``` 其中,`/b`是要转发到的Servlet的路径,`request`和`response`是当前Servlet的请求和响应对象,转发后的请求和响应对象也是这两个对象。 请求转发的特点是:转发后的请求和响应对象与原始请求和响应对象是同一个,因此它们可以共享请求和响应的信息,比如请求参数、请求属性等。此外,请求转发是在服务器端完成的,客户端并不知道发生了转发,因此地址栏中的URL不会改变。 重定向是指在当前Servlet中处理完请求后,将请求重定向到另一个Servlet进行处理,重定向后的请求由浏览器重新发起,由另一个Servlet来产生响应。重定向的代码如下: ```java response.sendRedirect("/b"); ``` 其中,`/b`是要重定向到的Servlet的路径,`response`是当前Servlet的响应对象。 重定向的特点是:重定向后的请求和响应对象与原始请求和响应对象是不同的,因此它们不能共享请求和响应的信息。此外,重定向是在客户端完成的,因此地址栏中的URL会改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值