精华内容
下载资源
问答
  • META-INF、WEB-INF 是什么玩意儿?

    千次阅读 多人点赞 2020-09-12 11:48:22
    META-INF、WEB-INF 1. 概述 在学习spring.factories时发现自己对于META-INF和WEB-INF的作用还不甚了解,因此在这里做一个补充。 META-INF 的作用主要是对Jar包进行一个描述。其意为(meta information)签名文件夹。...

    META-INF、WEB-INF

    1. 概述

    在学习spring.factories时发现自己对于META-INF和WEB-INF的作用还不甚了解,因此在这里做一个补充。

    META-INF 的作用主要是对Jar包进行一个描述。其意为(meta information)签名文件夹。在打包jar时会自动的生成,当然也可以手动的配置修改。

    WEB-INF 是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。

    2. 详述

    2.1 百度上的解释

    META-INF 相当于一个信息包,目录中的文件和目录获得 Java 2 平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务 manifest.mf 文件,在用 jar 打包时自动生成。

    WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

    2.2 mainfest.mf文件

    意为清单文件,manifest 文件中的每一行都是 key-value 对应的:属性名开头,接着是 “:” ,然后是属性值,每行最多72个字符,如果需要增加,可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。通常有这些字段:

    Manifest-Version: 1.0
    Built-By: Dxy
    Created-By: IntelliJ IDEA
    Build-Jdk: 1.8.0_144
    

    这些信息就是 jar 文件的描述信息:

    Manifest-Version:生成的 manifest.mf 文件的版本
    Built-By:文件的创建用户命名,在 IDEA 的配置文件中可以设置
    Created-By:文件的生成者,一般由jar命令行工具生成,这里显示的时 idea
    Bulid-Jdk:所使用的 JDK 环境
    

    还有这些属性:

    一、一般属性
     
    1:Signature-Vresion:定义 jar 文件的签名版本
     
    2:Class-Path:内部的类搜索路径,提供给应用程序或者类装载器
     
    二、应用程序的相关属性
     
    1、Main-Class:定义 jar 文件的入口类,该类必须可执行!一旦定义了该属性就可以使用
     
    java -jar 程序名.jar 来运行该 jar 文件
    

    2.4 和WEB-INF的区别

    META-INF 存放的是 jar 包的标签信息,jar 都会有这个文件夹,war 也会有。

    而 WEB-INF 是 java web 应用所特有的一个文件夹,属于 web 应用的安全目录,该目录客户端无法进行访问,只有服务端可以访问。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。这样如果我们的页面中出现超链接<a>标签或者<script></script>脚本下的location.href去直接转向到WEB-INF下的某一个jsp或者html页面,那么就会引用不到,因为这样的请求方式是客户端的请求。css/js/html没有必要放在WEB-INF下。 最终这些会被原封不动的展现在客户端,所以访问安全根本就不会成为问题。

    jsp放在web-inf下,原因主要有两个

    1. 远古时代的模式会把业务逻辑,数据库连接等敏感信息写在jsp里面,被用户直接访问会有安全问题。
      现代模式里这个不再成为问题,不应该成为问题。

    2. jsp是在服务器端运行的,而且通常都需要其他程序支持——比如后台处理好数据再让jsp渲染等,用户直接访问一则没有意义,二则会抛异常,这些都浪费服务器资源。

      对于安全要求很严格的系统来说,不允许随便访问你的jsp文件,你可以放到web-inf下面,对于安全性要求没有那么严格的系统来说,你可以直接放到webroot下面。

    3. 总结

    META-INF 相比 WEB-INF在日常开发中通常用的少一些,一般其中的字段都是构建工具或者IDE自动生成的。

    4. 参考&引用

    百度百科

    META-INF目录是干啥用的?

    Web项目的WEB-INF目录使用说明

    最后

    最近工作996很忙,写博客都是用休息的时间写的. T_T

    如果帮助到你了,点个赞吧,这对博主真的很重要~

    展开全文
  • META-INF工具

    2017-05-01 20:05:59
    我的工具
  • META-INF目录的作用

    2020-07-15 17:14:00
    平时写的web项目打包成jar文件之后会发现里面不知道为啥多出了一个叫做META-INF的目录,点开之后发现里面还出现了一个manifest.mf文件。出于好奇我在网上找了找这个目录的用途,结果还是没有找到一个比较通俗的解释...

    平时写的web项目打包成jar文件之后会发现里面不知道为啥多出了一个叫做META-INF的目录,点开之后发现里面还出现了一个manifest.mf文件。出于好奇我在网上找了找这个目录的用途,结果还是没有找到一个比较通俗的解释,我这种菜鸟对那种比较正规的解释还是理解有困难的。

            所以总结了一下,我感觉这样解释的话对于我们这些初学者来说还是比较容易理解的。

     

    jar文件
            开发中可以直接使用java class文件来运行程序,不过这样不太方便,所以出现了jar文件来提供发布和运行,jar文件实际上是class文件的zip压缩存档,有很多工具都可以操纵这种格式的文件,所以jar文件本身并不能表达应用程序的便签信息。

    META-INF目录的出现
            为了提供存档的便签信息,出现了Manifest.mf文件,jar文件中有一个特定的目录来存放标签信息:META-INF目录,主要应关注其中

    一个名叫manifest.mf的文件,它包含了jar文件的内容描述,在应用程序运行时向JVM提供应用程序的信息。

    关于MEATA-INF目录的作用,百度上的解释是这样的(正规的解释):

            META-INF相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务manifest.mf文件,在用jar打包时自动生成。

     

            jar文件都有一个默认产生的META-INF目录和其中的manifest.mf文件 ​ 使用jar命令可以直接产生META-INF目录和manifest.mf文件,例如:

    Manifest-Version: 1.0
    Built-By: Dxy
    Created-By: IntelliJ IDEA
    Build-Jdk: 1.8.0_144
    其实这些信息就是你jar文件的描述信息

    Manifest-Version:生成的manifest.mf文件的版本

    Built-By:文件的创建用户命名,在IDEA的配置文件中可以设置

    Created-By:文件的生成者,一般由jar命令行工具生成,这里显示的时idea

    Bulid-Jdk:所使用的JDK环境
    其实manifest.mf文件中的配置信息除了上面的四个之外,还是有很多的,以下是几个常见的属性:

    一、一般属性
     
    1:Signature-Vresion:定义jar文件的签名版本
     
    2:Class-Path:内部的类搜索路径,提供给应用程序或者类装载器
     
    二、应用程序的相关属性
     
    1、Main-Class:定义jar文件的入口类,该类必须可执行!一旦定义了该属性就可以使用
     
    java -jar 程序名.jar 来运行该jar文件
    还有manifest.mf文件的格式

      manifest 文件中的每一行都是 key-value 对应的:属性名开头,接着是 ":" ,然后是属性值,每行最多72
     
    个字符,如果需要增加,可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。
            总结一下:META-INF目录实际上就是描述jar文件中的信息的一个目录,目录中除了manifest.mf文件之外其实还是可以配置很多信息文件的,这些文件都是在应用程序运行的过程中向其提供jar文件的内容描述的。

            

            仅限个人学习使用,错误在所难免。
    ————————————————
    版权声明:本文为CSDN博主「我喜欢煎蛋卷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38449518/article/details/82414069

    展开全文
  • 关于WEB-INFMETA-INF的区别

    千次阅读 2019-07-06 12:26:32
    关于WEB-INFMETA-INF的区别关于WEB-INFMETA-INF的区别 关于WEB-INFMETA-INF的区别 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,...

    关于WEB-INF与META-INF的区别

    关于WEB-INF与META-INF的区别

    	META-INF存在程序入口相关信息,在每个jia包中都会有这个文件夹
    


    一个META-INF文件夹可能有pom.properties,里面包含工程的version,gropId,和artifactId,pom.xml,里面就是工程的依赖,
    MANIFEST.MF文件,里面包换信息,Manifest-Version: 1.0,Archiver-Version: Plexus Archiver,Built-By: chenxiaolong
    ,Created-By: Apache Maven 3.2.1,Build-Jdk: 1.8.0_152,spring.factories文件,里面包含的信息如下:
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    com.chen.xiao.config.GreeterAutoConfiguration
    这个文件时实现springboot Starter的,spring-core包中定义了springFactoriesLoader类,这个类实现了检索META/spring.factories文件,并获取配置类中配置的功能,这里先简单介绍,我会在实现springboot starter机制中详细说明,还有license.txt文件,里面是发布工程的公司相关信息;

    2.WEB/INF
    

    WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

    展开全文
  • WebRoot META-INF WEB-INF 区别

    千次阅读 2018-10-05 21:38:12
    /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。  /WEB-INF/classes/ 包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件...

    /WEB-INF/web.xml

    Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。

     /WEB-INF/classes/
    包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中。
     /WEB-INF/lib/
    存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件。

     /WEB-INF/src/
     源码目录,按照包名结构放置各个Java文件。

     /WEB-INF/database.properties
     数据库配置文件

     /WEB-INF/tags/

    存放了自定义标签文件,该目录并不一定为 tags,可以根据自己的喜好和习惯为自己的标签文件库命名,当使用自定义的标签文件库名称时,在使用标签文件时就必须声明正确的标签文件库路径。例如:当自定义标签文件库名称为 simpleTags 时,在使用 simpleTags 目录下的标签文件时,就必须在 jsp 文件头声明为:<%@ taglibprefix="tags" tagdir="/WEB-INF /simpleTags" % >。

    /WEB-INF/jsp/

    jsp 1.2 以下版本的文件存放位置。改目录没有特定的声明,同样,可以根据自己的喜好与习惯来命名。此目录主要存放的是 jsp 1.2 以下版本的文件,为区分 jsp 2.0 文件,通常使用 jsp 命名,当然你也可以命名为 jspOldEdition 。

    /WEB-INF/jsp2/

    与 jsp 文件目录相比,该目录下主要存放 Jsp 2.0 以下版本的文件,当然,它也是可以任意命名的,同样为区别 Jsp 1.2以下版本的文件目录,通常才命名为 jsp2。

    META-INF

    相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务
     manifest.mf文件,在用jar打包时自动生成。

    以下转载至 http://blog.csdn.net/saygoodbyetoyou/article/details/9944773

    请求页面为何要放到META-INF目录下

    观点一:(较为赞同)
    安全性不是真正的原因,因为jsp是要解析后才显示到浏览器的,即使用户知道你jsp的路径,也不可能通过浏览器看到jsp源码的,而如果是通过其它手段入侵服务器的话,放在WEB-INF又和放在别的地方有什么区别呢???
    真正的原因是,对于早期直接嵌入Java代码的jsp,是直接给出jsp路径给用户访问的,这种情况恰恰不能放在WEB-INF,而到了现在的mvc模式,jsp已经不是曾经那个包含完整逻辑的jsp,而仅仅充当view层的模板,必须要填入model数据后进行渲染,才能生成可读的页面,这样的模板是不能让用户直接访问的,直接访问的话要么是一堆各种空白,或者一堆占位符,甚至一堆NullPointException,所以需要放到WEB-INF里。补充一下,“安全性问题”指的是“不允许你访问,否则会对我不好”,而这里的情况其实是“不建议你访问,否则会对你不好”,应该属于健壮性的范畴。
    观点二:
      放到WEB-INF下的Jsp文件,如果你直接去访问这个Jsp是不可以的,必须通过Action的跳转,这样就能够理解为什么安全性高了,对于用户是不可见的,对于一些对于用户,可以直接访问的,如,登录,注册页面,可以直接放在webroot下,这个也是根据你系统的需求了。
    观点三:
    通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问。所以说放在哪里就看习惯是什么样了。
    一般项目都是要求隐藏性的,只让客户通过请求访问而不是直接访问jsp页面。若放在webroot下面,肯定要加一个过滤器阻止所有对*.jsp的访问。只要比较的话:
    放在webroot下面:优点,程序结构清晰,便于编码和维护;缺点,要加过滤器。
    放在web-inf下面:优点,不用过滤器;缺点,打乱了程序结构,编码和维护麻烦
    观点四:
    为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。JSP存放在 WEB-INF 目录下更为安全

    ------------------------------------------------------------------------------------------------

    今天同事提了个问题:说我们项目的page目录为什么是放在webroot下面的,而不是web-inf下,因为放在web-inf 下比较安全,只能通过action,跳转来访问,不能直接在地址上访问jsp内容。后来说放在webroot下面也是可以的,只要加一个过滤器,过滤掉所有后缀为.jsp的请求就行了。

    上网看了一下,也是这种说法,而且文件夹目录放在web-inf下不好分层,web-inf下一般是很少打开和是使用的东西,存放着用户获取不到的东西。放在这个目录下面比较麻烦。

    还不如放在根目录下,然后加一个过滤器一了百了,我也觉得这样挺好。

    ---------------------------------------------------------------------------------------------------

     

    其实到最后也找不出META-INF是做什么用的,也很少有详细的解释,百度估计找不出我想要的答案了。至于文件放在webroot下还是web-inf下。   

    webroot用户可以直接访问,但是这样安全性缺失,需要加过滤器。

    web-inf用户无法直接访问。需要通过action映射访问。

    有一个疑问,如果两个jsp放在web-inf中通过a标签跳转,不通过action。那么可以成功跳转吗?    

    接上,试验过 不可以。

    -------------------------------------------补充以上-------------------------------------------------

    经过测试,在webroot和web-inf下放同名的jsp文件。

    如果直接访问,访问的是webroot下的。(这个是正常的,web-inf原先就不允许直接访问jsp).

    如果通过跳转,那么访问的就是web-inf下的,这个就不明白了。应该是通过action一手,会优先找web-inf下的jsp文件吧。

    展开全文
  • web-infmeta-inf

    2012-10-18 16:51:01
    详细的介绍了web-infmeta-inf这两个配置文件
  • 删除META-INF,重新启动。
  • JAVA WEB项目WEB-INFMETA-INF的作用

    千次阅读 2019-08-13 13:51:43
    /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件...
  • 打Jar包时 META-INF的坑

    2021-11-04 18:12:11
    最近写了一个服务,想要打成jar包,但是选择完主类时候打包,默认的位置是src/main/java/META-INF/MANIFEST.MF 当你打包完毕,发现里面的内容和你的主类无关,或者干脆没有主类,所以运行时会报错,找不到主类。 ...
  • <build> <finalName>test</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId&...
  • 项目在做SPI ,但是需要把resource下的文件导入到META-INF文件夹下, 我使用ant工具没有找到在META-INF文件夹下创建文件啥的,不知道如何把这个文件放到 META-INF/services/fileName 下</p>
  • 简介 springboot的各个依赖包下,很多都有META-INF/spring.factories这个文件。例如 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ ...
  • 没有WEB-INF目录和META-INF目录,如何解决呢? 一、打开项目架构 二、点击左侧的Facts 三、如箭头所示,点击加号,再点击web.xml 四、这里可以自己选择WEB-INF放入的位置,我一般会放在web文件夹下,因此将路径名...
  • 再点击左下角的Further configuration available… 5、在图中红框位置会出现Javaweb项目中熟悉的WebContent,将它改为我们需要的格式,勾选上下面的选项,点击ok,最后点击Apply 6、webapp下生成META-INF和WEB-INF
  • 今天自己排查问题,写测试代码不能提交到git,于是直接本地maven打全量包 server.jar 包含所有信息,丢到服务器,替换server.jar 运行的时候发现修改的地方全部都不生效,排查了半天发现 server.jar 里面的META-INF ...
  • Android编译异常` Cause: duplicate entry: META-INF/MANIFEST.MF` 这是转载大佬的博客:https://www.cnblogs.com/AsionTang/p/11929529.html 目录Android编译异常Cause: duplicate entry: META-INF/MANIFEST.MF...
  • META-INF 存在程序入口相关信息, 每个jar 都会有这个文件夹,里面的 MANIFEST文件 记录这些信息WEB-INF 使用web 项目才会有这个文件夹,普通的 j2se项目
  • 能够从日志里面,看到当你访问不成功时候,后台的关键日志记录 forword请求路劲 基本可以看到报错【Path with “WEB-INF” or “META-INF”: [WEB-INF/hello.jsp]】 下面是web项目简单构造: 1 添加web支持 只需在...
  • META-INF文件的生成 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--META-INF的生成--> <build> <resources> <resource> <directory>src...
  • Path with “WEB-INF” or “META-INF”: [WEB-INF/jsp/welcome.jsp] 网上查原因spring boot不提倡用jsp,需要在pom.xml中加入以下依赖就可以了。 <groupId>org.apache.tomcat.embed <artifactId>tomcat-...
  • public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories"; private static final Log logger = LogFactory.getLog(SpringFactoriesLoader.class); private static final ...
  • 浏览器报错404,控制台报 Path with “WEB-INF“ or “META-INF“: [WEB-INF/jsp/hello.jsp] 这个时候开始怀疑人生,直到我选择 plugin -> spring boot -> spring boot:run 然后页面出来 为啥会这样,我菜鸟还真不...
  • 我是跟着《深入浅出 Spring Boot 2.x》...Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/details.jsp 1、因为没有书本中说的 WEB-INF目录,所以我刚开始搜索的路线是:怎么在springboot项目中创建 WEB-INF目...
  • 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar...
  • 原因是前端的jsp文件没有正确放到webapp文件夹下: 在springboot项目中,前端的jsp文件夹需要放到webapp下面: ...spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp 这样就可以了。 ...
  • META-INF/LICENSE File1: D:\AndroidStudioProjects\android_client\app\libs\wink-json4j-1.4.jar File2: D:\AndroidStudioProjects\android_client\app\libs\httpclient-4.5.2.jar 解决办法很简单,在对应报错...
  • META-INF文件详解

    千次阅读 2019-09-16 14:21:22
    META-INF文件详解 java工程的JAR 文件中,会包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。该文件中最重要的两个信息是: Class-Path:指定执行运行jar时的classpath; Main-...
  • META-INF/spring.factories文件的作用是什么 这片文章中会找到你想要的答案。 *看一个SpringBoot入口类 package com.example.multithread; import org.springframework.boot.SpringApplication; import org.spring...
  • 待完成。。。 spring.factories spring-autoconfigure-metadata.properties spring.handlers
  • 解决 Path with "WEB-INF" or "META-INF": [WEB-INF/views/index.jsp] 问题 在SpringBoot项目中配置使用JSP后运行项目没有任何报错,但是当登录页面的时候会报404,如图: 然后发现后台输出只是打印了Path with ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,460
精华内容 52,584
关键字:

meta-inf