新手一枚,希望有错误的地方多多指教。
工程所用到网址——Maven Repository、MyBatis Genetator、Bootstrap
配置文件
pop.xml——导入所要的jar包(Spring、SpringMVC、MyBatis.....)
——Spring MVC:spring webmvc、spring jdbc、spring aspect、
——MyBatis:mybatis、mybatis spring、c3p0、mysql、
——其他:jstl、servlet-api、junit、Mybatis Generator Core
dispatcherServlet-servlet.xml对应SprinfMVC配置文件
applicationContext.xml对应Spring配置文件
mybatis-config.xml
web.xml
mbg.xml逆向工程生成文件
dbconfig.properties文件封装连接数据库的文件
代码详解
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>com.pers</groupId> 6 <artifactId>ssm-crud</artifactId> 7 <version>0.0.1-SNAPSHOT</version> 8 <packaging>war</packaging> 9 10 11 <!-- 引入项目依赖的jar包--> 12 <dependencies> 13 14 <!-- 引入pageHelper分页插件 --> 15 <dependency> 16 <groupId>com.github.pagehelper</groupId> 17 <artifactId>pagehelper</artifactId> 18 <version>5.0.0</version> 19 </dependency> 20 21 <!-- MBG --> 22 <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> 23 <dependency> 24 <groupId>org.mybatis.generator</groupId> 25 <artifactId>mybatis-generator-core</artifactId> 26 <version>1.3.5</version> 27 </dependency> 28 29 30 <!--Spring MVC、Spring--> 31 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> 32 <dependency> 33 <groupId>org.springframework</groupId> 34 <artifactId>spring-webmvc</artifactId> 35 <version>4.3.7.RELEASE</version> 36 </dependency> 37 38 <!-- Spring JDBC --> 39 <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 40 <dependency> 41 <groupId>org.springframework</groupId> 42 <artifactId>spring-jdbc</artifactId> 43 <version>4.3.7.RELEASE</version> 44 </dependency> 45 46 <!-- Spring-test --> 47 <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-test</artifactId> 51 <version>4.3.17.RELEASE</version> 52 <scope>test</scope> 53 </dependency> 54 55 56 <!-- Spring面向切面 --> 57 <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-aspects</artifactId> 61 <version>4.3.7.RELEASE</version> 62 </dependency> 63 64 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> 65 <dependency> 66 <groupId>org.mybatis</groupId> 67 <artifactId>mybatis</artifactId> 68 <version>3.4.2</version> 69 </dependency> 70 71 <!-- MyBatis整合的Spring的适配包 --> 72 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> 73 <dependency> 74 <groupId>org.mybatis</groupId> 75 <artifactId>mybatis-spring</artifactId> 76 <version>1.3.2</version> 77 </dependency> 78 79 <!-- 数据库连接池、驱动 --> 80 <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --> 81 <dependency> 82 <groupId>c3p0</groupId> 83 <artifactId>c3p0</artifactId> 84 <version>0.9.1.2</version> 85 </dependency> 86 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 87 <dependency> 88 <groupId>mysql</groupId> 89 <artifactId>mysql-connector-java</artifactId> 90 <version>8.0.11</version> 91 </dependency> 92 93 <!-- https://mvnrepository.com/artifact/jstl/jstl --> 94 <dependency> 95 <groupId>jstl</groupId> 96 <artifactId>jstl</artifactId> 97 <version>1.2</version> 98 </dependency> 99 <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api --> 100 <!-- <dependency> 101 <groupId>javax.servlet</groupId> 102 <artifactId>servlet-api</artifactId> 103 <version>2.5</version> 104 <scope>provided</scope> 105 </dependency> --> 106 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 107 <dependency> 108 <groupId>javax.servlet</groupId> 109 <artifactId>javax.servlet-api</artifactId> 110 <version>3.0.1</version> 111 <scope>provided</scope> 112 </dependency> 113 114 <!-- https://mvnrepository.com/artifact/junit/junit --> 115 <dependency> 116 <groupId>junit</groupId> 117 <artifactId>junit</artifactId> 118 <version>4.12</version> 119 <scope>test</scope> 120 </dependency> 121 </dependencies> 122 </project>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 id="WebApp_ID" version="2.5"> 6 7 <!-- 启动Spring的容器 --> 8 <!-- needed for ContextLoaderListener --> 9 <context-param> 10 <param-name>contextConfigLocation</param-name> 11 <param-value>classpath*:/applicationContext.xml</param-value> 12 </context-param> 13 14 <!-- Bootstraps the root web application context before servlet initialization --> 15 <listener> 16 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 17 </listener> 18 19 <!-- SpringMVC的前端控制器 ,拦截所有请求--> 20 <!-- The front controller of this Spring Web application, responsible for handling all application requests --> 21 <servlet> 22 <servlet-name>dispatcherServlet</servlet-name> 23 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 24 <!-- <init-param> 25 <param-name>contextConfigLocation</param-name> 26 <param-value>classpath:applicationContext.xml</param-value> 27 </init-param> --> 28 <load-on-startup>1</load-on-startup> 29 </servlet> 30 31 <!-- Map all requests to the DispatcherServlet for handling --> 32 <servlet-mapping> 33 <servlet-name>dispatcherServlet</servlet-name> 34 <!-- 默认匹配所有的请求 --> 35 <!-- 我们默认配置这个是为了让我们的Spring框架接管Servelt,实现Spring控制所有站点请求 --> 36 <url-pattern>/</url-pattern> 37 </servlet-mapping> 38 39 <!-- 字节编码过滤器 ,一定要放在所有过滤器之前--> 40 <filter> 41 <filter-name>CharacterEncodingFilter</filter-name> 42 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 43 <init-param> 44 <param-name>encoding</param-name> 45 <param-value>utf-8</param-value> 46 </init-param> 47 <init-param> 48 <param-name>forceRequestEncoding</param-name> 49 <param-value>true</param-value> 50 </init-param> 51 <init-param> 52 <param-name>forceResponseEncoding</param-name> 53 <param-value>true</param-value> 54 </init-param> 55 </filter> 56 <filter-mapping> 57 <filter-name>CharacterEncodingFilter</filter-name> 58 <url-pattern>/*</url-pattern> 59 </filter-mapping> 60 61 <!-- 使用Rest风格的URL 将页面普通的post请求转换为指定的delete或者put请求--> 62 <filter> 63 <filter-name>HiddenHttpMethodFilter</filter-name> 64 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 65 </filter> 66 <filter-mapping> 67 <filter-name>HiddenHttpMethodFilter</filter-name> 68 <url-pattern>/*</url-pattern> 69 </filter-mapping> 70 </web-app>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> 9 10 11 <!-- SpringMVC的配置文件,包含网站的跳转逻辑的控制、配置 --> 12 <context:component-scan base-package="包名" use-default-filters="true"> 13 <!-- 只扫描控制器 --> 14 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 15 </context:component-scan> 16 17 <!-- 配置视图解析器,方便页面返回 --> 18 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 19 <!--存放页面的文件--> 20 <property name="prefix" value="/WEB-INF/view/"></property> 21 <property name="suffix" value=".jsp"></property> 22 </bean> 23 24 <!-- 两个标准配置 --> 25 <!-- 将SpringMVC不能处理的请求交给tomcat --> 26 27 <mvc:default-servlet-handler/> 28 <!-- 能支持SpringMVC更高级的一些功能,JSR303校验,快捷的ajax....映射动态请求 --> 29 <mvc:annotation-driven/> 30 31 </beans>
1 jdbc.jdbcUrl = jdbc:mysql://localhost:3306/数据库名 2 jdbc.driverClass = com.mysql.jdbc.Driver 3 jdbc.user = 数据库用户名 4 jdbc.password = 数据库密码
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <settings> 7 <setting name="mapUnderscoreToCamelCase" value="true"/> 8 </settings> 9 <typeAliases> <!-- 类型别名 --> 10 <package name="实体类的包名"/> 11 </typeAliases> 12 13 <plugins> 14 <plugin interceptor="com.github.pagehelper.PageInterceptor"> 15 <!-- 使用下面的方式配置参数,后面会有所有的参数介绍,分页插件 --> 16 <!-- <property name="param1" value="value1" /> --> 17 <!-- 分页参数合理化,防止错误的页码数 --> 18 <!-- <property name="reasonable" value="true"/> --> 19 <!-- 設置數據庫類型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種數據庫--> 20 <!-- <property name="dialect" value="mysql"/> --> 21 </plugin> 22 </plugins> 23 </configuration>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 9 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> 11 12 <context:component-scan base-package="com.pers"> 13 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 14 </context:component-scan> 15 16 <!-- Spring的配置文件,包含网站的跳转逻辑的控制、配置 --> 17 <!-- 数据源、事物控制、xxx --> 18 <context:property-placeholder location="classpath:dbconfig.properties"/> 19 20 <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 21 <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> 22 <property name="driverClass" value="${jdbc.driverClass}"></property> 23 <property name="user" value="${jdbc.user}"></property> 24 <property name="password" value="${jdbc.password}"></property> 25 </bean> 26 27 <!-- 配置和MyBatis的整合 --> 28 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 29 <!-- 指定MyBatis的全局配置文件的位置 --> 30 <property name="configLocation" value="classpath:mybatis.config.xml"></property> 31 <property name="dataSource" ref="pooledDataSource"></property> 32 <!-- 指定MyBatis,mapper文件的位置 --> 33 <property name="mapperLocations" value="classpath:mapper/*.xml"></property> 34 </bean> 35 36 <!-- 配置扫描器,将MyBatis接口的实现加入到ico容器中 --> 37 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 38 <!-- 扫描所有dao接口的实现,加入到ico容器中 --> 39 <property name="basePackage" value="存放与数据库打交道的包名"></property> 40 </bean> 41 42 <!-- 配置一个可以执行批量sqlSession --> 43 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 44 <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> 45 <constructor-arg name="executorType" value="BATCH"></constructor-arg> 46 </bean> 47 48 <!-- 事务控制的配置 --> 49 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 50 <!-- 控制数据源 --> 51 <property name="dataSource" ref="pooledDataSource"></property> 52 </bean> 53 54 <!-- 开启基于注释的事物,使用xml配置形式的事物(必要主要的是使用配置式) --> 55 <aop:config> 56 <!-- 切入点表达式 --> 57 <aop:pointcut expression="execution(* com.pers.crud.service..*(..))" id="txPoint"/> 58 <!-- 配置事务增强 --> 59 <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/> 60 </aop:config> 61 62 <!-- 配置事务增强,事物如何切入 --> 63 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 64 <tx:attributes> 65 <!-- 所有方法都是事物方法 --> 66 <tx:method name="*"/> 67 <!-- 以get开始的所有方法 --> 68 <tx:method name="get*" read-only="true"/> 69 </tx:attributes> 70 </tx:advice> 71 </beans>