IDEA使用Maven搭建SSM框架Web项目

IDEA使用Maven搭建SSM框架Web项目

  • 1.基础概念
  • 2.项目搭建
    • 2.1 项目目录结构
    • 2.2 新建项目
    • 2.3 添加配置文件
      • 2.3.1 编辑pom.xml文件
      • 2.3.2 添加web.xml文件
      • 2.3.3 添加applicationContext.xml文件
      • 2.3.4 添加spring-mvc.xml文件
      • 2.3.5 添加jdbc.properties文件
      • 2.3.6 添加log4j.xml文件
    • 2.4 配置拦截器
    • 2.5 添加Controller,Service,Dao,Mapper,Model,Jsp等文件
    • 2.6 运行及结果
  • 3.可能出现的问题及解决方法
    • 3.1 问题:Establishing SSL connection without server's identity……
    • 3.2 问题:org.springframework.beans.factory.UnsatisfiedDependencyException:……[classpath:com/example/mapper/*.xml]: ……cannot be resolved to URL because it does not exist
    • 3.3 问题:org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [org.springframework.web.util.Log4jConfigListener]
    • 3.4 问题:java:程序包javax.servlet.http不存在

相关文章链接:

SpringMVC搭建一个Web项目

log4j.xml配置详解

logback.xml配置详解

SSM框架搭建Web项目

观前提示:

本文可在 SpringMVC搭建一个Web项目 基础上配置所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141,Tomcat版本为9.0.12。

1.基础概念

参照文章:SSM框架搭建Web项目

2.项目搭建

2.1 项目目录结构

IDEA使用Maven搭建SSM框架Web项目_第1张图片
IDEA使用Maven搭建SSM框架Web项目_第2张图片

2.2 新建项目

参考文章:Eclipse与Idea创建一个Maven的Java Web项目 第2.2.2节内容

2.3 添加配置文件

编辑pom.xml导入所需jar包,添加配置文件web.xml,applicationContext.xml,spring-mvc.xml,jdbc.properties,log4j.xml。jdbc.properties为连接数据库相关数据,log4j.xml为日志配置。

各配置文件中各标签解释可参考:SSM框架搭建Web项目 第2.2节内容

2.3.1 编辑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.0modelVersion>

    <groupId>com.examplegroupId>
    <artifactId>MavenMvcartifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <spring.version>4.3.18.RELEASEspring.version>
        <slf4j.version>1.7.28slf4j.version>
        <log4j.version>1.2.17log4j.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-ormartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-oxmartifactId>
            <version>${spring.version}version>
        dependency>

        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>${slf4j.version}version>
        dependency>

        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>${log4j.version}version>
        dependency>

        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>${slf4j.version}version>
        dependency>

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.20version>
        dependency>

        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.3version>
        dependency>

        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>2.0.3version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.48version>
        dependency>

        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.4version>
        dependency>

    dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>com/example/mapper/*.xmlinclude>
                includes>
            resource>
        resources>
    build>
    
project>

2.3.2 添加web.xml文件


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>MavenMvcdisplay-name>

  
  <context-param>
    <param-name>log4jConfigLocationparam-name>
    <param-value>classpath:/config/log4j.xmlparam-value>
  context-param>
  
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>
  listener>

  
  <context-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>classpath:/spring/applicationContext.xmlparam-value>
  context-param>
  
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
  listener>

  
  <servlet>
    <servlet-name>springServletservlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    
    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:/spring/spring-mvc.xmlparam-value>
    init-param>
    <load-on-startup>1load-on-startup>
  servlet>
  
  <servlet-mapping>
    <servlet-name>springServletservlet-name>
    <url-pattern>/url-pattern>
  servlet-mapping>

  
  <filter>
    <filter-name>encodingfilter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    <init-param>
      <param-name>encodingparam-name>
      <param-value>UTF-8param-value>
    init-param>
  filter>
  <filter-mapping>
    <filter-name>encodingfilter-name>
    
    <url-pattern>/*url-pattern>
  filter-mapping>
web-app>

2.3.3 添加applicationContext.xml文件


    <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"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

        <description>spring配置description>

        
        <context:component-scan base-package="com.example">
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        context:component-scan>

        
        
        <context:property-placeholder location="/WEB-INF/config/jdbc.properties"/>
        
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>

            
            <property name="initialSize" value="${jdbc.pool.initialPoolSize}"/>
            <property name="minIdle" value="${jdbc.pool.minPoolSize}"/>
            <property name="maxActive" value="${jdbc.pool.maxPoolSize}"/>

            
            <property name="maxWait" value="${jdbc.pool.maxIdleTime}"/>

            
            <property name="timeBetweenEvictionRunsMillis" value="${jdbc.pool.checkoutTimeout}"/>

            
            <property name="filters" value="wall,stat,log4j"/>
        bean>

        
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            
            <property name="mapperLocations" value="classpath:com/example/mapper/*.xml"/>
        bean>

        
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.example.dao"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        bean>

        
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        bean>

        
        
        <tx:annotation-driven transaction-manager="transactionManager"/>

beans>

2.3.4 添加spring-mvc.xml文件


<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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    
    <context:component-scan base-package="com.example" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    context:component-scan>

    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
        <property name="prefix" value="/WEB-INF/jsp/">property>
        
        <property name="suffix" value=".jsp">property>
    bean>

    
    <mvc:annotation-driven/>

    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.example.interceptor.RequestMappingInterceptor">bean>
        mvc:interceptor>
    mvc:interceptors>

    
    <mvc:default-servlet-handler/>

    
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8" />
        
        <property name="maxUploadSize" value="10485760000">property>
        <property name="maxInMemorySize" value="40960">property>
    bean>

    
    <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
beans>

2.3.5 添加jdbc.properties文件

具体配置详解可参考:SSM框架搭建Web项目 第2.2.4节内容进行修改。

2.3.6 添加log4j.xml文件

具体配置详解可参考:SSM框架搭建Web项目 第2.2.5节内容进行修改。

2.4 配置拦截器

具体配置详解可参考:SSM框架搭建Web项目 第2.3节内容进行修改。

2.5 添加Controller,Service,Dao,Mapper,Model,Jsp等文件

具体配置详解可参考:SSM框架搭建Web项目 第2.4节内容。

2.6 运行及结果

IDEA使用Maven搭建SSM框架Web项目_第3张图片
控制台日志信息
在这里插入图片描述

3.可能出现的问题及解决方法

部分未列出问题可参考:SSM框架搭建Web项目 第3节内容。

具体问题请根据实际原因解决,以下问题为我部署项目时的问题及解决方法,仅供参考。

3.1 问题:Establishing SSL connection without server’s identity……

若出现以下错误
IDEA使用Maven搭建SSM框架Web项目_第4张图片

Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

翻译如下:

不建议在没有服务器身份验证的情况下建立SSL连接。 根据MySQL 5.5.45 +,5.6.26 +和5.7.6+的要求,如果未设置显式选项,则默认情况下必须建立SSL连接。 为了与不使用SSL的现有应用程序兼容,将verifyServerCertificate属性设置为’false’。 您需要通过设置useSSL = false来显式禁用SSL,或者设置useSSL = true并为服务器证书验证提供信任库。

查看了下我最开始的jdbc.properties部分配置如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root

解决方法为在jdbc.url配置useSSL=false即可,修改后如下所示

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false
jdbc.username=root
jdbc.password=root

3.2 问题:org.springframework.beans.factory.UnsatisfiedDependencyException:……[classpath:com/example/mapper/*.xml]: ……cannot be resolved to URL because it does not exist

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginService': Unsatisfied dependency expressed through field 'loginDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginDao' defined in file [E:\IdeaProjects\MavenMvc\out\artifacts\MavenMvc_war_exploded\WEB-INF\classes\com\example\dao\LoginDao.class]: Cannot resolve reference to bean 'sqlSessionFactory' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [spring/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.core.io.Resource[]' for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:com/example/mapper/*.xml]: class path resource [com/example/mapper/] cannot be resolved to URL because it does not exist

查看了一下项目的映射文件夹,并没有生成mapper文件夹
IDEA使用Maven搭建SSM框架Web项目_第5张图片
解决方法是在pom.xml中project节点下添加以下配置

<build>
  <resources>
    <resource>
      <directory>src/main/javadirectory>
      <includes>
        <include>com/example/mapper/*.xmlinclude>
      includes>
    resource>
  resources>
build>

重新编译即可
IDEA使用Maven搭建SSM框架Web项目_第6张图片

3.3 问题:org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [org.springframework.web.util.Log4jConfigListener]

org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [org.springframework.web.util.Log4jConfigListener]

IDEA使用Maven搭建SSM框架Web项目_第7张图片
查看了一下项目的映射文件夹,并没有生成依赖的lib文件夹

IDEA使用Maven搭建SSM框架Web项目_第8张图片
右上角在这里插入图片描述打开Project Structrue

在下图位置右键->Put into Output Root
IDEA使用Maven搭建SSM框架Web项目_第9张图片
IDEA使用Maven搭建SSM框架Web项目_第10张图片
重新编译即可
IDEA使用Maven搭建SSM框架Web项目_第11张图片

3.4 问题:java:程序包javax.servlet.http不存在

IDEA使用Maven搭建SSM框架Web项目_第12张图片
出现这个问题可能是你的tomcat中的jar没有添加依赖。

解决方法为打开Project Structure->Module->项目->Dependencies->"+"->2.Library…
IDEA使用Maven搭建SSM框架Web项目_第13张图片
选择自己的Tomcat->Add Selected
IDEA使用Maven搭建SSM框架Web项目_第14张图片

你可能感兴趣的:(开发工具,Java,Web)