当前位置:首页 > 科技 >

Webx3原理分析

发布时间:2017-09-11 11:42:58

Webx3原理分析

抽空总结了Webx3框架,如有错误,欢迎指正!

2 背景知识 2.1 Maven

Maven主要解决了以下两个问题:

(1)、它为项目构建引入了一个统一的接口,抽象了构建的生命周期,并为生命周期中的绝大部分任务提供了实现的插件。你不需要去关心这个生命周期里发生的事情,只需要把代码放在指定的位置,执行一条命令,整个构建过程就完成了。

(2)、其次,它为Java世界里的依赖引入了经纬度(groupId和artifactId),不再需要下载指定版本的jar包、拷贝到lib目录这些事情,只需要定义我的项目依赖了哪些构件(artifact),Maven会自动帮你管理依赖,并将jar包下载到正确的位置上。

2.2 Servlet、HttpServlet及其Servlet生命周期

Servlet是java用于开发动态web资源的技术。是java web的基础。本质上,Servlet只是一个接口,或者说API,真正工作的是实现该接口的一个Java类的实例,由ServletContainer(常见的容器有Tomcat、Jboss)容器负责实例化。当请求到来时,容器将调用该实例的service方法。

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); }

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
(1)Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步

(2)装载并创建该Servlet的一个实例对象

(3)调用Servlet实例对象的init()方法

(4)创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对
象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去

(5)WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法

2.3 DTD和Schema

DTD和Schema是两种常用的xml文件的约束文件,都是用来约定XML文件,目的是会提示使用者让使用者按照规定的格式去书写XML,验证XML文件有效性。主要的区别有一下几点:
(1)Schema遵循XML语法,学习成本低,不需要再学习新的语法;DTD和XML语法使用的是自己特殊的语法
(2)DTD只能指定元素含有文本,不定定义元素文本的类型,如字符型、整型、日期型、自定义类型等。Schema在这方面比DTD强大。
(3)Schema对命名空间的支持,如果出现两个相同的元素定义,使用命名空间可以完美的避免重复元素定义,而DTD不支持命名空间

下面就同一个XML文件,分别使用DTD和Schema约束,W3C官方给出的示例:

George John ReminderDon‘t forget the meeting!

DTD约束:

Schema约束:

<xs:element name="body" type="xs:string/> 2.4 日志框架和日志系统

(1)日志系统

最开始出现的是log4j,也是应用最广泛的日志系统,成为了目前java日志系统事实上的标准

JUL(java.util.logging.*),JDK 1.4 自带的日志系统;JUL 并没有明显的优势来战胜Log4j,反而造成了标准的混乱——采用不同日志系统的应用程序无法和谐共存;

Logback,是较新的日志系统,它是 Log4j 的作者吸取多年的经验教训以后重新做出的一套系统;它的使用更方便,功能更强,而且性能也更高;Logback 不能单独使用,必须配合日志框架 SLF4J 来使用;

(2)日志框架

JUL 诞生以后,为了克服多种日志系统并存所带来的混乱,就出现了“日志框架”。日志框架本身不提供记录日志的功能,
它只提供了日志调用的接口。日志框架依赖于实际的日志系统如Logback、Log4j或 JUL 来产生真实的日志;使用日志框架的好处是:应用的部署者可以决定使用哪一种日志系统(Logback、Log4j 还是 JUL),或者在多种日志系统之间切换,而不需要更改应用的代码;

JCL(Jakarta Commons Logging),这是目前最流行的一个日志框架,由 Apache Jakarta 社区提供;一些框架和老应用(如 Spring 等)都依赖于 JCL;

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:潜江网站制作 http://qianjiang.666rj.com