Java web应用的目录结构

这篇具有很好参考价值的文章主要介绍了Java web应用的目录结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

详情可以参考:
https://tomcat.apache.org/tomcat-10.1-doc/appdev/deployment.html
https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#directory-structure

Java web应用根目录下包含如下内容:

  • *.html, *.jsp等:html、jsp文件及其它必须对客户端浏览器可见的文件(如JavaScript、样式文件、图片文件)。对于大型的应用,可以将这些文件划分成子目录的结构存放;对于小型应用,可以不再区分子目录。
  • /WEB-INF/web.xml :应用部署描述符文件。这个文件描述了组成应用的servlet及其它的成分、需要容器执行的初始化参数、安全约束等。
  • /WEB-INF/classes/:这个目录下存放了应用需要的任何Java类文件(及关联的资源),包含没有放在 JAR文件中的servlet类、非servlet类。如果Java类是以Java包组织的,那么包的层次结构必须/WEB-INF/classes/下面体现出来,例如,一个类的名字是com.thb.DemoServlet,必须存放为/WEB-INF/classes/com/thb/DemoServlet.class。
  • /WEB-INF/lib/ :这个目录存放着JAR文件,例如第三方类库或者JDBC驱动(driver)。这些JAR文件中包含应用需要的servlet、bean、静态资源、JSP文件、及其它工具类(utility classes)。

对WEB-INF目录的进一步说明:

  • 在WEB-INF/classes/目录下的类、和 WEB-INF/lib/目录下JAR包中的类,对该web应用下的其它类可见,但对其它的web应用不可见。
  • web应用类加载器首先从WEB-INF/classes目录加载类,然后再从 WEB-INF/lib目录下的JAR文件中加载。
  • WEB-INF目录包含了跟应用相关的、但不在应用根目录下的所有东西。
  • WEB-INF下的绝大部分不属于应用的公共文档树的一部分,除了打包到JAR文件中META-INF/resources目录下的静态资源和JSP文件以外,WEB-INF目录下的其它文件不允许容器给客户端提供访问。
  • WEB-INF目录对servlet代码可见,方式是通过ServletContext的getResource 和getResourceAsStream方法调用。

举例:tomcat安装包中自带的examples这个web应用的目录结构如下:文章来源地址https://www.toymoban.com/news/detail-745037.html

