java web中路径问题。
转自:http://blog.csdn.net/liang5630/article/details/38474543
如有侵权,请及时联系本人及时删除
在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对。
java web中的路径使用按我的分法可以分两种情况,当然啦两者使用相对路径是一致,本文只说绝对路径。
情况一、指向外部的web组件和本身关系不大的,这一类的有:html中使用路径的标签,比如<a>标签中的href;servlet和jsp中的重定向sendRedirect(path);
情况二、指向内部的web组件和本身有关系的,这一类我暂时看到的有:servlet或者jsp的转发
假设在myapp项目下有个login.html,index.jsp,还写了两个servletA和servletB.
在web.xml中的地址配置:
<url-pattern>/servlet/servletA</url-pattern>
<url-pattern>/servlet/servletB</url-pattern>
在情况一中:若在路径中以/开头,则这一/相当于http://localhost:8080/
1、login.html有个form表单有提交给servletA,那么action要填的路径:
绝对路径方式:action="/myapp/servlet/servletA" ------http://localhost:8080/myapp/servlet/servletA
相对路径方式:action="servlet/servletA" ------http://localhost:8080/myapp/servlet/servletA
2、login.html有个<a>链接到index.jsp 那么
绝对路径方式:href="/myapp/index.jsp" ------http://localhost:8080/myapp/index.jsp
相对路径方式:action="index.jsp" ------http://localhost:8080/myapp/index.jsp
3、index.jsp中重定向到servletA
绝对路径方式:sendRedirect("/myapp/servlet/servletA"); ------http://localhost:8080/myapp/servlet/servletA
相对路径方式:sendRedirect("servlet/servletA"); ---http://localhost:8080/myapp/servlet/servletA
在情况二中:若在路径中以/开头,则这一/相当于http://localhost:8080/myapp/
1.servletA转发到servletB
绝对路径方式:request.getRequestDispatcher("/servlet/servletB").forward(request, response);
--------http://localhost:8080/myapp/servlet/servletB
相对路径方式:request.getRequestDispatcher("servlet/servletB").forward(request, response);
--------http://localhost:8080/myapp/servlet/servletB
注意:
建议使用绝对路径,相对路径是相对于当前浏览器地址栏的路径(源地址)。
可能会出现:你在某个页面写了一个相对路径(目标路径),因为转发是不改变地址的,那么要是别人是通过转发到达你的这个页面的,那么地址栏的源地址就是不确定的,既然不确定你使用相对路径相对于这个不确定的路径就极有可能出错,所以建议使用绝对路径,这样可避免这种问题。
获得项目路径和绝对路径:
项目路径:String path=request.getContextPath(); ---- /myapp
String p=this.getServletContext().getRealPath("/"); ----- G:\environment\tomcat\webapps\myapp\
总结:
这里主要弄明白是指向外部的还内部的,外部时"/"就是代表主机路径,内部时"/"就是代表当前项目路径.
java web中路径问题。的更多相关文章
- java web中servlet、jsp、html 互相访问的路径问题
java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...
- Java web中常见编码乱码问题(一)
最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...
- Java Web 中使用ffmpeg实现视频转码、视频截图
Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html ...
- Java Web 中 过滤器与拦截器的区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...
- JAVA WEB 中的编码分析
JAVA WEB 中的编码分析 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-co ...
- Java web中常见编码乱码问题(二)
根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析: 2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...
- 深入分析Java Web中的编码问题
编码问题一直困扰着我,每次遇到乱码或者编码问题,网上一查,问题解决了,但是实际的原理并没有搞懂,每次遇到,都是什么头疼. 决定彻彻底底的一次性解决编码问题. 1.为什么要编码 计算机的基本单元是字节, ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...
- java web 中 读取windows图标并显示
java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils; import java.awt.Graphics; import j ...
随机推荐
- Spring框架系列(六)--事务Transaction
本文绝大部分内容为转载,原文地址:https://blog.csdn.net/trigl/article/details/50968079 除此之外,后面还有延伸内容 事务在企业日常开发中几乎是一定会 ...
- layer实现窗口抖动效果
function showMsg(msg, icon){ layer.msg(msg, { //1:正确:2:错误:3:询问:4:锁定:5:失败:6:成功:7:警告:16:加载 icon : icon ...
- clock_gettime 用法
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/sta ...
- ERROR: Field 'PostId' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement
例子: Post p = new Post(); p.setPostId(3); p.setPostName("技术"); 在执行数据保持时提示session.save(p); 的 ...
- C++中重载,重写,隐藏的区别
重载: 重载是指在同一个作用域下,函数的函数名相同,但是函数参数的个数,或者参数的类型,参数的顺序不同.这时函数之间就构成了重载关系,这里需要注意的是,如果函数的参数列表完全相同,仅仅是返回值类型不同 ...
- 数塔(hdoj 2084,动态规划递推)
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...
- mysql服务无法启动(1067错误)时数据备份的经验
mysql服务无法启动(1067错误)时数据备份的经验 背景 方法 背景 在已安装MySQL5.5的情况下,再次安装 MySQL5.7时,因为MySQL5.7是压缩文件安装的方式,复制MySQL5.5 ...
- java.lang unsupported classversion解决方法
设置编译的jdk和运行的jdk环境版本是否一致.一般都是jdk导致的.刚开始用jdk1.6编译运行,死活不行,换成jdk1.7运行也是1.7,ok
- Glossary in Turbulence
Table of Contents 1. Concepts/Glossary 1.1. Turbulent eddy viscosity ,μt 1.2. Turbulent kinetic ener ...
- 用记事本写第一个Java程序
public class Welcome{ public static void main(String[] args){ System.out.println("我是尚学堂的高淇,很高兴认 ...