搭建基于Maven的SSM框架
先展示文件结构图对工程结构有大致了解:
主要为 ssm-parent (用来管理jar包版本)是每个工程的父工程,ssm-common(用来处理底层数据),ssm-manager(对数据库信息进行操作)
Pojo(bean)->mapper(Dao)->Service->Controller
一、创建工程
1、新建maven project-> ssm-parent 作为所有工程的父工程用来集中定义jar 及其版本信息。
2、建立maven project ->ssm-common 用来编写底层数据处理类
3、建立maven project ->ssm-manager 对数据库进行操作
4、在ssm-manager 中创建子工程模块 建立ssm-manager-pojo
5、重复上述 操作 建立 ssm-manager-mapper、ssm-managerservice
6、在ssm-manager中创建 子工程 ssm-manager-controller ,Packaging 选择 war(表示web工程)
此时工程会报错:需要到工程的 src/main/webapp 下创建 /WEB-INF/web.xml
二、导入工程及jar包依赖
1、parent -> 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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>ssm</groupId>
- <artifactId>ssm-parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>pom</packaging>
- <!-- 集中定义依赖版本号 -->
- <properties>
- <junit.version>4.12</junit.version>
- <spring.version>4.1.3.RELEASE</spring.version>
- <mybatis.version>3.2.8</mybatis.version>
- <mybatis.spring.version>1.2.2</mybatis.spring.version>
- <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
- <mysql.version>5.1.32</mysql.version>
- <slf4j.version>1.6.4</slf4j.version>
- <jackson.version>2.4.2</jackson.version>
- <druid.version>1.0.9</druid.version>
- <httpclient.version>4.3.5</httpclient.version>
- <jstl.version>1.2</jstl.version>
- <servlet-api.version>2.5</servlet-api.version>
- <jsp-api.version>2.0</jsp-api.version>
- <joda-time.version>2.5</joda-time.version>
- <commons-lang3.version>3.3.2</commons-lang3.version>
- <commons-io.version>1.3.2</commons-io.version>
- <commons-net.version>3.3</commons-net.version>
- <pagehelper.version>3.4.2-fix</pagehelper.version>
- <jsqlparser.version>0.9.1</jsqlparser.version>
- <commons-fileupload.version>1.3.1</commons-fileupload.version>
- <jedis.version>2.7.2</jedis.version>
- <solrj.version>4.10.3</solrj.version>
- </properties>
- <dependencyManagement>
- <dependencies>
- <!-- 时间操作组件 -->
- <dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
- <version>${joda-time.version}</version>
- </dependency>
- <!-- Apache工具组件 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>${commons-lang3.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-io</artifactId>
- <version>${commons-io.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- <version>${commons-net.version}</version>
- </dependency>
- <!-- Jackson Json处理工具包 -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <!-- httpclient -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>${httpclient.version}</version>
- </dependency>
- <!-- 单元测试 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <!-- 日志处理 -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <!-- Mybatis -->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>${mybatis.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-spring</artifactId>
- <version>${mybatis.spring.version}</version>
- </dependency>
- <dependency>
- <groupId>com.github.miemiedev</groupId>
- <artifactId>mybatis-paginator</artifactId>
- <version>${mybatis.paginator.version}</version>
- </dependency>
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper</artifactId>
- <version>${pagehelper.version}</version>
- </dependency>
- <!-- MySql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.version}</version>
- </dependency>
- <!-- 连接池 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>${druid.version}</version>
- </dependency>
- <!-- Spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</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-jdbc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- JSP相关 -->
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- <version>${jstl.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>${servlet-api.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jsp-api</artifactId>
- <version>${jsp-api.version}</version>
- <scope>provided</scope>
- </dependency>
- <!-- 文件上传组件 -->
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>${commons-fileupload.version}</version>
- </dependency>
- <!-- Redis客户端 -->
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>${jedis.version}</version>
- </dependency>
- <!-- solr客户端 -->
- <dependency>
- <groupId>org.apache.solr</groupId>
- <artifactId>solr-solrj</artifactId>
- <version>${solrj.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <finalName>${project.artifactId}</finalName>
- <plugins>
- <!-- 资源文件拷贝插件 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <version>2.7</version>
- <configuration>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <!-- java编译插件 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.2</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <!-- 配置Tomcat插件 -->
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.2</version>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </project>
2、common -> pom.xml 导入jar 依赖
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-common</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <!-- 时间操作组件 -->
- <dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
- </dependency>
- <!-- Apache工具组件 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- </dependency>
- <!-- Jackson Json处理工具包 -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
- <!-- httpclient -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- </dependency>
- <!-- 单元测试 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <!-- 日志处理 -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- </dependencies>
- </project>
3、ssm-manager -> pom.xml (1)导入工程依赖(2)添加tomcat插件
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>pom</packaging>
- <dependencies>
- <!-- 依赖于common工程 -->
- <dependency>
- <groupId>ssm</groupId>
- <artifactId>ssm-common</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- </dependencies>
- <modules>
- <module>ssm-manager-pojo</module>
- <module>ssm-manager-mapper</module>
- <module>ssm-manager-service</module>
- <module>ssm-manager-controller</module>
- </modules>
- <build>
- <plugins>
- <!-- Tomcat 插件 -->
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <configuration>
- <port>8080</port>
- <path>/</path>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
4、ssm-manger-pojo -> pom.xml (1)导入jar包依赖(2)导入工程依赖
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-pojo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>ssm</groupId>
- <artifactId>ssm-common</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- </dependencies>
- </project>
5、ssm-manger-mapper-> pom.xml (1)导入jar包依赖(2)导入工程依赖
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-mapper</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-pojo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <!-- Mybatis -->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-spring</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.miemiedev</groupId>
- <artifactId>mybatis-paginator</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper</artifactId>
- </dependency>
- <!-- MySql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <!-- 连接池 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- </dependency>
- </dependencies>
- <build>
- <!-- 配置将mybatis的mapper.xml不会复制进web工程,会报错绑定异常找不到mapper.xml -->
- <resources>
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.properties</include>
- <include>**/*.xml</include>
- </includes>
- <filtering>false</filtering>
- </resource>
- </resources>
- </build>
- </project>
5、ssm-manger-service-> pom.xml (1)导入jar包依赖(2)导入工程依赖
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-service</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-mapper</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <!-- Spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- </dependency>
- </dependencies>
- </project>
6、ssm-manger-controller-> pom.xml (1)导入jar包依赖(2)导入工程依赖
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-controller</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>war</packaging>
- <dependencies>
- <dependency>
- <groupId>ssm</groupId>
- <artifactId>ssm-manager-service</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <!-- JSP相关 -->
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jsp-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <!-- 文件上传组件 -->
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- </dependency>
- <!-- junit依赖 -->
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <version>1.3</version>
- </dependency>
- </dependencies>
- </project>
三、SSM整合(全部在controller层)
1、编写propertiees 文件
db.properties
- 1 jdbc.url = jdbc:mysql\://localhost\:3306/test?characterEncoding\=utf8
- 2 jdbc.username = root
- 3 jdbc.password = 000000
- 4 jdbc.driver =com.mysql.jdbc.Driver
log4j.properties
- 1 # Global logging configuration
- 2 log4j.rootLogger=ERROR, stdout
- 3 # MyBatis logging configuration...
- 4 log4j.logger.org.mybatis.example.BlogMapper=TRACE
- 5 # Console output...
- 6 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- 7 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- 8 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2、编写mybatis-conf.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- </configuration>
3、编写springMVC.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:mvc="http://www.springframework.org/schema/mvc"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:util="http://www.springframework.org/schema/util"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
- <!-- 扫描包 -->
- <context:component-scan base-package="com.controller"></context:component-scan>
- <!-- 配置-->
- <mvc:annotation-driven></mvc:annotation-driven>
- <!-- 静态资源映射 -->
- <mvc:resources location="/WEB-INF/css" mapping="/css/**"/>
- <mvc:resources location="/WEB-INF/js" mapping="/js/**"/>
- <!--<mvc:resources location="/WEB-INF/" mapping="/css/**"/>
- --> <!-- <mvc:default-servlet-handler/> -->
- <!-- 视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp"></property>
- <property name="suffix" value=".jsp"></property>
- </bean>
- </beans>
4、编写spring配置文件
applicationContext-mapper.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:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
- xmlns:util="http://www.springframework.org/schema/util"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
- http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
- <!-- 数据库连接池 -->
- <!-- 加载配置文件 -->
- <context:property-placeholder location="classpath:/resource/db.properties"/>
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
- <property name="url" value="${jdbc.url}"></property>
- <property name="username" value="${jdbc.username}"></property>
- <property name="password" value="${jdbc.password}"></property>
- <property name="driverClassName" value="${jdbc.driver}"></property>
- <property name="maxActive" value="10"></property>
- <property name="minIdle" value="5"></property>
- </bean>
- <!-- 让spring管理sqlsessionfactory 使用 mybatis 和 spring 整合包 -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <!-- 数据库连接池 -->
- <property name="dataSource" ref="dataSource"></property>
- <!-- 加载mybatis 的全局属性 -->
- <property name="configLocation" value="classpath:mybatis/mybatis-conf.xml"></property>
- </bean>
- <!-- 配置扫描包,加载mapper代理对象 mybatis与spring整合包在spring配置文件中扫描mapper接口 -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.mapper"></property>
- </bean>
- </beans>
applicationContext-service.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:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
- <!-- 扫描包 -->
- <context:component-scan base-package="com.service"></context:component-scan>
- </beans>
applicationContext-trans.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:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">
- <!-- 配置事务管理器 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <!-- 数据源 -->
- <property name="dataSource" ref="dataSource"></property>
- </bean>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <!-- 传播行为 -->
- <tx:method name="save*" propagation="REQUIRED"/>
- <tx:method name="insert*" propagation="REQUIRED"/>
- <tx:method name="add*" propagation="REQUIRED"/>
- <tx:method name="create*" propagation="REQUIRED"/>
- <tx:method name="delete*" propagation="REQUIRED"/>
- <tx:method name="update*" propagation="REQUIRED"/>
- <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
- <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
- <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
- </tx:attributes>
- </tx:advice>
- <!-- 切面 -->
- <aop:config>
- <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.service.*.*(..))"/>
- </aop:config>
- </beans>
web.xml中注册spring 、springMVC (web.xml的位置:controller>src>main>webapp>WEB-INF>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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id="WebApp_ID" version="2.5">
- <display-name>ssm-web</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <!-- 加载spring容器 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/applicationContext*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 解决post乱码 -->
- <filter>
- <filter-name>CharacterEncodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>utf-8</param-value>
- </init-param>
- <!-- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param> -->
- </filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- springmvc的前端控制器 -->
- <servlet>
- <servlet-name>DispatcherServlet</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springMVC.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>DispatcherServlet</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </web-app>
四、创建查询
1、ssm-common 编写 SsmResulat.java 用来处理查询结果转json发送
- package com.common;
- import java.util.List;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- public class SsmResult {
- // 定义jackson对象
- private static final ObjectMapper MAPPER = new ObjectMapper();
- // 响应业务状态
- private Integer status;
- // 响应消息
- private String msg;
- // 响应中的数据
- private Object data;
- public static SsmResult build(Integer status, String msg, Object data) {
- return new SsmResult(status, msg, data);
- }
- public static SsmResult ok(Object data) {
- return new SsmResult(data);
- }
- public static SsmResult ok() {
- return new SsmResult(null);
- }
- public SsmResult() {
- }
- public static SsmResult build(Integer status, String msg) {
- return new SsmResult(status, msg, null);
- }
- public SsmResult(Integer status, String msg, Object data) {
- this.status = status;
- this.msg = msg;
- this.data = data;
- }
- public SsmResult(Object data) {
- this.status = 200;
- this.msg = "OK";
- this.data = data;
- }
- // public Boolean isOK() {
- // return this.status == 200;
- // }
- public Integer getStatus() {
- return status;
- }
- public void setStatus(Integer status) {
- this.status = status;
- }
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public Object getData() {
- return data;
- }
- public void setData(Object data) {
- this.data = data;
- }
- /**
- * 将json结果集转化为SsmResult对象
- *
- * @param jsonData json数据
- * @param clazz SsmResult中的object类型
- * @return
- */
- public static SsmResult formatToPojo(String jsonData, Class<?> clazz) {
- try {
- if (clazz == null) {
- return MAPPER.readValue(jsonData, SsmResult.class);
- }
- JsonNode jsonNode = MAPPER.readTree(jsonData);
- JsonNode data = jsonNode.get("data");
- Object obj = null;
- if (clazz != null) {
- if (data.isObject()) {
- obj = MAPPER.readValue(data.traverse(), clazz);
- } else if (data.isTextual()) {
- obj = MAPPER.readValue(data.asText(), clazz);
- }
- }
- return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
- } catch (Exception e) {
- return null;
- }
- }
- /**
- * 没有object对象的转化
- *
- * @param json
- * @return
- */
- public static SsmResult format(String json) {
- try {
- return MAPPER.readValue(json, SsmResult.class);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * Object是集合转化
- *
- * @param jsonData json数据
- * @param clazz 集合中的类型
- * @return
- */
- public static SsmResult formatToList(String jsonData, Class<?> clazz) {
- try {
- JsonNode jsonNode = MAPPER.readTree(jsonData);
- JsonNode data = jsonNode.get("data");
- Object obj = null;
- if (data.isArray() && data.size() > 0) {
- obj = MAPPER.readValue(data.traverse(),
- MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
- }
- return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
- } catch (Exception e) {
- return null;
- }
- }
- }
2、用逆向生成mybatis的代码:
mbg.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>
- <!--
- targetRuntime="MyBatis3Simple":生成简单版的CRUD
- MyBatis3:豪华版
- -->
- <context id="DB2Tables" targetRuntime="MyBatis3">
- <commentGenerator>
- <!-- 是否去除自动生成的注释 true:是 : false:否 -->
- <property name="suppressAllComments" value="true" />
- </commentGenerator>
- <!-- jdbcConnection:指定如何连接到目标数据库 -->
- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
- connectionURL="jdbc:mysql://localhost:3306/test?allowMultiQueries=true"
- userId="root"
- password="000000">
- </jdbcConnection>
- <!-- -->
- <javaTypeResolver >
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- javaModelGenerator:指定javaBean的生成策略
- targetPackage="test.model":目标包名
- targetProject="\MBGTestProject\src":目标工程
- -->
- <javaModelGenerator targetPackage="com.pojo"
- targetProject=".\src">
- <property name="enableSubPackages" value="false" />
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- sqlMapGenerator:sql映射生成策略: -->
- <sqlMapGenerator targetPackage="com.mapper"
- targetProject=".\src">
- <property name="enableSubPackages" value="false" />
- </sqlMapGenerator>
- <!-- javaClientGenerator:指定mapper接口所在的位置 -->
- <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper"
- targetProject=".\src">
- <property name="enableSubPackages" value="false" />
- </javaClientGenerator>
- <!-- 指定要逆向分析哪些表:根据表要创建javaBean --><!-- tableName取 % 创建 数据库下所有-->
- <table schema="" tableName="account"></table>
- </context>
- </generatorConfiguration>
TestMbg.java
- @Test
- public void testMbg() throws Exception {
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- File configFile = new File("mbg.xml");
- ConfigurationParser cp = new ConfigurationParser(warnings);
- Configuration config = cp.parseConfiguration(configFile);
- DefaultShellCallback callback = new DefaultShellCallback(overwrite);
- MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
- callback, warnings);
- myBatisGenerator.generate(null);
- }
生成目录结构如下:
3、将逆向生成的代码复制到 ssm-manager-pojo 、ssm-manager-mapper
4、创建service层java类,并做注解加载进spring容器
AccountService.java
- package com.service;
- import java.util.List;
- import com.pojo.Account;
- public interface AccountService {
- public Account getAccount (int id) ;
- public List<Account> getAccountAll () ;
- }
AccountServiceImpl.java
- package com.service;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.mapper.AccountMapper;
- import com.pojo.Account;
- import com.pojo.AccountExample;
- import com.pojo.AccountExample.Criteria;
- @Service
- public class AccountServiceImpl implements AccountService{
- @Autowired
- private AccountMapper accountMapper;
- @Override
- public List<Account> getAccountAll() {
- AccountExample accountExample = new AccountExample();
- Criteria criteria = accountExample.createCriteria();
- criteria.andIdIsNotNull();
- List<Account> accountList = accountMapper.selectByExample(accountExample);
- for (Account account : accountList) {
- account.toString();
- }
- return accountList;
- }
- @Override
- public Account getAccount(int id) {
- return null;
- }
- }
5、编写controller层拦截请求
- package com.controller;
- import static org.hamcrest.CoreMatchers.nullValue;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import com.alibaba.druid.support.json.JSONParser;
- import com.alibaba.druid.support.json.JSONUtils;
- import com.common.SsmResult;
- import com.pojo.Account;
- import com.service.AccountService;
- import com.service.AccountServiceImpl;
- @Controller
- public class AccountContraller {
- @Autowired
- private AccountService accountServiceImpl;
- @RequestMapping("getAccount")
- @ResponseBody
- public SsmResult getAccount() {
- List<Account> list = accountServiceImpl.getAccountAll();
- return SsmResult.ok(list);
- }
- }
6、编写页面发送请求:
index.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!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>hello</title>
- </head>
- <body>
- maven ssm project<br>
- <a href="getAccount">Account </a>
- </body>
- </html>
五、运行工程
1、安装maven工程
2、运行工程 ssm-manager -> run as -> Mavenbuild (clean tomcat7:run)
3、 访问页面: http://localhost:8080/
点击链接:
搭建基于Maven的SSM框架的更多相关文章
- 基于maven的ssm框架整合
基于maven的ssm框架整合 第一步:通过maven建立一个web项目. 第二步:pom文件导入jar包 (1 ...
- 基于Maven的SSM框架搭建
Maven + Spring + Spring MVC + Mybatis + MySQL整合SSM框架 1.数据库准备 本文主要想实现SSM框架的搭建,并基于该框架实现简单的登录功能,那么先新建一张 ...
- IDEA下基于MAVEN的SSM框架整合
源码可以以上传github https://github.com/ingxx/ssm_first 最近把用IDEA把SSM框架整合一遍遇到了不少坑,在这里写出来 这里maven我使用的是自己下载的3. ...
- 基于 maven 的ssm 框架搭建
1.新建一个 maven 工程, war 包 2.引入 pom 文件(springmvc+spring+mybatis) 3.引入配置文件 4.引入页面,编写 contorller 层测试 5.编写查 ...
- 使用idea15搭建基于maven的springmvc-mybatis框架
我这边使用的是intellij idea15 1.new maven webapp project 2.添加groupId和artifactId 3.选择maven路径和maven仓库路径 最后确定之 ...
- 基于Maven的ssm(spring+springMvc+Mybatis)框架搭建
前言 本demo是在idea下搭建的maven项目,数据库使用Mysql,jdk版本是1.8.0_171,ideal:2017.3.5 一.新建项目 1.file->new->porjec ...
- 用Maven整合SSM框架
前述 Maven 是专门用于构建和管理Java相关项目的工具,利用 Maven 的主要目的是统一维护 jar 包.关于 Maven 的安装在这篇里面就不说了. SSM(Spring+SpringMVC ...
- 基于springboot的SSM框架实现返回easyui-tree所需要数据
1.easyui-tree easui-tree目所需要的数据结构类型如下: [ { "children": [ { "children": [], " ...
- IDEA+Maven 整合SSM框架实现简单的增删改查(新手入门,傻瓜操作)
原博客地址:https://blog.csdn.net/khxu666/article/details/79851070 选用SSM框架的原因在目前的企业级Java应用中,Spring框架是必须的.S ...
随机推荐
- 《C++专项练习》 — (2)
序 C++基础专项练习二,,,水平依然不到家! 错题分析与总结 1 . 有如下模板定义: template <class T> T fun(T x,T y){ return x*x+y*y ...
- PAT 1027. 打印沙漏
打印沙漏 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状" ...
- SSRS ( .rdl文件)如何动态的设置导出Excel文件中的工作表标签名
要实现以上效果,则在Tablix属性里设置 参考:https://dotblogs.com.tw/ricochen/archive/2012/06/14/72798.aspx
- Java基础学习总结(94)——Java线程再学习
Java线程有哪些不太为人所知的技巧与用法? 萝卜白菜各有所爱.像我就喜欢Java.学无止境,这也是我喜欢它的一个原因.日常工作中你所用到的工具,通常都有些你从来没有了解过的东西,比方说某个方法或者是 ...
- nginx配置文件解答
nginx配置文件详解: server { listen 80; servername www.nginx1.com location / { root ...
- bzoj4568 [Scoi2016]幸运数字 线性基+树链剖分
A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个 幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征.一些旅行者希望游览 A ...
- Flex嵌入HTML页面
这段时间一直在苦心研究Flex,今天突然想,我们平时都是把swf放到网页中,怎么才能把网页嵌入到Flex中呢?我查了一些资料,然后经过自己的不懈努力,终于搞定. 为了方便,写了个嵌入HTML页面的代理 ...
- linux修改PS1,自定义命令提示符样式
目录 参数说明 修改颜色 linux默认的命令提示符是这样的: 白色的,如果当前执行的命令很多的话,一整块屏幕上全是一堆输出信息,上一条命令在哪?我刚输入的命令在哪?找的头晕.有没有办法可以修改命令提 ...
- mybatis几种开发方式
mybatis是比较轻巧的半自动化的CRM框架,它有几种开发方式,现今张列于此: 一.注解方式:在接口方法上面写SQL语句,有点类似springdataJPA 的query sql 语句 范例 @se ...
- datatable使用介绍
Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 1.支持分页:前台分页和后台分页 前台分页:后台一次把数据传过来,交给前端渲染.缺点 ...