D:\APACHE-TOMCAT-10.1.13\WEBAPPS\EXAMPLES
│  index.html
│  
├─jsp
│  │  index.html
│  │  
│  ├─async
│  │      async1.jsp
│  │      async1.jsp.html
│  │      async3.jsp
│  │      async3.jsp.html
│  │      index.jsp
│  │      index.jsp.html
│  │      
│  ├─cal
│  │      cal1.jsp
│  │      cal1.jsp.html
│  │      cal2.jsp
│  │      cal2.jsp.html
│  │      calendar.html
│  │      Entries.java.html
│  │      Entry.java.html
│  │      JspCalendar.java.html
│  │      login.html
│  │      TableBean.java.html
│  │      
│  ├─checkbox
│  │      check.html
│  │      checkresult.jsp
│  │      checkresult.jsp.html
│  │      CheckTest.html
│  │      cresult.html
│  │      
│  ├─colors
│  │      clr.html
│  │      ColorGameBean.html
│  │      colors.html
│  │      colrs.jsp
│  │      colrs.jsp.html
│  │      
│  ├─dates
│  │      date.html
│  │      date.jsp
│  │      date.jsp.html
│  │      
│  ├─error
│  │      er.html
│  │      err.jsp
│  │      err.jsp.html
│  │      error.html
│  │      errorpge.jsp
│  │      errorpge.jsp.html
│  │      
│  ├─forward
│  │      forward.jsp
│  │      forward.jsp.html
│  │      fwd.html
│  │      one.jsp
│  │      one.jsp.html
│  │      two.html
│  │      
│  ├─images
│  │      code.gif
│  │      execute.gif
│  │      return.gif
│  │      
│  ├─include
│  │      foo.html
│  │      foo.jsp
│  │      foo.jsp.html
│  │      inc.html
│  │      include.jsp
│  │      include.jsp.html
│  │      
│  ├─jsp2
│  │  ├─el
│  │  │      basic-arithmetic.html
│  │  │      basic-arithmetic.jsp
│  │  │      basic-arithmetic.jsp.html
│  │  │      basic-comparisons.html
│  │  │      basic-comparisons.jsp
│  │  │      basic-comparisons.jsp.html
│  │  │      composite.html
│  │  │      composite.jsp
│  │  │      composite.jsp.html
│  │  │      functions.html
│  │  │      Functions.java.html
│  │  │      functions.jsp
│  │  │      functions.jsp.html
│  │  │      implicit-objects.html
│  │  │      implicit-objects.jsp
│  │  │      implicit-objects.jsp.html
│  │  │      ValuesBean.java.html
│  │  │      ValuesTag.java.html
│  │  │      
│  │  ├─jspattribute
│  │  │      FooBean.java.html
│  │  │      HelloWorldSimpleTag.java.html
│  │  │      jspattribute.html
│  │  │      jspattribute.jsp
│  │  │      jspattribute.jsp.html
│  │  │      shuffle.html
│  │  │      shuffle.jsp
│  │  │      shuffle.jsp.html
│  │  │      ShuffleSimpleTag.java.html
│  │  │      TileSimpleTag.java.html
│  │  │      
│  │  ├─jspx
│  │  │      basic.html
│  │  │      basic.jspx
│  │  │      basic.jspx.html
│  │  │      svgexample.html
│  │  │      textRotate.html
│  │  │      textRotate.jpg
│  │  │      textRotate.jspx
│  │  │      textRotate.jspx.html
│  │  │      
│  │  ├─misc
│  │  │      coda.jspf
│  │  │      coda.jspf.html
│  │  │      config.html
│  │  │      config.jsp
│  │  │      config.jsp.html
│  │  │      dynamicattrs.html
│  │  │      dynamicattrs.jsp
│  │  │      dynamicattrs.jsp.html
│  │  │      EchoAttributesTag.java.html
│  │  │      prelude.jspf
│  │  │      prelude.jspf.html
│  │  │      
│  │  ├─simpletag
│  │  │      book.html
│  │  │      book.jsp
│  │  │      book.jsp.html
│  │  │      BookBean.java.html
│  │  │      FindBookSimpleTag.java.html
│  │  │      Functions.java.html
│  │  │      hello.html
│  │  │      hello.jsp
│  │  │      hello.jsp.html
│  │  │      HelloWorldSimpleTag.java.html
│  │  │      repeat.html
│  │  │      repeat.jsp
│  │  │      repeat.jsp.html
│  │  │      RepeatSimpleTag.java.html
│  │  │      
│  │  └─tagfiles
│  │          displayProducts.tag.html
│  │          hello.html
│  │          hello.jsp
│  │          hello.jsp.html
│  │          helloWorld.tag.html
│  │          panel.html
│  │          panel.jsp
│  │          panel.jsp.html
│  │          panel.tag.html
│  │          products.html
│  │          products.jsp
│  │          products.jsp.html
│  │          
│  ├─jsptoserv
│  │      hello.jsp
│  │      hello.jsp.html
│  │      jsptoservlet.jsp
│  │      jsptoservlet.jsp.html
│  │      jts.html
│  │      ServletToJsp.java.html
│  │      
│  ├─num
│  │      numguess.html
│  │      numguess.jsp
│  │      numguess.jsp.html
│  │      
│  ├─security
│  │  └─protected
│  │          error.jsp
│  │          error.jsp.html
│  │          index.jsp
│  │          index.jsp.html
│  │          login.jsp
│  │          login.jsp.html
│  │          
│  ├─sessions
│  │      carts.html
│  │      carts.jsp
│  │      carts.jsp.html
│  │      crt.html
│  │      DummyCart.html
│  │      
│  ├─simpletag
│  │      foo.html
│  │      foo.jsp
│  │      foo.jsp.html
│  │      
│  ├─snp
│  │      snoop.html
│  │      snoop.jsp
│  │      snoop.jsp.html
│  │      
│  ├─tagplugin
│  │      choose.html
│  │      choose.jsp
│  │      choose.jsp.html
│  │      foreach.html
│  │      foreach.jsp
│  │      foreach.jsp.html
│  │      howto.html
│  │      if.html
│  │      if.jsp
│  │      if.jsp.html
│  │      notes.html
│  │      
│  └─xml
│          xml.html
│          xml.jsp
│          xml.jsp.html
│          
├─META-INF
│      context.xml
│      
├─servlets
│  │  cookies.html
│  │  helloworld.html
│  │  index.html
│  │  reqheaders.html
│  │  reqinfo.html
│  │  reqparams.html
│  │  sessions.html
│  │  
│  ├─images
│  │      code.gif
│  │      execute.gif
│  │      return.gif
│  │      
│  └─nonblocking
│          bytecounter.html
│          
├─WEB-INF
│  │  web.xml
│  │  
│  ├─classes
│  │  │  CookieExample.class
│  │  │  CookieExample.java
│  │  │  HelloWorldExample.class
│  │  │  HelloWorldExample.java
│  │  │  LocalStrings.properties
│  │  │  LocalStrings_cs.properties
│  │  │  LocalStrings_de.properties
│  │  │  LocalStrings_es.properties
│  │  │  LocalStrings_fr.properties
│  │  │  LocalStrings_ja.properties
│  │  │  LocalStrings_ko.properties
│  │  │  LocalStrings_pt.properties
│  │  │  LocalStrings_pt_BR.properties
│  │  │  LocalStrings_ru.properties
│  │  │  LocalStrings_zh_CN.properties
│  │  │  RequestHeaderExample.class
│  │  │  RequestHeaderExample.java
│  │  │  RequestInfoExample.class
│  │  │  RequestInfoExample.java
│  │  │  RequestParamExample.class
│  │  │  RequestParamExample.java
│  │  │  ServletToJsp.class
│  │  │  ServletToJsp.java
│  │  │  SessionExample.class
│  │  │  SessionExample.java
│  │  │  
│  │  ├─async
│  │  │      Async0$1.class
│  │  │      Async0.class
│  │  │      Async0.java
│  │  │      Async1$1.class
│  │  │      Async1.class
│  │  │      Async1.java
│  │  │      Async2$1.class
│  │  │      Async2.class
│  │  │      Async2.java
│  │  │      Async3.class
│  │  │      Async3.java
│  │  │      AsyncStockContextListener.class
│  │  │      AsyncStockContextListener.java
│  │  │      AsyncStockServlet.class
│  │  │      AsyncStockServlet.java
│  │  │      Stockticker$Stock.class
│  │  │      Stockticker$TickListener.class
│  │  │      Stockticker.class
│  │  │      Stockticker.java
│  │  │      
│  │  ├─cal
│  │  │      Entries.class
│  │  │      Entries.java
│  │  │      Entry.class
│  │  │      Entry.java
│  │  │      JspCalendar.class
│  │  │      JspCalendar.java
│  │  │      TableBean.class
│  │  │      TableBean.java
│  │  │      
│  │  ├─checkbox
│  │  │      CheckTest.class
│  │  │      CheckTest.java
│  │  │      
│  │  ├─colors
│  │  │      ColorGameBean.class
│  │  │      ColorGameBean.java
│  │  │      
│  │  ├─compressionFilters
│  │  │      CompressionFilter.class
│  │  │      CompressionFilter.java
│  │  │      CompressionFilterTestServlet.class
│  │  │      CompressionFilterTestServlet.java
│  │  │      CompressionResponseStream.class
│  │  │      CompressionResponseStream.java
│  │  │      CompressionServletResponseWrapper.class
│  │  │      CompressionServletResponseWrapper.java
│  │  │      
│  │  ├─dates
│  │  │      JspCalendar.class
│  │  │      JspCalendar.java
│  │  │      
│  │  ├─error
│  │  │      Smart.class
│  │  │      Smart.java
│  │  │      
│  │  ├─examples
│  │  │      ExampleTagBase.class
│  │  │      ExampleTagBase.java
│  │  │      FooTag.class
│  │  │      FooTag.java
│  │  │      FooTagExtraInfo.class
│  │  │      FooTagExtraInfo.java
│  │  │      LogTag.class
│  │  │      LogTag.java
│  │  │      ValuesTag.class
│  │  │      ValuesTag.java
│  │  │      
│  │  ├─filters
│  │  │      ExampleFilter.class
│  │  │      ExampleFilter.java
│  │  │      
│  │  ├─http2
│  │  │      SimpleImagePush.class
│  │  │      SimpleImagePush.java
│  │  │      
│  │  ├─jsp2
│  │  │  └─examples
│  │  │      │  BookBean.class
│  │  │      │  BookBean.java
│  │  │      │  FooBean.class
│  │  │      │  FooBean.java
│  │  │      │  ValuesBean.class
│  │  │      │  ValuesBean.java
│  │  │      │  
│  │  │      ├─el
│  │  │      │      Functions.class
│  │  │      │      Functions.java
│  │  │      │      
│  │  │      └─simpletag
│  │  │              EchoAttributesTag.class
│  │  │              EchoAttributesTag.java
│  │  │              FindBookSimpleTag.class
│  │  │              FindBookSimpleTag.java
│  │  │              HelloWorldSimpleTag.class
│  │  │              HelloWorldSimpleTag.java
│  │  │              RepeatSimpleTag.class
│  │  │              RepeatSimpleTag.java
│  │  │              ShuffleSimpleTag.class
│  │  │              ShuffleSimpleTag.java
│  │  │              TileSimpleTag.class
│  │  │              TileSimpleTag.java
│  │  │              
│  │  ├─listeners
│  │  │      ContextListener.class
│  │  │      ContextListener.java
│  │  │      SessionListener.class
│  │  │      SessionListener.java
│  │  │      
│  │  ├─nonblocking
│  │  │      ByteCounter$CounterListener.class
│  │  │      ByteCounter.class
│  │  │      ByteCounter.java
│  │  │      NumberWriter$NumberWriterListener.class
│  │  │      NumberWriter.class
│  │  │      NumberWriter.java
│  │  │      
│  │  ├─num
│  │  │      NumberGuessBean.class
│  │  │      NumberGuessBean.java
│  │  │      
│  │  ├─sessions
│  │  │      DummyCart.class
│  │  │      DummyCart.java
│  │  │      
│  │  ├─trailers
│  │  │      ResponseTrailers$TrailerFieldSupplier.class
│  │  │      ResponseTrailers.class
│  │  │      ResponseTrailers.java
│  │  │      
│  │  ├─util
│  │  │      CookieFilter.class
│  │  │      CookieFilter.java
│  │  │      HTMLFilter.class
│  │  │      HTMLFilter.java
│  │  │      
│  │  ├─validators
│  │  │      DebugValidator.class
│  │  │      DebugValidator.java
│  │  │      
│  │  └─websocket
│  │      │  ExamplesConfig.class
│  │      │  ExamplesConfig.java
│  │      │  
│  │      ├─chat
│  │      │      ChatAnnotation.class
│  │      │      ChatAnnotation.java
│  │      │      
│  │      ├─drawboard
│  │      │  │  Client$1.class
│  │      │  │  Client.class
│  │      │  │  Client.java
│  │      │  │  DrawboardContextListener.class
│  │      │  │  DrawboardContextListener.java
│  │      │  │  DrawboardEndpoint$1.class
│  │      │  │  DrawboardEndpoint$2.class
│  │      │  │  DrawboardEndpoint$3$1.class
│  │      │  │  DrawboardEndpoint$3.class
│  │      │  │  DrawboardEndpoint.class
│  │      │  │  DrawboardEndpoint.java
│  │      │  │  DrawMessage$ParseException.class
│  │      │  │  DrawMessage.class
│  │      │  │  DrawMessage.java
│  │      │  │  Room$1$1.class
│  │      │  │  Room$1.class
│  │      │  │  Room$2.class
│  │      │  │  Room$MessageType.class
│  │      │  │  Room$Player.class
│  │      │  │  Room.class
│  │      │  │  Room.java
│  │      │  │  
│  │      │  └─wsmessages
│  │      │          AbstractWebsocketMessage.class
│  │      │          AbstractWebsocketMessage.java
│  │      │          BinaryWebsocketMessage.class
│  │      │          BinaryWebsocketMessage.java
│  │      │          CloseWebsocketMessage.class
│  │      │          CloseWebsocketMessage.java
│  │      │          StringWebsocketMessage.class
│  │      │          StringWebsocketMessage.java
│  │      │          
│  │      ├─echo
│  │      │      EchoAnnotation.class
│  │      │      EchoAnnotation.java
│  │      │      EchoAsyncAnnotation$CompletedFuture.class
│  │      │      EchoAsyncAnnotation.class
│  │      │      EchoAsyncAnnotation.java
│  │      │      EchoEndpoint$EchoMessageHandlerBinary.class
│  │      │      EchoEndpoint$EchoMessageHandlerText.class
│  │      │      EchoEndpoint.class
│  │      │      EchoEndpoint.java
│  │      │      EchoStreamAnnotation.class
│  │      │      EchoStreamAnnotation.java
│  │      │      servers.json
│  │      │      
│  │      └─snake
│  │              Direction.class
│  │              Direction.java
│  │              Location$1.class
│  │              Location.class
│  │              Location.java
│  │              Snake.class
│  │              Snake.java
│  │              SnakeAnnotation.class
│  │              SnakeAnnotation.java
│  │              SnakeTimer$1.class
│  │              SnakeTimer.class
│  │              SnakeTimer.java
│  │              
│  ├─jsp
│  │      403.jsp
│  │      403.jsp.html
│  │      debug-taglib.tld
│  │      example-taglib.tld
│  │      jsp2-example-taglib.tld
│  │      
│  ├─lib
│  │      taglibs-standard-impl-1.2.5-migrated-0.0.1.jar
│  │      taglibs-standard-spec-1.2.5-migrated-0.0.1.jar
│  │      
│  └─tags
│          displayProducts.tag
│          helloWorld.tag
│          panel.tag
│          
└─websocket
        chat.xhtml
        drawboard.xhtml
        echo.xhtml
        index.xhtml
        snake.xhtml

