跳到主要内容

Java Web 构成

Servle、ViewResolver、Filter、war、Log4j、Tomcat、Maven、Hibernate、MyBatis

Servlet 及相关类

servlet 是一个接口,它的实现类有 GenericServlet,而 httpservlet 是 GenericServlet 的一个子类,一般我们都会使用这个类。

servletconfig 是用于保存 servlet 配置信息的数据结构,而 servletcontext 则负责保持 servlet 的上下文,web 应用启动时加载 web.xml 信息于 servletconfig 中。

JSP、ViewResolver

JSP 页面需要编译成 class 文件并通过 tomcat 的类加载器进行加载,形成 servlet 实例,请求到来时实际上执行的是 servlet 代码,然后最终再通过 viewresolver 渲染成页面。

Filter、Listener

filter 是过滤器,也需要在 web.xml 中配置,是责任链式的调用,在 servlet 执行 service 方法前执行。 listener 则是监听器,由于容器组件都实现了 lifecycle 接口,所以可以在组件上添加监听器来控制生命周期。

web.xml

web.xml 用来配置 servlet 和 servlet 的配置信息,listener 和 filter。也可以配置静态文件的目录等。

war 包

war 包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。war 专用在 web 方面 。

Java Web 工程,都是打成 WAR 包进行发布。

Tomcat 基础

TODO

Log4j

log4j 是非常常用的日志组件,不过现在为了使用更通用的日志组件,一般使用 slf4j 来配置日志管理器,然后再介入日志源,比如 log4j 这样的日志组件。

数据库驱动和连接池

一般我们会使用 class.forname 加载数据库驱动,但是随着 Spring 的发展,现在一般会进行数据源 DataSource 这个 bean 的配置,bean 里面填写你的数据来源信息即可,并且在实现类中可以选择支持连接池的数据源实现类,比如 c3poDataSource,非常方便。

数据库连接池本身和线程池类似,就是为了避免频繁建立数据库连接,保存了一部分连接并存放在集合里,一般可以用队列来存放。

除此之外,还可以使用 tomcat 的配置文件来管理数据库连接池,只需要简单的一些配置,就可以让 tomcat 自动管理数据库的连接池了。 应用需要使用的时候,通过 jndi 的方式访问即可,具体方法就是调用 jndi 命名服务的 look 方法。

单元测试

单元测试是工程中必不可少的组件,maven 项目在打包期间会自动运行所有单元测试。一般我们使用 junit 做单元测试,统一地在 test 包中分别测试 service 和 dao 层,并且使用 mock 方法来构造假的数据,以便跳过数据库或者其他外部资源来完成测试。

Maven

maven 是一个项目构建工具,基于约定大于配置的方式,规定了一个工程各个目录的用途,并且根据这些规则进行编译,测试和打包。 同时他提供了方便的包管理方式,以及快速部署的优势。

可以使用 sdkman 安装 maven

查看 maven 版本:mvn -v

Git

git 是分布式的代码管理工具,比起 svn 有着分布式的优势。

JSON 和 XML

数据描述形式不同,json更简洁。

Hibernate、MyBatis

由于 JDBC 方式的数据库连接和语句执行太过繁琐,重复代码太多,后来提出了 jdbctemplate 对数据进行 bean 转换。

但是还是差强人意,于是转而出现了 hibernate 这类的持久化框架。可以做到数据表和 bean 一一映射,程序只需要操作 bean 就可以完成数据库的 curd。

mybatis 比 hibernate 更轻量级,mybatis 支持原生 sql 查询,并且也可以使用 bean 映射,同时还可以自定义地配置映射对象,更加灵活,并且在多表查询上更有优势。