java web中servlet、jsp、html 互相访问的路径问题

在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对。 java web中的路径使用按我的分法可以分两种情况,当然两者使用相对路径是一致,本文只说绝对路径。 情况一、指向外部的web组件和本身关系不大的,这一类的有:html中使用路径

在html">java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对。

html">java web中的路径使用按我的分法可以分两种情况,当然啦两者使用相对路径是一致,本文只说绝对路径。

情况一、指向外部的web组件和本身关系不大的,这一类的有:html中使用路径的标签,比如标签中的href;servlet和jsp中的重定向sendRedirect(path);

情况二、指向内部的web组件和本身有关系的,这一类我暂时看到的有:servlet或者jsp的转发

假设在myapp项目下有个login.html,index.jsp,还写了两个servletA和servletB.

在web.xml中的地址配置:

/servlet/servletA

/servlet/servletB

在情况一中:若在路径中以/开头,则这一/相当于:8080/

1、login.html有个form表单有提交给servletA,那么action要填的路径:

绝对路径方式:action="/myapp/servlet/servletA" ------:8080/myapp/servlet/servletA

相对路径方式:action="servlet/servletA" ------:8080/myapp/servlet/servletA

2、login.html有个链接到index.jsp 那么

绝对路径方式:href="/myapp/index.jsp" ------:8080/myapp/index.jsp

相对路径方式:action="index.jsp" ------:8080/myapp/index.jsp

3、index.jsp中重定向到servletA

绝对路径方式:sendRedirect("/myapp/servlet/servletA"); ------:8080/myapp/servlet/servletA

相对路径方式:sendRedirect("servlet/servletA"); ---:8080/myapp/servlet/servletA

在情况二中:若在路径中以/开头,则这一/相当于:8080/myapp/

1.servletA转发到servletB

绝对路径方式:request.getRequestDispatcher("/servlet/servletB").forward(request, response);

--------:8080/myapp/servlet/servletB

相对路径方式:request.getRequestDispatcher("servlet/servletB").forward(request, response);

--------:8080/myapp/servlet/servletB

注意:

建议使用绝对路径,相对路径是相对于当前浏览器地址栏的路径(源地址)。

可能会出现:你在某个页面写了一个相对路径(目标路径),因为转发是不改变地址的,那么要是别人是通过转发到达你的这个页面的,那么地址栏的源地址就是不确定的,既然不确定你使用相对路径相对于这个不确定的路径就极有可能出错,所以建议使用绝对路径,这样可避免这种问题。

获得项目路径和绝对路径:

项目路径:String path=request.getContextPath(); ---- /myapp

String p=this.getServletContext().getRealPath("http://www.2cto.com/"); ----- G:\environment\tomcat\webapps\myapp\

总结:

这里主要弄明白是指向外部的还内部的,外部时"http://www.2cto.com/"就是代表主机路径,内部时"http://www.2cto.com/"就是代表当前项目路径

 

java web中servlet、jsp、html 互相访问的路径问题的更多相关文章

  1. Java Web之Servlet中response、request乱码问题解决

    Java Web之Servlet中response.request乱码问题解决   一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...

  2. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  3. web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

    web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的We ...

  4. java web中路径问题。

    转自:http://blog.csdn.net/liang5630/article/details/38474543 如有侵权,请及时联系本人及时删除 在java web种经常出现 404找不到网页的 ...

  5. Java Web中的mapper,service,controller,model

    Java Web中的mapper,service,controller,model作用分别是:java web中mapper是对象持久化映射层,一般会继承ibatis或者mybatisservive是 ...

  6. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  7. 【中文乱码】深入分析 Java Web 中的中文编码问题

    深入分析 Java Web 中的中文编码问题 1.几种常见的编码格式 1.1 为什么要编码 在计算机中存储信息的最小单元是 1 个字节,即 8 个 bit, 所以能表示的字符范围是 0 ~ 255 个 ...

  8. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  9. JDBC在Java Web中的应用

    JDBC在Java Web中的应用 制作人:全心全意 在Java Web开发中,JDBC的应用十分广泛.通常情况下,Web程序操作数据库都是通过JDBC实现,即使目前数据库方面的开源框架层出不穷,但其 ...

随机推荐

  1. File.separator与 \分隔符

    在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...

  2. jps出现process information unavailable的问题

    jps出现process information unavailable(当然我ps -aux了,确定该进程是存在的),网上查找了原因,我的理解是这样: 因为jps的进程信息是存储在/tmp/hspe ...

  3. 1015 Reversible Primes (20)(20 point(s))

    problem A reversible prime in any number system is a prime whose "reverse" in that number ...

  4. 怎么处理stdClass::__set_state

    处理后 处理方法 function object2array_pre(&$object) { if (is_object($object)) { $arr = (array)($object) ...

  5. 【HDU 3662】3D Convex Hull

    http://acm.hdu.edu.cn/showproblem.php?pid=3662 求给定空间中的点的三维凸包上有多少个面. 用增量法,不断加入点,把新加的点能看到的面都删掉,不能看到的面与 ...

  6. [BZOJ5292][BJOI2018]治疗之雨(概率DP+高斯消元)

    https://blog.csdn.net/xyz32768/article/details/83217209 不难找到DP方程与辅助DP方程,发现DP方程具有后效性,于是高斯消元即可. 但朴素消元显 ...

  7. 【BZOJ】4260: Codechef REBXOR【Trie树】【前后缀异或最大】

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2218  Solved: 962[Submit][Stat ...

  8. C#高级编程9-第10章 集合

    集合 1.集合接口和类型 接口 说明 IEnumerable<T> 如果foreach语句用于集合,就需要IEnumerable接口.这个借口定义了方法GetEnumerator(),他返 ...

  9. Git_安装Git

    最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Window ...

  10. Inspect a new tab · cyrus-and/chrome-remote-interface Wiki

    Inspect a new tab · cyrus-and/chrome-remote-interface Wiki Runtime.evaluate