SpringMVC 初次搭建

来源:互联网 发布:游戏编程要看哪些书 编辑:程序博客网 时间:2024/06/03 05:55

SpringMVC demo框架的搭建过程详解

  • 首先NEW一个Dynamic Web Project
    这里写图片描述
  • 将lib复制进WEB-INF下面的lib包里面
    这里写图片描述

  • 配置web.xml,这是Web项目的基础,而这个文件里面需要写的是下面的东西:

  • 上下文:context-param,里面要声明使用的配置文件的地址
    这里写图片描述
    如上配置是Spring集成Web环境的通用配置;一般用于加载除Web层的Bean(如DAO、Service等),以便于与其他任何Web框架集成。文件命名的规则就是下面代码里面出现的那个主要的servlet的名字加上”-dao”或者”-service”。我们把和数据库相关的操作写在Dao里面。

  • Dispacherservlet:这是整个spring的中心处理分发器。还要写好一个mapping的东西。
    这里写图片描述
    load-on-startup:表示启动容器时初始化该Servlet;优先级为1,越低越高。
    url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.htm”表示拦截所有以html为扩展名的请求。
    Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”。所以这里提到的servlet名字就是上面截图的名字。

  • Listener:配置一下主要的监听器,现在能用到的主要是一个ContextLoaderListener。
    这里写图片描述
    contextConfigLocation:表示用于加载Bean的配置文件;

总结:为了更好的理解这个配置文件,先说明下他们之间的关系。
这里写图片描述
在网上找了个图片,说明了spring里面初始启动的机制。首先我们需要知道,spring开始启动的时候就启动3个东西,listener, filter, servlet.我们现在先不考虑filter的东西,那个用到的话是精解版的内容。我们要知道这个启动也是有顺序,他是串行的任务。先是启动listener ,由它来监听包括servlet在内的状态。ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。
PS:但是本文里面只是一个很基础的东西,连一些适配器,拦截器等等均没有用到,只是用到了基本框架和数据库。

  • 配置applicationContext.xml.
    这里配置要使用的组件之类的东西。比如 数据源,ibatis数据库等。我们这里只是用了上面说的2个,所以就配置了这2个东西。
    这里写图片描述
    在这里要注意的是在配置了IBATIS之后还使用了一个Template,意义是为了之后的数据库操作中使用这个类型,可以减少数据库连接的数量,是个很好的设计。
    其中数据源的配置如下:
    这里写图片描述
    SqlMapClient是个很重要的bean,可以看到他也有个配置文件sqlMapConfig.xml,待会会说到。

  • 配置/WEB-INF/[servlet名字]-servlet.xml。
    我们这个例子就是demotry-servlet.xml. 之前说到了这个配置文件,他不需要在单独的在context-param上下文里面在配置路径,但是文件必须存在,这个是直接加载的配置文件。
    这里写图片描述
    主要这个controller对应的URL路径,在浏览器里面输入这个路径就MAP出来相应的controller.
    以及上面的datamanageController的bean的配置如下。
    这里写图片描述
    待会会建立一个相应的类

  • 开始写一写代码了,主要在SRC包下面
    这里写图片描述
    因为很初级,所以需要建立的东西就是这些,dao里面放一些数据库的操作。Model对应数据库的数据模型。Service里面是一些提供的服务。Sql里面主要是一些配置文件。
    Web里面主要是controller的类。

  • 建立好数据库,将model下面的类写好,要一一对应数据库的表。
    数据库的表
    这里写图片描述
    然后model:
    这里写图片描述
    然后给出他们的setter/getter方法。

  • 配置sql包下面的sqlMapConfig.xml
    这里写图片描述
    主要是声明下sqlmap里面的配置文件有哪些。比如这里的AcceDao.xml

  • 配置AcceDao.xml
    这里写图片描述
    看到结构很清晰米就是一个resultmap , 和一个select这样的功能性的东西。
    在resultmap里面,我们需要知道每个数据库里面的表格都要建立一张这样的map.而且表格里面的字段都要这样声明一下。而select是一些增删改查的方式。这里还要再看一下深入的内容。

  • 建立AcceDao的interface java文件
    我们在有了上面的配置文件后,需要在DAO的包下面建立一些对应的类的文件来处理。根据上面的xml文件,我们可以很轻松的建立。方法名称要和上面的id名称相对应。
    这里写图片描述

  • BaseDao的加入
    设计里面应用了一个basedao.java ,这个类的作用就是使我们的框架拥有一个sqlMapClientTemplate。上面再IBATIS的配置(applicationContext.xml)里面说过配置了一个template,就是用在这里的一个。因为数据库的操作中会使用很多次这个类,所以他的实例化会很多,这样有很多的问题。在这里映入一个basedao的相当于父类的东西,就很好的解决这个问题。
    这里写图片描述

  • 实现AcceDao接口的AcceDaoImpl.Java
    这里写图片描述
    继承basedao拥有一个template,然后实现接口AcceDao.主要是一些getSqlMapClientTemplate()的方法来使用,应为之前我们已经在xml文件里面配置好了。

  • 书写service
    Service主要是提供一些功能给controller使用。我们这里就是给出了一个从数据库里面列举出刚刚查到的数据的功能。使用了DAO里面的东西来实现。
    这里写图片描述
    最重要的是用红色的先画出来的部分。这里涉及到一个spring的控制反转机制。由生成的对象的bean来反过来控制这个类或者接口或者java文件之类的。就是说这样生成的bean只要是在相应的xml里面进行了声明,就不需要在用的时候进行实例化,就由很长的生命周期并且整个周期里面只存在一个。这样的机制是很cool的。

  • 声明acceDao这个实例的bean
    这里写图片描述

  • 配置[servlet名字]-service.xml
    也就是我们这个里面的demotry-service.xml.刚刚使用了service,里面会存在很多需要声明的bean,所以需要这个文件在运行时就要加载。马上要说的controller里面要使用这个实例,原理如上,也要进行声明。
    这里写图片描述
    本例子handleAcce这个实例里面,需要进行声明的是acceDao,因为用到了这个bean,所以还要声明一下

  • 书写Controller.
    这里写图片描述
    这里的controller要继承自AbstractController,原因是我们要使用一个方法handleRequestInternal。 这个方法里面就是处理之前的dopost,doget,doheader等等这样的方法内容的方法,在spring里面全部都集成在这一个方法里面了。
    讲到这里,这个程序就可以跑起来了,基本的框架都已经搭建好了。