使用Maven+SSM框架搭建图书管理系统

图书管理系统功能:登陆、查询、借书、还书(示例只实现了登陆功能)

一、环境准备

数据库软件:SQL Server 2005

IDEEclipse

JDKjdk1.8.0_144

Tomcatapache-tomcat-8.5.29

Eclipse中部署TomcatWindow-->preferences-->server-->Runtime Environments-->Add-->选择你的Tomcat所在目录

 

二、创建数据库表

1)书籍信息表Book

BookID     BookName     Stock(书籍库存)

2)学生信息表 Student

StudentID     StudentName      Password

3)借阅记录表 BorrowingRecord

RecordID     BookID      StudentID

Stockint类型外,其他都是nchar(10)类型


在SQL Server 2005中建立外键约束:

一个表中的主键可以作为另一个表的外键。右键外键表-->关系-->添加-->点击表和列规范后的“...”图标。

 

三、Maven简介

1、什么是Maven

Apache Maven是一个项目管理和整合工具。基于工程对象模型的概念(POM),通过一个中央信息管理模块,Maven能够管理项目的构建、报告和文档。

Maven工程结构和内容被定义在一个xml文件中——pom.xml,是Project Object Model的简称,此文件是Maven系统的基础组件。

2、为什么要用Maven

当我们创建一个Maven项目后,就不需要自己去导入各种jar包了,将要导入的jar包依赖信息配置在pom.xmlMaven项目会根据具体的配置自动在编译、测试和运行的时候从本地仓库中导入相应的各种依赖。

这样做有两个最大的好处:一是项目的依赖被统一管理,不容易出现依赖冲突(比如说jar包引入的版本冲突);另一个就是项目的体积变小了,毕竟一个稍微大些的项目光是引入的jar包就占了相当多的体积,而Maven项目只需要一个pom.xml文件就搞定了。

这里有两个问题:

1)pom.xml文件的节点的子节点用于配置各种jar包的依赖,我试了一下,当将spring-coreversion改成与spring所需的其他jar包不一样的时候,运行还是会报jar包冲突的错误,为避免这种情况,有两种解决方案:①在pom.xml文件中加上元素,用来指定一个统一的版本,之后用${}来取值就可以了,这样可以保证版本的一致性。②去http://www.mvnrepository.com/查找所需要的jar包,点击对应版本(选择的时候注意版本的一致性),会出现对应的语句,只用复制粘贴进你的pom.xml文件即可。

2)之前说过使用Maven管理项目不需要自行导入jar包,只需添加依赖,项目会到本地的maven仓库中找相应的jar包,若本地仓库中没有,maven会自动下载至仓库中。仓库中的jar包可供所有项目使用。此处有两个问题:①maven下载大量的jar包,导致某盘不够用,需要更换更大的分区。Eclipse自带的Maven插件,其仓库默认是在C盘的,这就更不好了。可以通过Window-->Preferences-->Maven-->User Settings来查看和更改仓库的默认路径。②并不是所有的jarMaven都能自行下载成功的,比如我用的连接SQL Server数据库的sqljdbc4.jar Maven就不能下载成功(具体原因我也不知道...),这时就需要我们自行下载,然后放到maven的仓库中去。(注意,mavenjar包管理是分类的,不能直接将下载好的jar包丢在根目录下,应该寻找它应处的正确位置。比如sqljdbc4.jar存在com-->microsoft-->sqlserver-->sqljdbc4-->4.0目录下,虽然maven没有下载成功,但是在该目录下已经有两个.lastUpdated文件)

约定优于配置

Maven使用约定而不是配置,开发者不需要再关心每一个配置细节。当创建Maven工程时,Maven会创建默认的工程结构,开发者只需要合理的放置文件,并在pom.xml中添加项目相关的依赖。

使用Maven创建项目,默认分为以下几个文件夹:

src/main/java 用来存放项目源码

src/main/resources 存放资源文件,比如.properties文件

src/test/java 存放测试用的代码

src/test/resources 存放测试用的资源文件

target/classes 编译后的文件

target/test-classes 编译后用于测试的文件

 

四、使用EclipseMaven插件

