本随笔这是作为一个记录使用,以备后查。项目完成之后本地部署OK,本地Linux部署OK,都可以正常的访问,可是当我把它部署到服务器上面的时候,首页可以正常访问,可是当发出请求的时候却报错误了,说找不到定义的请求。我很纳闷,本地都OK为什么只有在服务器才能找不到请求。不过按照常理我还是一步一步的来开始排错。

  第一步,查看项目部署成功,和部署路径无关,OK。

  第二步,查看web.xml以及struts的请求配置,完全OK,没有问题。

  第三步,既然部署没有问题,请求配置都OK,如果不是机器的原因那么只有可能是发送请求的路径有问题。

折腾了很久都没有发现第三步中的问题出现在什么地方。因为在每个请求前我以为我都获取了绝对路径,所以和部署的路径位置没有关系。在请求的前面我加了获取绝对路径的EL表达式${pageContext.request.contextPath},我以为这个就可以获取完整的路径,其实不然。因为这个问题,很多时间浪费过去了。我把项目部署在本地直接通过项目名称然后加上请求的方式直接访问,发现是可以的,而当项目部署在服务器上面的时候却不到找到请求的定义。最后我注意到我输入的请求唯一的区别就是一个我都没有加上端口号。

  第四步,会不会是因为端口号引起的问题。如果我本地的端口号改成了和浏览器的80端口号一样,而服务器的端口号我没有修改所以还是8080,而且${pageContext.request.contextPath} 没有能力获取端口号,那么是不是我就等于找到问题了。果然我通过在访问服务器的请求加上了8080端口发现

访问OK,没有问题。这个时候我才意识到我将本地的端口号修改了而服务器的端口号没有修改,而且${pageContext.request.contextPath}不能够获

取端口号,所以找不到请求。项目没问题,部署没问题,问题出现在${pageContext.request.contextPath}获取值上。

  那么我就好奇${pageContext.request.contextPath}, <%=request.getContextPath()%><br/> 获取到具体值到底是什么,他没有获取我想要的http://localName.com:port/项目名称(上下文)吗??通过实验我发现,只是简单做个测试,代码不规范:

  

"request.getContextPath()的值是   "<%=request.getContextPath()%><br/>
"pageContext.request.contextPath的值是"${pageContext.request.contextPath}<br/>

  

通过运行我们发现了<%=request.getContextPath()%>和${pageContext.request.contextPath}获取的结果都是项目名(上下文),而不是我们想要的那个结果,可是如果我们想要获取项目的绝对路径和端口号我们有什么办法呢

  

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

通过运行结果可知<%=basePath%>可知结果是

  

我们获取了我们想要的结果又完整的路径和端口号还有项目的上下文环境,所以大功告成了。我把项目中的${pageContext.request.contextPath}都替换成了<%=basePath%>,然后就完全的解决问题了。

第五步,做程序需要自己动手实践而不应该只是想,还是代码最实在靠谱,解决了一个问题,又涨了不少知识,加油。

JSP之项目路径问题(${pageContext.request.contextPath},<%=request.getContextPath()%>以及绝对路径获取)的更多相关文章

  1. ${pageContext.request.contextPath}是JSP取得绝对路径(转载)

    ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...

  2. ${pageContext.request.contextPath} JSP取得绝对路径

    一.问题     JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题      相对路径固然比较灵活,但如果想复制页面内的代 ...

  3. 绝对路径${pageContext.request.contextPath}

    ${pageContext.request.contextPath}用于解决使用相对路径时出现的问题,它的作用是取出所部署项目的名字. 如图,${pageContext.request.context ...

  4. 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程

    以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示: 图一  添加商品界面 系统的代码目录结构及add.jsp代码如图二所示: 图二   系统的代码目录结构及add.js ...

  5. (转)绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程

    以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示: 图一  添加商品界面 系统的代码目录结构及add.jsp代码如图二所示: 图二   系统的代码目录结构及add.js ...

  6. 关于${pageContext.request.contextPath}的理解 (转载)

    ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...

  7. 关于${pageContext.request.contextPath}的理解(转载)

    ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...

  8. ${pageContext.request.contextPath}的解释以及和request.contextPath的区别

    JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题 l 相对路径固然比较灵活,但如果想复制页面内的代码却变得比较困难,因为不 ...

  9. 关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?

    这里的疑问在于pageContext和request都是JSP中的内置对象之一,为什么不直接用${request.contextPath}来获取项目路径? 出现这种疑问,其实是将JSP的内置对象和EL ...

随机推荐

  1. Akka 简介与入门

    Akka 简介与入门 http://www.thinksaas.cn/group/topic/344095/ 参考官网  http://akka.io/ 开源代码  https://github.co ...

  2. [SignalR]Self-Host

    原文:[SignalR]Self-Host SignalR 的Self-Host,可以将客户端脚本需要调用的服务端后台代码寄宿在诸如控制台应用程序中,作为寄宿端需要.NET 4.5以及jquery.s ...

  3. [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统

            大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...

  4. 有愿意共同发展USB固件做?

    有愿意共同发展USB固件做.现在,它使用STC89S52+PDIUSBD12(环教你玩USB开发板)它实现了一个USB键盘,项目地址:https://github.com/artprogramming ...

  5. BZOJ 2115 Wc2011 Xor DFS+高斯消元

    标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...

  6. java.lang.ClassCastException: java.lang.NoClassDefFoundError cannot be cast to java.lang.RuntimeException

    不是一个Exception,而是一个Error,要强制转成Exception类型,就出错了java.lang.NoClassDefFoundError java.lang.RuntimeExcepti ...

  7. Base64中文不能加密问题

    最近用到了Base64.js来对url参数进行加密,字母和数字都可以很好地加密/解密. 但测试中文时发现不能进行转换,貌似Base64.js不支持中文字符. 联想到encodeURI()对url的编码 ...

  8. linux Apache rotatelogs 故障原因及解决方案未生效

    rotatelogs 截断日志.构造.但保存vhost.conf 之后.serverhttpd -k restart 还是无法成功重新启动. 日志文件: (2)No such file or dire ...

  9. SharePoint 2010 中创建超链接到Pop-Up对话框

    SharePoint 2010 中创建超链接到Pop-Up对话框         SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面 ...

  10. 很酷的CSS3仿Facebook登录表单

    原文:很酷的CSS3仿Facebook登录表单 今天看到一款很不错的CSS3登录表单,外观是仿Facebook的登录表单,还挺不错的,另外也支持简单的表单输入框验证.下图是表单的效果图: 我们也可以在 ...