Java框架搭建之Maven、Mybatis、Spring MVC整合搭建(图文)
本文主要介绍了java框架搭建之maven、mybatis、spring mvc整合搭建(图文),分享给大家,具体如下:
ssm(spring+springmvc+mybatis),目前较为主流的企业级架构方案。标准的mvc设计模式,将整个系统划分为显示层、controller层、service层、dao层四层,使用springmvc负责请求的转发和视图管理,spring实现业务对象管理, mybatis作为数据对象持久化引擎。
框架详情
spring 是一个轻量级的java开发框架,它是为了解决企业应用开发的复杂性而创建的。spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中受益。 简单来说,spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架。
springmvc 属于springframework的后续产品,分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
mybatis 是一个基于java的持久层框架。mybatis提供的持久层框架包括sql maps和data access objects(dao)它消除了几乎所有的jdbc代码和参数的手工设置以及结果集的检索。mybatis 使用简单的 xml或注解用于配置和原始映射,将接口和 java映射成数据库中的记录。
1. 下载eclipse
到网站下载
选择自己所要的版本
2. 新建maven项目
选择file –> new –> maven project
可看到下面界面
点击next,可看到下面界面,我们选择maven-archetype-webapp
点击next,可看到。group id为包名,artifact id为项目名。这里我们输入group id=com.cjt, artifact id=mymaven。
最后点击finish成功创建项目
3. 项目运行前准备工作
新建项目之后,可以看到错误,这是build path与没有引入javaee包引起的。
1)设置build path
右键项目 –> build path --> configure build path…
然后选择libraries
maven默认是选择一个library的,这个错误的,我们双击这个来edit。
下面界面我们选择alternate jre或者workspace default jre。这里我们选择alternate jre。
2)引入javaee包
在pom.xml上引入javaee包
<!-- 导入java ee jar 包 --> <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>7.0</version> </dependency>
4. 项目配置文件设置
1) 设置pom.xml
我们现在设置pom.xml,下载jar包,这个过程可能有点慢
pom.xml:
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.cjt</groupid> <artifactid>mymaven</artifactid> <packaging>war</packaging> <version>0.0.1-snapshot</version> <name>testmaven01 maven webapp</name> <url>http://maven.apache.org</url> <properties> <!-- spring版本号 --> <spring.version>4.0.2.release</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j日志文件管理包版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 导入java ee jar 包 --> <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>7.0</version> </dependency> <!-- spring核心包 --> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-core</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-web</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-oxm</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-tx</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-jdbc</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-aop</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context-support</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-test</artifactid> <version>${spring.version}</version> </dependency> <!-- mybatis核心包 --> <dependency> <groupid>org.mybatis</groupid> <artifactid>mybatis</artifactid> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupid>org.mybatis</groupid> <artifactid>mybatis-spring</artifactid> <version>1.2.2</version> </dependency> <!-- 导入java ee jar 包 --> <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>7.0</version> </dependency> <!-- 导入mysql数据库链接jar包 --> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.30</version> </dependency> <!-- 导入dbcp的jar包,用来在applicationcontext.xml中配置数据库 --> <dependency> <groupid>commons-dbcp</groupid> <artifactid>commons-dbcp</artifactid> <version>1.2.2</version> </dependency> <!-- jstl标签类 --> <dependency> <groupid>jstl</groupid> <artifactid>jstl</artifactid> <version>1.2</version> </dependency> <!-- 日志文件管理包 --> <!-- log start --> <dependency> <groupid>log4j</groupid> <artifactid>log4j</artifactid> <version>${log4j.version}</version> </dependency> <!-- 格式化对象,方便输出日志 --> <dependency> <groupid>com.alibaba</groupid> <artifactid>fastjson</artifactid> <version>1.1.41</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-api</artifactid> <version>${slf4j.version}</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-log4j12</artifactid> <version>${slf4j.version}</version> </dependency> <!-- log end --> <!-- 映入json --> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-mapper-asl</artifactid> <version>1.9.13</version> </dependency> <!-- 上传组件包 --> <dependency> <groupid>commons-fileupload</groupid> <artifactid>commons-fileupload</artifactid> <version>1.3.1</version> </dependency> <dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>2.4</version> </dependency> <dependency> <groupid>commons-codec</groupid> <artifactid>commons-codec</artifactid> <version>1.9</version> </dependency> </dependencies> <build> <finalname>testmaven01</finalname> </build> </project>
2) 创建jdbc.properties
driver=com.mysql.jdbc.driver url=jdbc:mysql://localhost:3306/test username=root password= #定义初始连接数 initialsize=1 #定义最大连接数 maxactive=20 #定义最大空闲 maxidle=20 #定义最小空闲 minidle=1 #定义最长等待时间 maxwait=60000
3) log4j.properties
### set log levels ### #log4j.rootlogger = debug , stdout , d , e log4j.rootlogger = debug , stdout , d ### output to the console ### log4j.appender.stdout = org.apache.log4j.consoleappender log4j.appender.stdout.target = system.out log4j.appender.stdout.layout = org.apache.log4j.patternlayout #log4j.appender.stdout.layout.conversionpattern = %d{absolute} %5p %c{ 1 }:%l - %m%n log4j.appender.stdout.layout.conversionpattern = %-d{yyyy-mm-dd hh:mm:ss} [%c]-[%p] %m%n ### output to the log file ### log4j.appender.d = org.apache.log4j.dailyrollingfileappender log4j.appender.d.file = ${springmvc.root}/web-inf/logs/log.log log4j.appender.d.append = true log4j.appender.d.threshold = debug log4j.appender.d.layout = org.apache.log4j.patternlayout log4j.appender.d.layout.conversionpattern = %-d{yyyy-mm-dd hh:mm:ss} [ %t:%r ] - [ %p ] %m%n ### save exception information to separate file ### log4j.appender.d = org.apache.log4j.dailyrollingfileappender log4j.appender.d.file = ${springmvc.root}/web-inf/logs/error.log log4j.appender.d.append = true log4j.appender.d.threshold = error log4j.appender.d.layout = org.apache.log4j.patternlayout log4j.appender.d.layout.conversionpattern = %-d{yyyy-mm-dd hh:mm:ss} [ %t:%r ] - [ %p ] %m%n
4) spring-mvc.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描该包,使springmvc认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.cjt.controller" /> <!--避免ie执行ajax时,返回json出现下载文件 --> <bean id="mappingjacksonhttpmessageconverter" class="org.springframework.http.converter.json.mappingjacksonhttpmessageconverter"> <property name="supportedmediatypes"> <list> <value>text/html;charset=utf-8</value> </list> </property> </bean> <!-- 启动springmvc的注解功能,完成请求和注解pojo的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter"> <property name="messageconverters"> <list> <ref bean="mappingjacksonhttpmessageconverter" /> <!-- json转换器 --> </list> </property> </bean> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.internalresourceviewresolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/web-inf/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartresolver" class="org.springframework.web.multipart.commons.commonsmultipartresolver"> <!-- 默认编码 --> <property name="defaultencoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxuploadsize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxinmemorysize" value="40960" /> </bean> </beans>
5) spring-mybatis.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.cjt.service" /> <!-- 引入配置文件 --> <bean id="propertyconfigurer" class="org.springframework.beans.factory.config.propertyplaceholderconfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <!-- 初始化连接大小 --> <property name="initialsize" value="${initialsize}"></property> <!-- 连接池最大数量 --> <property name="maxactive" value="${maxactive}"></property> <!-- 连接池最大空闲 --> <property name="maxidle" value="${maxidle}"></property> <!-- 连接池最小空闲 --> <property name="minidle" value="${minidle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxwait" value="${maxwait}"></property> </bean> <!-- spring和mybatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"> <property name="datasource" ref="datasource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperlocations" value="classpath:com/cjt/mapping/*.xml"></property> </bean> <!-- dao接口所在包名,spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.mapperscannerconfigurer"> <property name="basepackage" value="com.cjt.dao" /> <property name="sqlsessionfactorybeanname" value="sqlsessionfactory"></property> </bean> <!-- (事务管理)transaction manager, use jtatransactionmanager for global tx --> <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean> </beans>
上面的文件都创建在resources文件夹下
5. 数据库代码自动生成
1)新建表
首先,我们新建表user_t,字段如下:
2)下载包
下载包有:、、
3)运行-自动生成代码
新建一个文件夹,下面包括如下文件
generatorconfig.xml是生成代码的xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <!doctype generatorconfiguration public "-//mybatis.org//dtd mybatis generator configuration 1.0//en" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorconfiguration> <!-- 数据库驱动--> <classpathentry location="mysql-connector-java-5.1.39-bin.jar"/> <context id="db2tables" targetruntime="mybatis3"> <commentgenerator> <property name="suppressdate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressallcomments" value="true"/> </commentgenerator> <!--数据库链接url,用户名、密码 --> <jdbcconnection driverclass="com.mysql.jdbc.driver" connectionurl="jdbc:mysql://localhost:3306/test" userid="root" password=""> </jdbcconnection> <javatyperesolver> <property name="forcebigdecimals" value="false"/> </javatyperesolver> <!-- 生成模型的包名和位置--> <javamodelgenerator targetpackage="com.cjt.domain" targetproject="src"> <property name="enablesubpackages" value="true"/> <property name="trimstrings" value="true"/> </javamodelgenerator> <!-- 生成映射文件的包名和位置--> <sqlmapgenerator targetpackage="com.cjt.mapping" targetproject="src"> <property name="enablesubpackages" value="true"/> </sqlmapgenerator> <!-- 生成dao的包名和位置--> <javaclientgenerator type="xmlmapper" targetpackage="com.cjt.dao" targetproject="src"> <property name="enablesubpackages" value="true"/> </javaclientgenerator> <!-- 要生成的表 tablename是数据库中的表名或视图名 domainobjectname是实体类名--> <table tablename="user_t" domainobjectname="user" enablecountbyexample="false" enableupdatebyexample="false" enabledeletebyexample="false" enableselectbyexample="false" selectbyexamplequeryid="false"></table> </context> </generatorconfiguration>
然后我们用cmd命令进入到新建的文件夹下面,输入:
java -jar mybatis-generator-core-1.3.3.jar -configfile generatorconfig.xml -overwrite
最后,代码生成了。
备注:代码自动生成这里通过命令行的方式,读者也可以通过eclipse的插件方式生成。
6. 代码开始
新建包,如下: (箭头的都是上面自动生成的代码)
iuserservice.java
public interface iuserservice { public user getuserbyid(int id); }
userserviceimpl.java
@service public class userserviceimpl implements iuserservice { @autowired private iuserdao userdao; public userserviceimpl() { system.out.println("userserviceimpl"); } public user getuserbyid(int id) { return userdao.selectbyprimarykey(id); } }
usercontroller.java
@controller @requestmapping("/user") public class usercontroller { public usercontroller() { system.out.println("usercontroller"); } @resource private iuserservice userservice; @requestmapping("/showuser") public string toindex(httpservletrequest request,model model) { system.out.println("usercontroller showuser"); int id = integer.parseint(request.getparameter("id")); user user = userservice.getuserbyid(id); model.addattribute("user", user); return "showuser"; } }
在web-inf下新建一个目录jsp,下面新建文件showuser.jsp
showuser.jsp
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8" import="java.util.*,com.cjt.domain.*"%> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>insert title here</title> </head> <body> ${user.username} </body> </html>
最后,附上web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>archetype created web application</display-name> <!-- spring和mybatis的配置文件 --> <context-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingfilter</filter-name> <filter-class>org.springframework.web.filter.characterencodingfilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <!-- 防止spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.introspectorcleanuplistener</listener-class> </listener> <!-- spring mvc servlet --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
上面,代码生成完成了。
可以下载项目:https://github.com/cjt321/mavenspirngmvcmybatis
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: java实现租车系统
下一篇: java中字符进行全角半角转换示例代码