javaweb 转发 request.getRequestDispatcher 会导致页面的引入外部文件无效吗?

发布于 2022-09-04 01:22:10 字数 1712 浏览 12 评论 0

我的一个页面 在doGet里面 转发给本身.
结果css 的样式全部消失了,body的背景图片也没有了

然后我就把css属性直接写在html文件里面 没用用外部文件引入了

但是img文件 不能这样做 还是要导入,只要转发了 就不行,背景图片会消失.

用sendRedirect方法的话可以正常

而且还有个问题想问下:
不是说转发的话地址栏里的地址是不会变的吗?
为什么我的地址栏里的地址变了?

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 Login extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("Login : registe doGet");
        //分别获得username 和 password 用字符串来接受
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        try {
            boolean loginBoolean = JDBC.loginSelect(username, password);
            if (loginBoolean) {
                System.out.println("Login : register :success");
                //点击登录 ,验证mysql成功后 转发到from01 页面
                request.getRequestDispatcher("/form01.html").forward(request, response);   
                
            }else {
                System.out.println("Login : register : fail");
                //点击登录 ,验证mysql失败 转发原页面         引入的外部文件会消失
                request.getRequestDispatcher("/login1/login.html").forward(request, response);   
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         doPost(request, response);
    }



}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

那片花海 2022-09-11 01:22:10

sendRedirect 是服务端通过http协议发送302实现的,相当于前端手动输入地址访问一样,引用资源的相对路径没有发送改变,所以可以正常访问。

forward 是服务端直接将跳转页面内容输出到当前请求地址上的, 所以页面引用资源的相对路径有可能发送了变化,找不到引用资源,所以访问不正常。

野味少女 2022-09-11 01:22:10

clipboard.png
request的dispatcher最常用的是转发给另一个Servlet,因为要带着request和response数据:

clipboard.png
ServletDemoOne.java:

clipboard.png

ServletDemoTwo.java:

clipboard.png
浏览器结果:

clipboard.png
地址并没有变化,不清楚你指的变化是什么,把dispatcher的地址改为index.jsp,仍然是这样的结果,
至于你说的图片加载的问题,我测试了一下,没有任何问题,dispatcher跳转不论是jsp还是html还是servlet都是可以加载上的:

clipboard.png

clipboard.png

漆黑的白昼 2022-09-11 01:22:10

路径不是说绝对不变的,如果有getParameter,会带参

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文