5

对Java Web中WEB-INF目录的理解以及访问方法 - Zxeao

 2 years ago
source link: https://www.cnblogs.com/zxeao/p/16926265.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

对Java Web中WEB-INF目录的理解以及访问方法

在上个暑假第一次写Java web大项目的时候,对于目录管理及分配没有任何经验,就想着清晰明了。
后端servlet是用maven进行构建的,所以在目录上没有碰到什么大问题。
用idea进行Java Web项目构建的时候,会自动生成这样一个前端目录
image
当时对拦截器以及安全目录什么的完全没有概念,于是就把页面,还有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">

之后就能正常显示了。

image

只能说确实好看。
项目地址为 https://gitee.com/zxeao/Study_Station.git
可以点个star嘛?

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


Recommend

  • 6

    DirectAdmin 虚拟主机配置Laravel根目录访问 由于Laravel限制,Web根目录是在public目录内的,而很多虚拟主机不能自定义目录,网上有方法是移动文件之类兼容,我觉得这样需要破坏结构,不太好维护. 解压了所有文件到一个不...

  • 5
    • hedzr.github.io 4 years ago
    • Cache

    Tilde 展开以及命名目录

    crash zone: 今天崩溃两次,分别是 Nextcloud,zsh。现在 Nextcloud 我已经卸载了,全都用 iCloud 了,zsh 肿么办,挺急的,在线等。 About Expansions

  • 5

    docker访问主机挂在目录时显示Permission denied 作者: wencst 分类: docker,linux 发布时...

  • 3
    • www.chenshake.com 3 years ago
    • Cache

    Nginx 目录访问

    陈沙克日志   以前一直都是有apache,这次就刚好有需求,学习一下Nginx,日后估计是需要把blog的apache换成nginx。我其实就是需要把一个目录让大家可以...

  • 2

    PHP的目录结构、设计理念以及核心架构前一节:使用ext_skel,实现一个PHP扩展,试着使用 ext_skel 写了一个扩展,通过上一节可以大体了解自己如何写一个扩展。这一节主要介绍...

  • 2
    • syxdevcode.github.io 2 years ago
    • Cache

    LDAP协议(轻量目录访问协议)简介

    LDAP 的全称是 Lightweight Directory Access Protocol,「轻量目录访问协议」,它是基于X.500标准的轻量级目录访问协议。 目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。目录数据库和关系数据库...

  • 7
    • blog.51cto.com 2 years ago
    • Cache

    Docker部署以及更改数据目录

    Docker部署以及更改数据目录 原创 yawei555 2022-06-30 11:15:55...

  • 5

    Java Web中requset,session,application 的作用域及区别 ...

  • 9
    • mikeygithub.github.io 1 year ago
    • Cache

    LDAP-轻量目录访问协议

    LDAP-轻量目录访问协议 - 麦奇

  • 6
    • www.v2ex.com 1 year ago
    • Cache

    只访问特定的资源目录

    V2EX  ›  程序员 只访问特定的资源目录  

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK