Servlet实现页面的跳转
Servlet实现页面的跳转有2种方式:转发与重定向。1、转发转发是在服务器端起作用的,当使用 forward() 方法时,Servlet 容器传递HTTP请求,从当前的 Servlet 或 JSP,此过程仍然在 request 的作用范围内。转发后,浏览器的地址栏内容不变。转发使用 HttpServletRequest 对象的 forward() 方法实现,对应的 Servlet 语...
Servlet实现页面的跳转有2种方式:转发与重定向。
1、转发
转发是在服务器端起作用的,当使用 forward() 方法时,Servlet 容器传递HTTP请求,从当前的 Servlet 或 JSP,此过程仍然在 request 的作用范围内。转发后,浏览器的地址栏内容不变。
转发使用 HttpServletRequest 对象的 forward() 方法实现,对应的 Servlet 语法格式如下:
request.getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response)
2、重定向
重定向是在用户的浏览器端工作的,是 Servlet 对浏览器做出响应后,浏览器再次发送一个新的请求。重定向后,浏览器的地址栏内容发生变化。
重定向使用 HttpServletResponse 对象的 sendRedirect() 方法实现,对应的 Servlet 和 JSP 语法格式如下:
response.sendRedirect(String location)
示例:编写用户登录功能,实现页面的跳转。
(1)创建 login.jsp 登录页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
<meta name="author" content="pan_junbiao的博客">
</head>
<body>
<div align="center">请输入登录信息
<form name="form1" method="post" action="servlet/LoginServlet">
<table>
<tr>
<td>用户:</td>
<td><input type="text" name="user" style="width:200px" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" style="width:200px"/></td>
</tr>
<!-- 以下是提交、取消按钮 -->
<tr>
<td>
<input type="submit" value="登录" />
</td>
<td>
<input type="reset" value="取消" />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
(2)创建 succeed.jsp 成功登录页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>成功登录</title>
<meta name="author" content="pan_junbiao的博客">
</head>
<body>
<h3>恭喜用户【<%= request.getParameter("user") %>】登录成功!</h3>
<p>您好,欢迎访问 pan_junbiao的博客</p>
<p>博客地址:https://blog.csdn.net/pan_junbiao</p>
</body>
</html>
(3)创建 LoginServlet.java 登录验证Servlet类。
package com.pjb.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 登录验证Servlet类
* @author pan_junbiao
*/
@WebServlet(name = "LoginServlet", urlPatterns = "/servlet/LoginServlet")
public class LoginServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// 将输出转换为中文
request.setCharacterEncoding("UTF-8");
// 设置输出为中文
response.setCharacterEncoding("UTF-8");
// 获取参数
String user = request.getParameter("user");
String password = request.getParameter("password");
// 登录验证信息
if (user.equals("pan_junbiao的博客") && password.equals("123456"))
{
// 如果验证成功,则转发succeed.jsp页面,并在页面显示用户名
request.getRequestDispatcher("/succeed.jsp").forward(request, response);
} else
{
// 如果验证失败,则重定向到登录页面
response.sendRedirect("/login.jsp");
}
}
}
执行结果:
(1)登录页面:
(2)成功登录页面:
经验:
转发和重定向:在刚刚学习转发和重定向的时候,在使用方面哪种方式进行页面的跳转?其实它们之间有一个很清晰的区别,那就是数据的传递。如果你想把数据通过 request 作用域传递到下一个页面或者 Servlet,那就使用转发。反之,就使用重定向。
更多推荐
所有评论(0)