到了这里,关于Java web应用的目录结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JAVA WEB】JS的应用

    目录 猜数字 预期效果 涉及接口预览  代码实现 表白墙 预期效果 代码实现 代办事项 预期效果 代码实现 //当我们要获得文本框上输入的内容,可以通过.value获取 let guess_text = document.querySelector(\\\'.guess_num\\\') guess_text.value = 0 //当我们需要获取或者设置指定标签之间的HTML内容,可以

    2024年02月20日
    浏览(22)
  • Java Web应用开发 ——作业七

    一.单项选择题(共7题,28.7分) 1 Servlet程序的入口点是( )。 A、 init() B、 main() C、 service() D、 doGet() 正确答案: A 2 JSP和Servlet的关系是() A、 没有关系,因为前者是页面,后者是java类 B、 继承关系 C、 Servlet就是JSP D、 JSP会被翻译成Servlet 正确答案: D 3 编写Servl

    2024年02月01日
    浏览(39)
  • 【Java万花筒】Java安全卫士:从密码学到Web应用攻击

    在当今数字化时代,安全性至关重要,特别是对于Java开发者而言。本文将深入探讨Java安全与加密领域的关键库和技术,包括Bouncy Castle、Jasypt、Keycloak、Apache Shiro、Java Cryptography Extension (JCE)和OWASP Java Encoder。通过详细介绍各个库的功能、使用案例和实际代码示例,读者将获得

    2024年01月20日
    浏览(43)
  • 【Java 进阶篇】解决Java Web应用中请求参数中文乱码问题

    在Java Web应用开发中,处理请求参数时经常会遇到中文乱码的问题。当浏览器向服务器发送包含中文字符的请求参数时,如果不正确处理,可能会导致乱码问题,使得参数无法正确解析和显示。本文将详细探讨Java Web应用中请求参数中文乱码问题,以及如何解决这个问题。 中

    2024年02月08日
    浏览(33)
  • 【Java】Web应用的文件上传下载

    🎄欢迎来到@边境矢梦°的csdn博文🎄  🎄本文主要梳理Web应用的文件上传下载🎄 🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下 🫰🫰🫰 ,下次更新不迷路🎆  Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大)🌑🌒🌓🌔🌕

    2024年02月12日
    浏览(30)
  • JAVA Web应用常见漏洞与修复建议

    最近负责的项目参与了甲方要求的代码审计,扫出来不少问题,46w+行代码扫出来81种漏洞,涉及1w+行代码,不良代码率高达2.93%,也确实反应了不少问题,这里贴出来供大家参考 目录 跨站脚本 高危:存储型XSS 高危:反射型XSS 输入验证 高危:路径遍历 高危:基于DOM的XSS 高危

    2024年02月06日
    浏览(31)
  • 【Java 进阶篇】Java ServletContext详解:在Web应用中获取全局信息

    在Java Web开发中, ServletContext 是一个重要的概念,它允许我们在整个Web应用程序中共享信息和资源。本篇博客将深入探讨 ServletContext 的作用、如何获取它,以及如何在Web应用中使用它。无论您是刚刚入门的小白还是有一定经验的开发者,都能从本文中获取有价值的信息。 S

    2024年02月06日
    浏览(40)
  • Java Web应用中的安全与防护

    Java Web应用是现代互联网应用的重要组成部分,它们为用户提供了丰富的功能和服务。然而,Java Web应用也面临着各种安全漏洞和攻击,这些漏洞和攻击可能导致数据泄露、信息盗用、系统破坏等严重后果。因此,Java Web应用的安全与防护是非常重要的。 在本文中,我们将从以

    2024年01月21日
    浏览(32)
  • Java Web应用小案例:实现用户登录功能

    掌握纯JSP方式实现用户登录功能 掌握JSP+Servlet方式实现用户登录功能 掌握JSP+Servlet+DB方式实现用户登录功能 掌握MVC模式实现用户登录功能 登录页面 login.jsp ,输入用户名和密码后,跳转到登录处理页面 doLogin.jsp 进行业务逻辑处理,登录成功,跳转到登录成功页面 success.jsp ,

    2024年02月04日
    浏览(34)
  • 【Java单体应用】使用IntelliJ IDEA 创建Java Web项目(超详细图文教学)

    一: 打开 IEDA ,选择 Create New Project 二: 选择 Java - Create New Project - Web Application ,然后点 Next 三: 下图一是 默认项目名 ,下图二是 自定义项目名 。只需要改 Project name(项目名) 和 Project location(项目路径) ,下面的 More Settings 中的内容会随着你的项目名变动,不需要你

    2024年02月05日
    浏览(98)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包