Servlet技术:请求转发与重定向
请求转发
在java后台servlet中,请求转发和重定向可以实现由一个servlet跳转到另一个servlet/前端页面。
请求转发:
Servlet将客户端请求直接将请求交给另一个Servlet或某个页面。
req.getRequestDispatcher(“新的请求路径”).forward(req,resp);
重定向:
重定向:
Servlet设置客户端重新发送一个新请求到另一个Servlet或某个页面。
resp.sendRedirect(“新的请求路径”);
例:
继续利用https://www.tinstu.com//478.html
前端 login.html 中的 action 链接 Servler3_a.java
有Servlet3_a 转发到 Servlet3_b
Servlet3_a
package cn.xtnotes.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.xtnotes.pojo.User;
import cn.xtnotes.service.UserService;
public class Servlet3_a extends HttpServlet {
UserService us=new UserService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gbk"); //设置请求数据编码
response.setCharacterEncoding("gbk");//设置响应数据编码
String uname=request.getParameter("uname");
String upwd=request.getParameter("upwd");
PrintWriter pw=response.getWriter();
if("123".equals(uname) && "123".equals(upwd)) {
pw.print("登录成功");
}else {
//请求转发到 Servlet3_b
request.getRequestDispatcher("/Servlet3_b").forward(request, response);
//重定向到 Servlet3_b
response.sendRedirect("http://127.0.0.1:8080/U8/Servlet3_b");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Servlet3_b.java
package cn.xtnotes.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.xtnotes.pojo.User;
import cn.xtnotes.service.UserService;
public class Servlet3_b extends HttpServlet {
UserService us=new UserService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gbk"); //设置请求数据编码
response.setCharacterEncoding("gbk");//设置响应数据编码
String uname=request.getParameter("uname");
String upwd=request.getParameter("upwd");
PrintWriter pw=response.getWriter();
pw.print("您属于的用户名和密码:"+uname+upwd);
pw.print("用户名和密码为错误(_b)");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
请求转发截图:
重定向运行截图:
(路径,和是否获取 参数存在差异)
请求转发和重定向的区别:
请求转发是一次请求,重定向是两次请求;
请求转发可以共享请求参数 ,重定向之后,就获取不了共享参数了;
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/503.html
文章版权归作者所有,未经允许请勿转载。
THE END