事情发生

在上个暑假第一次写Java web大项目的时候,对于目录管理及分配没有任何经验,就想着清晰明了。

后端servlet是用maven进行构建的,所以在目录上没有碰到什么大问题。

用idea进行Java Web项目构建的时候,会自动生成这样一个前端目录



当时对拦截器以及安全目录什么的完全没有概念,于是就把页面,还有css和js以及resource全部放进WEB-INF。

于是乎灾难来了吗,最直观的体现就是,css样式不生效,怎样都不生效,因为没有安全目录以及拦截器概念,完全找不到解决方法,这个bug真的是找的天昏地暗。

问题原因

原来WEB-INF是安全目录。

WEB-INF下面的内容只能由服务器级别才能访问,客户端并不能访问。

服务器级别指:经过服务器内的Controller渲染。

客户端级别指:通过浏览器直接访问。

所以作为安全目录,将jsp文件放到里面是对的,避免客户端直接访问,保证了安全性。

用户想要访问就要访问服务器的Controller,经过它的渲染,才能呈现文件,这就是为什么index.jsp不在WEB-INF目录下的原因。

因为我把css和js以及资源文件放在了WEB-INF目录底下,页面自然访问不到安全目录,自然css不生效。

问题解决

页面可以放在它下面可以用Contriller渲染然后进行访问,但是其他资源不可以呀。

把css等静态文件放在WEB-INF目录外面。就可以解决无法访问以至于css样式不生效等问题。

但是

我当时不知道呀,不知道还有安全目录一说,不会把他们放在外面,但是问题不能不解决。

爬了半天的搜索引擎,看遍了各种博客以及分享,试了各种方式之后。

从铺天盖地的信息中看出来了两个字:

路径,要读取WEB-INF下面的文件要用这个路径:getServletContext().getRealPath("/WEB-INF/");

但是那是后端访问方法,我是要在前端引用那些css

于是我的前端页面出现了这个东西

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

在申明之后,引入css的时候,就用的

<link rel="stylesheet" href="<%=basePath%>css/login_style.css" type="text/css">

之后就能正常显示了。



只能说确实好看。

项目地址为 https://gitee.com/zxeao/Study_Station.git

可以点个star嘛?

是学生,正在学习,自己遇到的问题写点博客,如有错误,请谅解,如果发现了错误可以评论一下。

最新文章

  1. C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
  2. Ado net Source 用法
  3. ios开发中经常用到的控件
  4. 利用iframe将div放置在object的上面
  5. df 命令(转)
  6. MySQL学习笔记——ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
  7. 编写一个小Servlet程序
  8. iocfont 网页图标字体以及使用方法
  9. 多校联合练习赛1 Problem1005 Deque LIS+LDS 再加一系列优化
  10. django-celery提供给顾客使用实例
  11. PAT 1082. 射击比赛 (20)
  12. LeetCode(43)-Contains Duplicate II
  13. 原型链上的call方法集合
  14. 2017-2018-2 20155309 南皓芯 Exp7 网络欺诈防范
  15. MySQL5.7 的新特点
  16. Problem A 还会用继承吗?
  17. python中的popitem
  18. 企业类Web原型制作分享-Kraftwerk
  19. 【NOIP复习】最短路总结
  20. 发送邮件 tp5.1 5.0都可以,实测有效

热门文章

  1. Latex中也能展示动态图?
  2. MasaFramework的MinimalAPI设计
  3. Docker 数据共享与持久化
  4. Shell分析日志文件
  5. Elasticsearch:同步 MongoDB 数据到 Elasticsearch
  6. python 代码执行顺序
  7. 【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结
  8. Vu3.x如何给v-for循环出来的输入框绑定v-mode的值,以及实现父子组件传值、双向绑定
  9. 前端图形:SVG与Canvas
  10. JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象