JSP —— jsp页面访问资源 路径问题
来源:互联网 发布:mac air哪个键是insert 编辑:程序博客网 时间:2024/06/11 18:09
一、探讨资源路径问题
目录结构:
目标:在index.jsp中显示night_block.jpg
测试1:相对于工程根文件夹的路径。URL正确,未知错误
<body><img alt="加载失败了" src="WEB-INF/images/innerImages/night_block.jpg"/></body>
结果:无法显示,HTTP 响应头显示url正确:
Request URL:http://localhost:8088/JWebStudyJSP/WEB-INF/images/innerImages/night_block.jpg
测试2:直接图片名。URL 错误
<body><img alt="加载失败了" src="night_block.jpg"/></body>结果:无法显示,HTTP 响应头显示url错误:
Request URL:http://localhost:8088/JWebStudyJSP/night_block.jpg
<body><img alt="加载失败了" src="./WEB-INF/images/innerImages/night_block.jpg"/></body>结果:无法显示,HTTP 响应头显示url 正确
Request URL:http://localhost:8088/JWebStudyJSP/WEB-INF/images/innerImages/night_block.jpg
后面通过增加发布路径,具体如下:
增加发布路径:
说明:为了保持结构一致,Deploy Path 结构与Source 结构保持相同。
测试:无论怎样测试,还是无法访问图片。而多次尝试后发现,页面是无法直接访问WEB-INF下面的资源的,而上面图片中无论是第二项还是第三项目,发布后的图片路径都是一样的,都还位于WEB-INF/image/innerImages/night_block.jpg 处。
修改为下面发布路径,将innerImages下的内容直接发布到项目文件夹下,能正确显示图片:
测试,此时图片是在项目文件夹下的(发布后,可看到图片存在于与WEB-INF目录同级的位置),所以src 直接取文件名:
<body><img alt="加载失败了" src="night_block.jpg"/></body>
分析:将所有图片资源发布到项目目录下(与WEB-INF同级),优点是页面中src 直接写图片全名即可,缺点是图片文件与该位置的其它文件混在一起。
其实没必要这么执着于放在WEB-INF 下,只要不在WEB-INF 下,其它地方都可访问,所以在项目文件夹下建一个与WEB-INF 同级的文件夹images或多层文件夹用于保存资源,页面中通过相对于项目文件夹的路径访问资源即可。如:建一个与WEB-INF同级的resource 文件夹,里面再分类各种资源,实现简单且易于管理,访问时src="resource/.../night_block.jpg"
同理,对于jsp页面与其它资源,放在WEB-INF下面也不能直接访问,但可以通过访问servlet ,在servlet中通过request 获得RequestDispatcher 实例,用该实例的forward()方法访问。servlet中关键代码如下:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {if(request.getParameter("login").equals("loginOn")){RequestDispatcher dispatcher=request.getRequestDispatcher("WEB-INF/jsp/welcome.jsp");//访问WEB-INF/jsp下的页面dispatcher.forward(request,response);}else if(request.getParameter("login").equals("loginOff")){HttpSession session=request.getSession();System.out.println("有用户下线!");session.invalidate();}}注:
这种方式是要通过提交表单访问servlet 来实现的,在MVC 的C中可采用此方式。
如果是单独请求图片,也可通过这种方式访问WEB-INF下的图片,此时需将contentType设为images/jpeg等。图片一般都是嵌入页面的,所以单独请求图片很少使用。
二、总结路径问题
1、web 发布装配是将Source 中目录中的内容复制到Deploy Path 所指定位置,以"/"代替项目根路径。
2、WEB-INF中的资源不能直接访问,只能通过servlet方式访问(无论是普通servlet,还是SpringMVC 的DispatcherServlet ),所以资源文件最好放在与WEB-INF同级的目录中,这样发布时便不需要再配置Web Deployment Assembly。
- JSP —— jsp页面访问资源 路径问题
- jsp页面路径问题
- jsp页面访问Struts1的Action路径问题
- 解决jsp页面路径访问图片的乱码问题
- Jsp页面的路径问题
- jsp页面的相对路径访问
- JSP引入静态资源路径问题
- jsp页面加载静态资源404问题
- jsp servlet 中的页面路径问题
- JSP页面中的相对路径问题
- JSP页面中的相对路径问题
- JSP页面的basePath路径的问题
- jsp页面的base参考路径问题
- strucs2 jsp页面超链接的路径问题
- jsp页面img标签src路径问题
- struts项目中,jsp页面引用外部资源时的路径问题
- J2EE中JSP页面引用外部资源时的路径问题
- J2EE中JSP页面引用外部资源时的路径问题
- 初学者的c普遍赋值问题
- sdut3257(质因数分解)立方和数
- ZJOI2017蒟蒻游记6 (day2)
- oracle部分查询语句
- 【经典策略系列】之 Dual Thrust 交易策略
- JSP —— jsp页面访问资源 路径问题
- 调试my eclipse
- May-Day训练赛题解
- Arithmetic Slices II
- Java多态
- Mysql5.6.x.zip压缩配置安装
- 从三星官方移植uboot
- [NOIP2013]华容道
- 大话设计模式学习笔记