建设门户网站价格,零点研究咨询集团官方网站建设,做网站优化有必要,网站备案 年审重定向
1、定义
用户通过浏览器发送一个请求#xff0c;Tomcat服务器接收这个请求#xff0c;会给浏览器发送一个状态码302#xff0c;并设置一个重定向的路径#xff0c;浏览器如果接收到了这个302的状态码以后#xff0c;就会去自动加载服务器设置的路径
一个页面跳转…
重定向
1、定义
用户通过浏览器发送一个请求Tomcat服务器接收这个请求会给浏览器发送一个状态码302并设置一个重定向的路径浏览器如果接收到了这个302的状态码以后就会去自动加载服务器设置的路径
一个页面跳转到另外一个页面应用场景、登录页面跳转到主页面 login.jspLoginServletmain.jsp
2、特征
①重定向的过程是浏览器客户端的行为
②实际上浏览器做了2次请求当点击登录按钮的时候做了两次请求分别是请求login和main.jsp
③注意上一次请求的request对象会丢失
④重定向有一个非常明显的特征即浏览器的url变化了 3、核心代码
重定向就一句核心代码
response.sendRedirect(main.jsp);
//就这一行代码但是这一行代码必须写在doGet或者doPost方法中
4、测试
login.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
%--请求RedirectServlet--%
form actionredirect methodpostinput typetext nameusername/brinput typetext namepassword/brinput typesubmit value提交
/form
/body
/html
RedirectServlet
package com.by.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class RedirectServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置字符编码request.setCharacterEncoding(utf-8);String username request.getParameter(username);String password request.getParameter(password);request.setAttribute(username, username);request.setAttribute(password, password);//登录以后跳转到主页//重定向//这个TestLoginServlet里面的数据是不能传给target.html的response.sendRedirect(main.jsp);}
}
web.xml servletservlet-nameredirect/servlet-nameservlet-classcom.by.servlet.RedirectServlet/servlet-class/servletservlet-mappingservlet-nameredirect/servlet-nameurl-pattern/redirect/url-pattern/servlet-mapping
main.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
这是main页面br
%--
%request.getAttribute(username)%
%request.getAttribute(password)%
--%${username}
${password}
/body
/html
测试 转发
1、定义
用户发送数据请求到服务器服务器接收当前请求会调用内部方式转发处理该请求最终把响应给客户端
2、特征
①转发是服务器的行为
②浏览器在这个过程中只有一次行为
③转发可以带有数据 request对象中
④url不会发生任何的变化 3、核心代码
request.getRequestDispatcher(“main.jsp”).forward(request,response);
//这一行代码就表示进行了转发url没有变但是响应的结果却是一次请求干了两个活
4、测试
login.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
%--请求ForwardServlet--%
form actionforward methodpostinput typetext nameusername/brinput typetext namepassword/brinput typesubmit value提交
/form
/body
/html
ForwardServlet
package com.by.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ForwardServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置字符编码request.setCharacterEncoding(utf-8);String username request.getParameter(username);String password request.getParameter(password);request.setAttribute(username, username);request.setAttribute(password, password);//登录以后跳转到主页//重定向//这个TestLoginServlet里面的数据是不能传给target.html的request.getRequestDispatcher(main.jsp).forward(request, response);}
}
web.xml servletservlet-nameforward/servlet-nameservlet-classcom.by.servlet.ForwardServlet/servlet-class/servletservlet-mappingservlet-nameforward/servlet-nameurl-pattern/forward/url-pattern/servlet-mapping
main.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
这是main页面br
${username}
${password}
/body
/html
测试 总结
转发用forword 重定向用redirect
1.请求次数 转发只请求一次 重定向请求两次2.地址栏变化 转发地址栏不发生变化 重定向地址栏发生变化3.发生位置
转发发生在服务器而浏览器全然不知 重定向发生在浏览器
4.访问资源 转发只能访问当前服务器的资源 重定向可以访问其他服务器的资源5.资源共享
转发:可以使用request对象来共享资源
重定向: 不能使用request对象共享资源