• IDEA 整合SSM入门


    IDEA整合SSM,有很多坑,这里记录一下,新建项目首先采用的普通Java Enterprise项目,后面使用Maven项目。

    创建SSM项目前期搭建

    (1)先创建一个Java Enterprise项目,一般是选择Spring来创建,并且会自动导包,这里使用另外一种方式来实现。

    (2)创建完成后需要设置,进入Project Structure界面,跟其他IDE可以直接使用不同,IDEA的还需要设置source目录和resource目录,代表代码和资源文件存放的地方。如图所示在src目录下建立main目录,main目录下建立java和resource目录,分别存放量产代码和配置文件,test文件夹也可以设置,这里省略了。上面Mark as标签可以看出来,可以分别设置量产代码文件夹(Sources)、测试代码文件夹(Tests),量产资源文件夹(Resources)、测试资源文件夹(Test Resources)和排它文件夹(不被使用)。

    (3)设置Tomcat部署路径,这里选择部署在Tomcat的Webapp下。

    (4)设置Tomcat服务器,选择菜单Edit Configurations进入设置界面,可以将After lauch勾选掉,另外更新和鼠标离焦选项选择Update classes and resources,这样就支持热部署,即无需重启tomcat也可以支持更新。

    另外切换到Deployment,将Application Context修改,这样访问资源是通过如下web虚拟路径名可以访问到部署到tomcat后的真正资源。

    以上就完成前期的基本配置,后面需要配置SpringMVC、Spring和MyBatis的核心配置文件了。

    SSM项目核心文件配置

    SpringMVC配置

    (1)web.xml中配置启动前端控制器,需要读取SpringMVC核心配置文件。注意spring-mvc.xml是放在前面的resource文件夹下。

     1 <!--配置SpringMVC前端控制器-->
     2     <servlet>
     3         <servlet-name>springmvc</servlet-name>
     4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     5         <init-param>
     6             <param-name>contextConfigLocation</param-name>
     7             <param-value>classpath:spring-mvc.xml</param-value>
     8         </init-param>
     9         <!--设置启动tomcat就启动-->
    10         <load-on-startup>1</load-on-startup>
    11     </servlet>
    12     <servlet-mapping>
    13         <servlet-name>springmvc</servlet-name>
    14         <url-pattern>*.action</url-pattern>
    15     </servlet-mapping>
    16     
    17     <!--配置全站式乱码解决,只针对post有效-->
    18     <filter>
    19         <filter-name>filtercoding</filter-name>
    20         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    21         <init-param>
    22             <param-name>encoding</param-name>
    23             <param-value>utf-8</param-value>
    24         </init-param>
    25     </filter>
    26     <filter-mapping>
    27         <filter-name>filtercoding</filter-name>
    28         <url-pattern>*.action</url-pattern>
    29     </filter-mapping>

    (2)配置SpringMVC核心配置文件,这里需要配置前端控制器、需要配置包扫描、mvc注解驱动和视图解析器,通过采坑后发现,后面配置Spring也需要扫描包,如果都配置可能会导致事务失效,这里因为没有配置事务因此将不需要事务的包在这里扫描。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3 
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     6        xmlns:util="http://www.springframework.org/schema/util"
     7        xmlns:aop="http://www.springframework.org/schema/aop"
     8        xmlns:tx="http://www.springframework.org/schema/tx"
     9        xmlns:mvc="http://www.springframework.org/schema/mvc"
    10        xsi:schemaLocation=
    11                "http://www.springframework.org/schema/beans
    12                http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    13                http://www.springframework.org/schema/context
    14                http://www.springframework.org/schema/context/spring-context-4.3.xsd
    15                http://www.springframework.org/schema/util
    16                http://www.springframework.org/schema/util/spring-util-4.3.xsd
    17                http://www.springframework.org/schema/aop
    18                http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    19                http://www.springframework.org/schema/tx
    20                http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
    21                http://www.springframework.org/schema/mvc
    22                http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"
    23      >
    24 
    25      <!--开启包扫描-->
    26      <context:component-scan base-package="com.boe.dao"></context:component-scan>
    27      <!--注释掉,sevice层上的事务才能生效,将service层的扫描放到spring配置文件中扫描,赋予事务-->
    28      <!--<context:component-scan base-package="com.boe.service"></context:component-scan>-->
    29      <context:component-scan base-package="com.boe.web"></context:component-scan>
    30      <!--开启mvc注解-->
    31      <mvc:annotation-driven></mvc:annotation-driven>
    32      <!--配置视图解析器-->
    33      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    34           <property name="suffix" value=".jsp"></property>
    35           <property name="prefix" value="/WEB-INF/jsp/"></property>
    36      </bean>
    37 
    38 </beans>

    Spring配置

    (1)web.xml中配置,使用listener来读取applicationContext.xml配置文件,启动Spring容器。

    1     <!--配置监听器,spring在web初始化时自动加载-->
    2     <context-param>
    3         <param-name>contextConfigLocation</param-name>
    4         <param-value>classpath:applicationContext.xml</param-value>
    5     </context-param>
    6     <listener>
    7         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    8     </listener>

    (2)spring核心配置文件中,需要配置包扫描、DI注入、事务等。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:context="http://www.springframework.org/schema/context"
     4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5        xmlns:util="http://www.springframework.org/schema/util"
     6        xmlns:aop="http://www.springframework.org/schema/aop"
     7        xmlns:tx="http://www.springframework.org/schema/tx"
     8        xmlns:mvc="http://www.springframework.org/schema/cache"
     9        xsi:schemaLocation=
    10                "http://www.springframework.org/schema/beans
    11                http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    12                http://www.springframework.org/schema/context
    13                http://www.springframework.org/schema/context/spring-context-4.3.xsd
    14                http://www.springframework.org/schema/util
    15                http://www.springframework.org/schema/util/spring-util-4.3.xsd
    16                http://www.springframework.org/schema/aop
    17                http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    18                http://www.springframework.org/schema/tx
    19                http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
    20                http://www.springframework.org/schema/mvc
    21                http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"
    22 >
    23 
    24     <!-- 开启包扫描 -->
    25     <!--<context:component-scan base-package="com.boe.web"/>-->
    26     <context:component-scan base-package="com.boe.service"/>
    27     <!--<context:component-scan base-package="com.boe.dao"/>-->
    28     <!--DI依赖注入-->
    29     <context:annotation-config></context:annotation-config>
    30     <!--引入外部数据库连接配置文件 -->
    31     <context:property-placeholder location="classpath:connConf/db.properties"/>
    32     <!--配置数据源 -->
    33     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    34         <property name="driverClass" value="${driverClass}"/>
    35         <property name="jdbcUrl" value="${jdbcUrl}"/>
    36         <property name="user" value="${user}"/>
    37         <property name="password" value="${password}"/>
    38     </bean>
    39 
    40     <!--配置事务管理器-->
    41     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    42         <property name="dataSource" ref="dataSource"></property>
    43     </bean>
    44     <!--开启事务注解-->
    45     <tx:annotation-driven></tx:annotation-driven>
    46 
    47 </beans>

    Mybatis配置

    (1)mybatis的配置需要准备核心配置文件sqlMapConfig和mapper映射文件(这里准备了一个UserMapper.xml)。

    sqlMapConfig.xml

     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 
     7     <!--配置mapper映射文件-->
     8     <!--<mappers>
     9         <mapper resource="UserMapper.xml"></mapper>
    10     </mappers>-->
    11 
    12 </configuration>
    View Code

    UserMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 
     6 <mapper namespace="com.boe.dao.UserMapper">
     7 
     8     <!--查询user-->
     9     <select id="findAll" resultType="com.boe.domain.User">
    10         SELECT * FROM user;
    11     </select>
    12 
    13 
    14     <!--插入一个user-->
    15     <insert id="addUser" parameterType="com.boe.domain.User">
    16         INSERT INTO user
    17         <trim prefix="(" suffix=")" suffixOverrides=",">
    18             id,
    19             <if test="name!=null">name,</if>
    20             <if test="age!=0">age,</if>
    21         </trim>
    22         VALUES
    23         <trim prefix="(" suffix=")" suffixOverrides=",">
    24             null,
    25             <if test="name!=null">#{name},</if>
    26             <if test="age!=0">#{age},</if>
    27         </trim>
    28     </insert>
    29 
    30 </mapper>

    (2)在spring核心配置文件中添加跟Mybatis相关的配置,完成整合。需要配置Sqlsessionfactorybean,里面配置了数据源、mybatis核心配置文件和mapper映射文件(原来在mybatis核心配置文件中完成数据源和mapper映射文件的配置),最后配置MapperScannerConfigurer,实现对mapper映射器(接口)的扫描(原本需要使用SqlSession的getMapper方法获得)。

     1 <!--整合mybatis,配置sqlsession-->
     2     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     3         <!--引入数据源-->
     4         <property name="dataSource" ref="dataSource"></property>
     5         <!--引入mybatis核心配置文件-->
     6         <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
     7         <!--引入映射文件-->
     8         <property name="mapperLocations" value="classpath:Mapper/UserMapper.xml"></property>
     9     </bean>
    10 
    11     <!--配置包mapper扫描,里面放置接口-->
    12     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    13         <property name="basePackage" value="com.boe.dao"></property>
    14     </bean>

    以上就完成了SSM核心文件的配置,跟数据库连接相关的属性文件这里略去不展示,最后配置完成后的项目结构如下图。

    启动SSM测试

    配置完成后还没有完成,需要启动tomcat服务器查看是否正常启动,这里就可能开始踩坑了。

    (1)java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

    启动后发现部署提示OK,但是继续查看Tomcat Localhost Log发现执行报错,提示说找不到这个类,但是实际上配置web.xml中是可以找到这个类,所以说明包是有的(spring-web相关jar包),后面查看发现部署到tomcat后没有lib目录,因此报错。

    解决办法最简单粗暴的方式是重新添加Artifacts,先将当前的删除。

    然后重新从Module中添加,发现Output Layout里有lib目录,另外tomcat可能需要重新配置一下Deployment,将刚开新的artifacts重新导入一下,重新启动发现不再报错。

     

    (2)无法读取到配置文件信息,如spring-mvc.xml等,这种情况一般就是没有配置sources和resources目录导致,按照上面的方法配置即可,刚开始也采坑多次,才发现IDEA需要配置这个。

    最后没问题做测试,可以发送请求正常连接数据库,并返回json数据。

    Maven整合

    上面就是普通项目的SSM整合,接下来使用maven来整合,其实整体来说和普通整合区别不大,就是jar包不需要手动导入了,通过pom文件来实现,另外可以使用maven的tomcat插件,无需部署。其他springmvc、spring和mybatis的配置文件基本不用改动。

    pom文件内容如下,其他均参考上面配置。

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 
      3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      5   <modelVersion>4.0.0</modelVersion>
      6 
      7   <groupId>com.boe</groupId>
      8   <artifactId>mavenssm</artifactId>
      9   <version>0.0.1-SNAPSHOT</version>
     10   <packaging>war</packaging>
     11 
     12   <name>mavenssm Maven Webapp</name>
     13   <url>http://www.example.com</url>
     14 
     15   <properties>
     16     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     17     <maven.compiler.source>1.7</maven.compiler.source>
     18     <maven.compiler.target>1.7</maven.compiler.target>
     19   </properties>
     20 
     21   <dependencies>
     22     <dependency>
     23       <groupId>junit</groupId>
     24       <artifactId>junit</artifactId>
     25       <version>4.11</version>
     26       <scope>test</scope>
     27     </dependency>
     28     
     29     <!-- springmvc包 -->
     30     <dependency>
     31         <groupId>org.springframework</groupId>
     32         <artifactId>spring-webmvc</artifactId>
     33         <version>4.3.7.RELEASE</version>
     34     </dependency>    
     35     
     36     <!-- spring web包 -->
     37     <dependency>
     38         <groupId>org.springframework</groupId>
     39         <artifactId>spring-web</artifactId>
     40         <version>4.3.7.RELEASE</version>
     41     </dependency>
     42     
     43     <dependency>
     44         <groupId>javax.servlet</groupId>
     45         <artifactId>javax.servlet-api</artifactId>
     46         <version>3.1.0</version>
     47         <!-- 运行期不导入,只作用在编译期防止编译报错 -->
     48         <scope>provided</scope>
     49     </dependency>
     50     
     51     <!-- 导入spring相关包 -->
     52     <dependency>
     53         <groupId>org.springframework</groupId>
     54         <artifactId>spring-context</artifactId>
     55         <version>4.3.7.RELEASE</version>
     56     </dependency>
     57 
     58     <!--mybatis相关-->
     59     
     60     <!-- 引入mysql驱动 -->
     61     <dependency>
     62         <groupId>mysql</groupId>
     63         <artifactId>mysql-connector-java</artifactId>
     64         <version>5.0.8</version>
     65     </dependency>
     66     
     67     <!-- 引入数据源c3p0 -->
     68     <dependency>
     69         <groupId>com.mchange</groupId>
     70         <artifactId>c3p0</artifactId>
     71         <version>0.9.5.2</version>
     72     </dependency>
     73     
     74     <!-- 引入springJDBC -->
     75     <dependency>
     76         <groupId>org.springframework</groupId>
     77         <artifactId>spring-jdbc</artifactId>
     78         <version>4.3.7.RELEASE</version>
     79     </dependency>
     80     
     81     <!-- mybatis的包 -->
     82     <dependency>
     83         <groupId>org.mybatis</groupId>
     84         <artifactId>mybatis</artifactId>
     85         <version>3.4.5</version>
     86     </dependency>
     87 
     88     <!-- mybatis整合spring的包 -->
     89     <dependency>
     90         <groupId>org.mybatis</groupId>
     91         <artifactId>mybatis-spring</artifactId>
     92         <version>1.3.1</version>
     93     </dependency>
     94     
     95     <!-- json相关包 -->
     96     <dependency>
     97         <groupId>com.fasterxml.jackson.core</groupId>
     98         <artifactId>jackson-core</artifactId>
     99         <version>2.8.8</version>
    100     </dependency>
    101     
    102     <dependency>
    103         <groupId>com.fasterxml.jackson.core</groupId>
    104         <artifactId>jackson-databind</artifactId>
    105         <version>2.8.8</version>
    106     </dependency>
    107     
    108     
    109        
    110   </dependencies>
    111 
    112   <build>
    113     <finalName>mavenssm</finalName>
    114     <pluginManagement>
    115       <plugins>
    116         
    117         <!-- 配置插件,指定jdk版本 -->
    118         <plugin>
    119           <groupId>org.apache.maven.plugins</groupId>
    120           <artifactId>maven-compiler-plugin</artifactId>
    121           <version>3.8.0</version>
    122           <configuration>
    123               <source>1.8</source>
    124               <target>1.8</target>
    125               <encoding>UTF-8</encoding>
    126           </configuration>         
    127         </plugin>
    128 
    129           <!-- tomcat插件-->
    130         <plugin>
    131             <groupId>org.apache.tomcat.maven</groupId>
    132             <artifactId>tomcat7-maven-plugin</artifactId>
    133             <version>2.2</version>
    134             <configuration>
    135                 <!-- 端口 -->
    136                 <port>8080</port>       
    137                 <!-- contextPath -->
    138                 <path>/</path>
    139                 <!-- receive utf-8 -->
    140                 <uriEncoding>UTF-8</uriEncoding>
    141             </configuration>
    142         </plugin>
    143       
    144       </plugins>
    145     </pluginManagement>
    146   </build>
    147 </project>

    启动tomcat可以使用maven的tomcat插件,配置如下,添加一个maven application,Command line写入命令即可,注意不要添加mvn,直接写命令参数。

    启动后访问页面,发现能正常访问。

    控制台可以正常获取db数据。

     

    参考博文:

    (1)https://www.jianshu.com/p/18d068f47b09

  • 相关阅读:
    SSM框架的基本配置
    Python开发的飞机打外星人小游戏
    python中count和index
    破解Xmind时长
    光流法简介
    Linux常用命令
    GitHub常用命令
    极大似然估计与最大后验概率估计
    在linux上加速git clone
    Endnote导入共享数据
  • 原文地址:https://www.cnblogs.com/youngchaolin/p/11647140.html
Copyright © 2020-2023  润新知