当前位置: 代码迷 >> Web前端 >> JavaWeb工程途径
  详细解决方案

JavaWeb工程途径

热度:231   发布时间:2013-03-21 10:08:17.0
JavaWeb工程路径

JavaWeb根目录下的文件路径结构。

WebRoot

? ? ? ? |----META-INF/

? ? ? ? |----WEB-INF/

? ? ? ? ? ? ? ? |----lib/

? ? ? ? ? ? ? ? |----web.xml

?

?

理解WEB-INF

以下内容转自百度百科。

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

? ? 如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

? ? WEB-INF文件夹下除了web.xml外,还存一个classes文件夹,用以放置 *.class文件,这些 *.class文件是网站设计人员编写的类库,实现了jsp页面前台美工与后台服务的分离,使得网站的维护非常方便。web.xml文件为网站部署描述XML文件,对网站的部署非常重要。

? ? WEB-INF文件夹中除了有classes文件夹和一个web.xml文件外、还有lib文件夹(用于存放需要的jar包)(用于配置,比如说用来配置过滤器等。)

?

说明:WEB-INF下的资源是无法直接访问的,只有通过forward才可以访问。也即jsp文件放在该WEB-INF下有利于安全性。?

参考文章:JSP放在WEB-INF下 :http://www.cnblogs.com/peislin/archive/2012/08/23/2652354.html (注意其目录结构)

?

理解META-INF

以下内容转自http://umi.iteye.com/blog/1503898

? ? 做过JAVA EE开发的工程师应该都知道在JAVA build出来的JAR或者WAR的顶层目录下有个META-INF文件夹吧,可是有多少人能够清楚说出这个文件夹到底是做神马的? What is the purpose of META-INF? 恐怕不是都能说的清楚准确吧。

? ? 所谓META-INF, 说白了就是存放一些meta information相关的文件的这么一个文件夹,一般来说尽量不要自己手工放置文件到这个文件夹。怎么理解这句话呢?就是说这个文件夹应该被看作是JAVA工程的一个内部META目录,所以这个目录下的文件应该都是build工具来生成的。我们自己的文件应该直接放到根目录下或者其他的子目录中。
? ? 根据官方的JAR file specification(http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html), 一个典型的META-INF目录下可能包含如下几种文件或者子目录:
  • MANIFEST.MF
  • INDEX.LIST
  • x.SF
  • x.DSA
  • services/
? ? ?不过理想和现实总是有差距,现在即使一些著名的开源代码对META-INF的使用上都存在大的差异,类似Apache CXF中就有这样的Spring配置:
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:jaxws="http://cxf.apache.org/jaxws"
     xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

     <import resource="classpath:META-INF/cxf/cxf.xml" />
     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
  ...
</beans>
? ? 更多讨论见stackoverflow的一个Q&A:?http://stackoverflow.com/questions/70216/whats-the-purpose-of-meta-inf

?

?