Java 之 Servlet 跳转

页面跳转是开发一个web应用经常会发生的事情。

跳转说明

跳转的方式有两种,服务端跳转客户端跳转

服务端跳转

在Servlet中进行服务端跳转的方式:

request.getRequestDispatcher("success.html").forward(request, response);

服务端跳转可以看到浏览器的地址依然是/login 路径,并不会变成success.html

file

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String name = request.getParameter("name");
        String password = request.getParameter("password");

        if ("admin".equals(name) && "123".equals(password)) {
            request.getRequestDispatcher("success.html").forward(request, response);
        }

    }

}

客户端跳转

在Servlet中进行客户端跳转的方式:

response.sendRedirect("fail.html");

可以观察到,浏览器地址发生了变化

file

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String name = request.getParameter("name");
        String password = request.getParameter("password");

        if ("admin".equals(name) && "123".equals(password)) {
            request.getRequestDispatcher("success.html").forward(request, response);
        }
        else{
            response.sendRedirect("fail.html");
        }

    }

}

服务端跳转与客户端跳转图示

file

为者常成,行者常至