zoukankan      html  css  js  c++  java
  • 彻底解决web开发中遇到的路径问题(下)

    接着讨论web开发中遇到的路径问题,其实路径问题用上部的知识就可以解决,下部主要是实践检验一下。

    现在看一看前台路径(html,css,js,jsp中的静态部分,ajax等):

    我在web.xml配置Servlet时,url-pattern均以/servlets/servletName的格式命名,故只出示一例Servlet的配置截图:

    就这个配置而言,我们要想请求到达该Servlet,就要提交一个http://localhost/pathTest/servlets/FirstServlet这样的请求。

    我在上部说过:form表单(属于html),其参考路径是http://localhost/,加上form表单中的提交路径/pathTest/servlets/FirstServlet。

    请求的绝对路径正是http://localhost/pathTest/servlets/FirstServlet,所以下面这个Servlet可以正常访问(200)。

     而下面这个Servlet由于form的提交路径错误,故Servlet访问失败(404)。

    原因同理:参考路径:http://localhost+相对路径:/servlets/FirstServlet = http://localhost/servlets/FirstServlet,路径错误。

    题外话,说一个我踩过的坑:web.xml配置正确,表单提交路径也正确,但是服务器报500错误。

     

     

    原因是我以java为名分包,导致服务器到内置java包下乱找,自然找不到。所以我才知道为什么教程上都以com、org等开头打包,哭。

    下面说后台路径:

    由于在Servlet中书写的路径是后台路径,其参考路径是http://localhost/pathTest,如果相对路径是/pathTest/pages/index.html,那么绝对路径是http://localhost/pathTest/pathTest/pages/index.html,路径错误。

    所以说,路径问题分清前台路径与后台路径,记住它们的参考路径,是不是很简单了呢。

    故事还没完,年轻人:

    现在说一下一个特例:response.sendRedirect()方法。若其参数路径为以斜杠开头相对路径,那么这个后台路径是个特例。这是由sendRedirect()的本质决定的,该方法可以跳转到其它项目的资源,所以这个后台路径的参照路径为当前web服务器的根目录,如果不知道项目,根本不知道跳转到容器哪个项目。(可以使用request.getContextPath()获取路径,使代码灵活些)只有这种重定向的以斜杠开头的相对路径是特例,其它重定向遵循路径转化规律。

    所以重定向时,需要给以斜杠/开头的路径加上web项目名称。

     

  • 相关阅读:
    对文件下载的补充
    IBatisNet1.5学习配置篇
    IBatisnet Facility 的几种配置
    ERP术语 英文对照(部分)(参考)
    使用IBatisNet + Castle 开发DotNet软件
    JS屏蔽浏览器右键菜单
    恢复误删数据(SQL Server 2000)--Log Explorer
    IBatisNet1.5 映射文件Parameter Maps and Inline Parameters
    深圳电话订票基本步骤及所有的取票点地址电话
    DataFormatString格式化字符串
  • 原文地址:https://www.cnblogs.com/Libinkai/p/9377864.html
Copyright © 2011-2022 走看看