java web中servlet、jsp、html 互相访问的路径问题
java web中servlet、jsp、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 互相访问的路径问题的更多相关文章
- Java Web之Servlet中response、request乱码问题解决
		
Java Web之Servlet中response.request乱码问题解决 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...
 - Java Web 中使用ffmpeg实现视频转码、视频截图
		
Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html ...
 - web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?
		
web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的We ...
 - java web中路径问题。
		
转自:http://blog.csdn.net/liang5630/article/details/38474543 如有侵权,请及时联系本人及时删除 在java web种经常出现 404找不到网页的 ...
 - Java Web中的mapper,service,controller,model
		
Java Web中的mapper,service,controller,model作用分别是:java web中mapper是对象持久化映射层,一般会继承ibatis或者mybatisservive是 ...
 - 使用Intellij idea新建Java Web项目(servlet)    原理及初步使用
		
准备 JDK (配置JDK_HOME\bin 和 CLASSPATH) 注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本) 对于我们新手来说,JD ...
 - 【中文乱码】深入分析 Java Web 中的中文编码问题
		
深入分析 Java Web 中的中文编码问题 1.几种常见的编码格式 1.1 为什么要编码 在计算机中存储信息的最小单元是 1 个字节,即 8 个 bit, 所以能表示的字符范围是 0 ~ 255 个 ...
 - Java Web 中 过滤器与拦截器的区别
		
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...
 - JDBC在Java Web中的应用
		
JDBC在Java Web中的应用 制作人:全心全意 在Java Web开发中,JDBC的应用十分广泛.通常情况下,Web程序操作数据库都是通过JDBC实现,即使目前数据库方面的开源框架层出不穷,但其 ...
 
随机推荐
- linux用户下的.profile文件丢失
			
登录用户时出现以下问题: #su - wqq-bash-4.1$ -bash-4.1$ 查看时发现环境变量文件丢失造成的 解决方法: # ls -la /etc/skel/ total 36drwx ...
 - 007 Ajax中的购物车
			
1.大纲设计 2.shopingCartItem.java package beans; public class shopingCartItem { private String bookname; ...
 - JFinal框架使用
			
表单直接提交页面,不用ajax 后台; /** * 修改 */ public void edit() { String id=getPara("id"); String job=g ...
 - JAVAEE——宜立方商城04:图片服务器FastDFS、富文本编辑器KindEditor、商品添加功能完成
			
1. 学习计划 1.图片上传 a) 图片服务器FastDFS b) 图片上传功能实现 2.富文本编辑器的使用KindEditor 3.商品添加功能完成 2. 图片服务器的安装 1.存储空间可扩展. 2 ...
 - django定时任务
			
1.celery流程图: Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成 2.使用 ...
 - 当你的静态资源CDN挂掉了该怎么办?
			
都知道使用静态的CDN引入jQuery等一些js包的时候,会提升网页的性能,那么,如果你引入CDN的地址挂掉了,那么项目同样也会挂掉,所以我们需要在引入的时候添加一个判断.如下: <script ...
 - 排序算法之直接插入排序Java实现
			
排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序: ...
 - LOJ P3959 宝藏 状压dp noip
			
https://www.luogu.org/problemnew/show/P3959 考场上我怎么想不出来这么写的,状压白学了. 直接按层次存因为如果某个点在前面存过了则肯定结果更优所以不用在意各点 ...
 - BlocksKit(2)-DynamicDelegate
			
BlocksKit(2)-DynamicDelegate 动态代理可以说是这个Block里面最精彩的一部分了,可以通过自己给一个类的的协议方法指定对应的block来实现让这个协议的回调都直接在bloc ...
 - 在Kali Linux上编译Windows EXP
			
使用vc6.0去编译的时候,难免会出现点问题 这里找到MS11-046的exp来编译 poc地址:https://www.exploit-db.com/exploits/40564/ 首先需要安装mi ...