专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 项目基础系列:Javaweb项目架构教程

项目基础系列:Javaweb项目架构教程

更新时间:2020-04-17 13:50:58 来源:动力节点 浏览1883次

    1.JavaWeb模块结构

    JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class。JavaWeb和ASP.NET的核心是分别是Servlet和IHttpHandler接口,因此无论是基础的Page文件(JSP、ASPX)方式还是后来发展的MVC方式(SpringMVC、ASP.NETMVC)都是基于核心接口的基础上再次封装和扩展(DispatcherServlet、MvcHandler)。

    除JSP文件外,其他全部文件部署在应用目录的WEB-INF子目录下,WEB-INF目录可以认为是ASP.NET中将web.config文件、bin目录和App_开头的运行时目录存放在了一个统一的根目录中。

    JavaWeb的配置文件web.xml也存放在WEB-INF目录下,而ASP.NET的配置文件web.config一般直接存放在应用目录下(ASP.NET其他目录同样可以有web.config文件)。ASP.NET将所有的引用和代码生成的dll都部署在bin中,而JavaWeb的引用jar和生成的class分别存放在WEB-INF的子目录lib和classes中(参考1)。

    综上,类似ASP.NET中的web.config、bin、App_Data等,JavaWeb中的WEB-INF、web.xml、lib和classes是我们必须了解和掌握的。

    |--AssemblyRoot

    |---WEB-INF/

    |--web.xml

    |--lib/

    |--classes/

    WEB-INF目录:JavaWeb文件的根目录。

    web.xml文件:配置文件(asp.netweb.config)。

    lib目录:存放类库文件(asp.netbin)。

    classes目录:存放class文件(asp.netbin)。

    servlet基础

    正如ASP.NET的核心是IHttpHandler一样,JavaWeb的核心是Servlet接口,位于javax.servlet命名空间中。Filter的概念可以参考ASP.NET的HttpModule,Servlet中的各种Listener可以参考ASP.NETHttpApplicaiton中类似的event。无论是Java还是.NET的Web技术,都是基于HTTP协议的具体实现。JavaWeb和ASP.NET中的一些核心项对应如下:

项目基础系列:Javaweb项目架构教程

    Servlet和ASP.NET的简化示意图:

项目基础系列:Javaweb项目架构教程

    用于简化web.xml配置的Servlet的注解(3.0开始支持,在ASP.NET中没有对应项):

    (1)WebServlet:作用在javax.servlet.http.HttpServlet的实现类上。

    (2)WebFilter:作用在javax.servlet.Filter的实现类上。

    (3)WebListener:作用在Listener的实现类上(javax.servlet.ServletContextListener、javax.servlet.ServletContextAttributeListener、javax.servlet.ServletRequestListener、javax.servlet.ServletRequestAttributeListener、javax.servlet.http.HttpSessionListener、javax.servlet.http.HttpSessionAttributeListener)。

    (4)WebInitParam:结合WebServlet和WebFilter注解用来配置属性。

    (5)MultipartConfig:作用在javax.servlet.http.HttpServlet的实现类上。标注请求是mime/multipart类型。

    用于Servlet容器初始化的ServletContainerInitializer(可实现无web.xml,3.0开始支持,可类比ASP.NET的Application_Start方法):

    (1)Servlet容器启动时查找ServletContainerInitializer的实例。

    (2)ServletContainerInitializer实例使用HandlesTypes标注一个或多个类型,Servlet容器将在启动时扫描classpath,获取这些类型的实例。

    (3)Servlet容器在启动时调用ServletContainerInitializer实现类的onStartup方法,该方法可以获取HandlesTypes标注的所有类型对象。

项目基础系列:Javaweb项目架构教程

 以上就是动力节点java培训机构的小编针对“项目基础系列:Javaweb项目架构教程”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

 Javaweb热门基础学习

 EL&JSTL:http://www.bjpowernode.com/javavideo/122.html

 Filter&Listener:http://www.bjpowernode.com/javavideo/121.html

 JSP:http://www.bjpowernode.com/javavideo/120.html

 Servlet:http://www.bjpowernode.com/javavideo/119.html

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>