使用EclipseMaven插件创建并管理项目。File-->New-->Maven Project

在网上看的都说要自行下载并配置Maven,但是我看Eclipse上有,就没有下载,不知道两者有什么差别。

Eclipse上用Maven创建一个Web项目教程:http://www.cnblogs.com/leiOOlei/p/3361633.html

 

五、使用SSM框架搭建项目

1、基本概念

SSM框架是Spring、SpringMVC、MyBatis框架的整合,是标准的MVC模式,将整个系统划分为表现层、controller层、service层和DAO层。使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,MyBatis作为数据对象的持久化引擎。

1)Spring 是一个于2003年兴起的轻量级Java开发框架,是为了解决企业应用开发的复杂性创建的。Spring能使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发,从简单性、可测试性、松耦合的角度而言,任何Java应用都能从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。我们平时开发接触最多的估计就是IoC容器,它可以装载Bean(也就是Java中的类),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看见关键字new。另外,Spring的AOP,事务管理等等都是我们经常用到的(这两个方面我还不是很懂)。

AOP:面向切面编程,是面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序的可重用性,提高开发效率。

2)SpringMVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

3)MyBatis 是一个基于Java的持久层框架,消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置或原始映射,将接口和Java的POJOs(普通的Java对象)映射成数据库中的记录。MyBatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,其中配置了每个类对数据库所需进行的sql语句映射,在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

 

2、SSM整合

这次整合分了两个配置文件:spring-mybatis.xml和spring-mvc.xml文件

一个资源文件:jdbc.properties文件

都放在src/main/resources文件夹下。

1)引入jar包(在我的pom.xml文件中都有,就不一一列举了)


  4.0.0
  org.LibraryManage
  LibraryManage
  war
  0.0.1-SNAPSHOT
  LibraryManage Maven Webapp
  http://maven.apache.org
 
  
    
    4.3.5.RELEASE
  
 
  
    
    
      junit
      junit
      3.8.1
      
      test
    
    
    
    
      javax
      javaee-api
      7.0
    
    
    
    
	
      org.springframework
      spring-core
      ${haha.version}
	
	
      org.springframework
      spring-web
     4.3.5.RELEASE
	
	
      org.springframework
      spring-oxm
      4.3.5.RELEASE
	
	
      org.springframework
      spring-tx
      4.3.5.RELEASE
	
	
      org.springframework
      spring-jdbc
      4.3.5.RELEASE
	
	
      org.springframework
      spring-webmvc
      4.3.5.RELEASE
	
	
      org.springframework
      spring-aop
      4.3.5.RELEASE
	
	
      org.springframework
      spring-context
      4.3.5.RELEASE
    
	
	
      org.springframework
      spring-context-support
      4.3.5.RELEASE
	
	
      org.springframework
      spring-test
      4.3.5.RELEASE
      test
	
	
      org.springframework
      spring-beans
      4.3.5.RELEASE
	
	
	
	
	
      org.mybatis
      mybatis
      3.4.1
	

	
	
      org.mybatis
      mybatis-spring
      1.3.0
	

	
	
      com.microsoft.sqlserver
      sqljdbc4
      4.0
	

	
	
      mysql
      mysql-connector-java
      6.0.6
	
	
	
	
      commons-dbcp
      commons-dbcp
      1.4
	

	
	
      jstl
      jstl
      1.2
	
	
	
	
	
      log4j
      log4j
      1.2.17
	
	
	
	
      com.alibaba
      fastjson
      1.2.46
	
	
	
      org.slf4j
      slf4j-api
      1.7.25
	
	
      org.slf4j
      slf4j-log4j12
      1.7.25
      test
	
	
	
	
	
      org.codehaus.jackson
      jackson-mapper-asl
      1.9.13
	
	
	
	
      commons-fileupload
      commons-fileupload
      1.3.1
	
	
      commons-io
      commons-io
      2.4
	
	
      commons-codec
      commons-codec
      1.10
	
	
  
  
    LibraryManage
    
    
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        2.3.2
        
          1.8
          1.8
        
      
    
    
  


2)Spring与MyBatis的整合

  ①建立jdbc.properties属性文件(修改文件编码为utf-8)

jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=LibraryManage
jdbc.username=zxx
jdbc.password=120963

#定义初始连接数
initialSize = 0
#定义最大连接数
maxActive = 20
#定义最大空闲
maxIdle = 20
#定义最小空闲
minIdle = 1
#定义最长等待时间
maxWait = 60000

########连接mysql数据库语句########
#driver=com.mysql.jdbc.Driver
#url=jdbc:mysql://localhost:3306/LibraryManage
#username=zxx
#password=120963
###############################

  ②建立spring-mybatis.xml配置文件,主要是用来完成Spring和Mybatis的整合的,主要就是自动扫描、自动注入、配置数据库



 
    
    
    
    
    
    
    
    
    
    
    
    
    
      
          
          
          
            
      
    
    
    
    
      
      
      
      
      
    

      
      
          
          
      
    
    
    
    
      
    
    
    
    
    

3)整合SpringMVC

上面已经完成了两大框架的整合,SpringMVC的配置文件单独放,然后在web.xml中配置整合。

  ①配置spring-mvc.xml 主要是自动扫描控制器、视图模式、注解的启动这三个。




    
    
    
    
    
    
    
    
    
    
    
      
      
      
    

  ②配置web.xml文件









  
  Archetype Created Web Application
  
  
  
  
  
    contextConfigLocation
    classpath:spring-mybatis.xml
  
  
  
  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    encodingFilter
    
    /*
  
  
  
  
  
  
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
  
  
    org.springframework.web.util.IntrospectorCleanupListener
  
  
  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:spring-mvc.xml
    
    
    1
  
  
  
    SpringMVC
    /
  
  
  
    index.jsp
  
  

至此,我认为最难的部分已经做完了(配置文件真的是我认为最难的,这个项目只是根据网上的示例做的,配置文件基本都是copy copy copy,还不算真正理解吧,之后还要好好研究研究)

搭建好之后,项目的目录结构大概是:

使用Maven+SSM框架搭建图书管理系统_第1张图片

 

3、系统实现

框架搭好了,可以开始写具体的功能了~

要完成一个具体的功能:

1)先写实体类entity,定义对象的属性(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码之前)

2)Mapper.xml(mybatis),其中定义你的功能,对应要对数据库进行的哪些操作,比如select、insert、update、delete等

3)Dao.java,一般是接口类型的,将Mapper中的操作按照id映射成Java方法。

4)Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。

5)Controller.java连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。

6)JSP页面调用,请求哪些参数,需要获取哪些数据。

使用Maven+SSM框架搭建图书管理系统_第2张图片

 

六、过程中遇到的问题

1、NoSuchBeanDefinitionException: No qualifying bean of type xxx found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.这个错是指Spring的依赖注入出了问题,没有找到符合的bean,好好检查spring-mybatis.xml配置文件,一般是这里面出了问题。

2、数据库相关问题

之前一直用的mysql数据库,这次换成SQL Server真的有挺多地方不一样,需要注意。

首先是连接数据库的jar包,这个在之前已经说过了。

然后是数据库配置文件有一点点不一样,不过基本套路还是一样的(driver、url、username、password)。这里有两点需要注意:一是数据库的端口号,mysql默认是3306,而SQL Server则不一样,需要自己去看本机的数据库端口号,我的是1433,具体方法百度一下就有。二是以上说的四个参数(driver、url、username、password),如果数据表中有相同名字的字段(比如学生表中也有Password字段),最好改一下参数的名字,比如说加上一个“jdbc.”前缀,不然也会报错,就是这么任性。这两个问题报的错都是“用户xxx无法连接到数据库”这种类似的。

然后是权限问题,我是在数据库中新建了一个用户“zxx”,该用户只有连接的权限,没有增删改查数据的权限,这个时候就需要对该用户进行授权,具体方法也百度一下。当然,如果用的mysql就没有这些乱七八糟的问题。

3、还有其它问题皆百度之

 

天下文章一大抄,天下代码也是一大抄。不过希望我抄了之后能真的弄懂吧。

花了一个多星期才写完一个简单的登陆,也是没谁了...

你可能感兴趣的:(Java)