可以让请求从服务器端跳转到客户端或跳转到其它Servlet类。
地址栏不发生改变
先编写一个index.jsp文件,用户输入文本信息以后提交到Servlet_02类。
假如用户从浏览器上输入的是:注册,就转发到Servlet_03类去处理
假如用户从浏览器上输入的是:登录,就转发到Servlet_03类去处理
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="servlet_02">Hello Servlet</a>
<%--将表单数据转到servlet_02类的service方法去处理这个请求--%>
<form action="servlet_02" method="get">
<%-- 这里的name的参数名称要和需要提交到Servlet_02类里的变量名一样--%>
<%-- String str = req.getParameter("string"); --%>
<input type="text" name="string">
<input type="submit">
<%-- <button>登录</button>--%>
</form>
</body>
</html>
编写Servlet_02类:
package com.servlet.example;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servlet_02")
public class servlet_02 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8"); // 设置从浏览器传过来的参数的编码格式
String str = req.getParameter("string"); // 接收从浏览器传送过来的参数值
System.out.println("Servlet_02已执行: " + str);
/*
假如收到的str的值为:注册,则转发给 servlet_03类,输出:用户想注册
假如收到的str的值为:登录,则转发给 servlet_04类,输出:用户想登录
*/
if(str.equals("注册")){
// 将请求转发到 Servlet_03类去处理
req.getRequestDispatcher("servlet_03").forward(req,resp);
}
else if(str.equals("登录")){
// 将请求转发到 Servlet_04类去处理
req.getRequestDispatcher("servlet_04").forward(req,resp);
}
}
}
输出结果:
也可以跳转到客户端( 前段,相关的web界面)
else if(str.equals("登录")){
// 将请求转发到 Servlet_04类去处理
// req.getRequestDispatcher("servlet_04").forward(req,resp);
// 将请求转发到客户端( login.html )
req.getRequestDispatcher("/login.html").forward(req,resp);
}