• Servlet跳转到JSP页面后的路径问题相关解释


    一、现象与概念

    1. 问题

    在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。

    2. 绝对路径概念

    相对于contextPath(当前Web应用的上下文)的路径。

    解决方案:超链接用绝对路径而不是相对路径。若/代表的是站点的根目录,在其前面加上contextPath。

    <a href="<%= request.getContextPath() %>/TestServlet">To B</a>

    二、JavaWeb开发中的'/'含义总结

    1. 当前Web应用的根路径

    '/'代表http://localhost:8080/contextPath/ :由Servlet来处理的地址

    1)转发:request.getRequestDispatcher("/path/b.jsp").forword(request, response);

    2)web.xml文件中映射Servlet访问路径

    <servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

    3)各种定制标签中的'/'。

    2. Web站点的根路径

    '/'代表http://localhost:8080/ :由浏览器来处理的地址

    1)超链接:<a href="/TestServlet">To B</a>

    2)form标签中的action:<form action="/b.jsp">

    3)重定向:response.sendRedirect("/b.jsp");

    3.站点根目录和css路径问题 (jsp是服务器端程序,地址是变化的,引用时一般用站点根目录的相对路径)
    我们称类似这样的相对路径/test/…. 为相对于站点根目录 的相对路径 。
    当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forward这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">类似href="one.css"和../../one.css的html相对路径是相对于引用这个css的文件(a.jsp)的相对路径 。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的 ,所以这样的引用肯定是出错的。
    所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。
    因此上述错误应更正为href=”/test/one.css” 类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径 ,就能正确使用所定义的css样式了。

    页面跳转问题:

    Forward 高, Redirect 低, 因为Redirect 的流程是这样的, request1 sent to server, server return back to client, 然后

    request2 then sent to server. 但是Forward 仅在server side处理, 对client side 是透明的. 由于Redirect 有两次传输, 所以效率低.

    范围:
    由于对request.setAttribute() 来说, 它携带的对象生存范围只在request内, 所以Redirect 方式会导致request携带的对象丢失.

  • 相关阅读:
    这篇通俗实用的Vlookup函数教程,5分钟就可以包你一学就会
    nginx 常见正则匹配符号表示
    Nginx if 条件判断
    nginx 将请求全部指向到一个页面
    windows10下面部署nginx(解决文件名中文乱码问题)
    二.Nginx反向代理和静态资源服务配置
    Nginx的使用(一)代理静态文件
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    如何让NGINX显示文件夹目录
    Nginx 如何设置反向代理 多服务器,配置区分开来,单独文件保存单个服务器 server 主机名配置,通过 include 实现
  • 原文地址:https://www.cnblogs.com/sbclmy/p/9053000.html
Copyright © 2020-2023  润新知