IDEA(一) 使用IDEA搭建SSM框架项目

1. 新建项目

IDEA中新建Maven项目,使用Maven Archetype原型:maven-archetype-webapp

新建项目结构为:

2. 新建包目录

  • 新建Java代码目录:src.main.java

    src.main.java下新建分层模型package,带上项目的groupId(仅供参考)

    • common:存放全局变量,公共枚举等
    • base:存放基础组件,如工具类,过滤器,配置类等
    • controller:控制层
    • vo:前端传输过来的对象,如封装的请求
    • bo:业务对象,可能是多个dto/entity的整合
    • service:业务层
      • intf:接口
      • impl:实现
    • dao:数据库访问层
      • intf:接口(MyBatis中为xxxMapper.java)
      • impl:实现(MyBatis中自动生成实现类)
    • dto:数据传输对象,存放多表联合对象
    • entity:实体,对应数据库表
  • 新建资源目录:src.main.resources

3. 按需引入pom

新建工程后,不建议一次性引入所有的依赖,而是在需要的时候逐步引入,这样虽然会踩很多坑,但是可以熟悉每个依赖的作用,防止以后踩更大的坑。

新建工程后,第一次需要引入的依赖有:

  • Servlet API

    Java Web的应用服务器会带有Servlet API,所以这个依赖的scope设成provided

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
        <scope>provided</scope>
    </dependency>
    
  • Spring Web Mvc

    Spring Web依赖,包括Spring MVC,IDEA会把Spring Web Mvc所依赖的其他Spring模块也引入,有:aop、beans、context、core、expression、web,其余的模块不用引,但是为了扩展性,还是引入比较好。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    

4. 配置web.xml

4.1 配置ContextLoaderListener

ContextLoaderListener是ServletContext监听器,用于创建容器对象,并且将ApplicationContext对象放到Application域中,并指定spring核心配置文件。

关于ContextLoaderListener的具体作用及源码,会另写文章分析。

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
</context-param>
4.2 配置DispatcherServlet

DispatcherServlet是前端控制器,配置中指定Spring MVC的配置文件。

关于DispatcherServlet的具体作用及源码,会另写文章分析。

<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>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
4.3 处理中文乱码问题

配置CharacterEncodingFilter过滤器处理中文乱码问题,要放到所有过滤器之前。

<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>forceRequestEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>forceResponseEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
4.4 整合Restful风格请求

配置HiddenHttpMethodFilter过滤器,将get/post请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求。

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

5. 配置Spring配置文件

Spring配置文件路径是配置在web.xml ContextLoaderListener中。

初始的Spring配置文件需要配置包扫描,将满足条件的Java Bean注入到Spring容器中,由Spring进行管理。

<!--  设置包扫描,不扫描Controller  -->
<context:component-scan base-package="com.lyldelove">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

6. 配置Spring MVC配置文件

Spring MVC配置文件路径是配置在web.xml DispatcherServlet中。

初始的Spring MVC配置文件需要配置以下3项:

  • 包扫描。扫描所有Controller
  • 开启基于注解驱动的mvc。开启后可使用Spring MVC的高级功能
  • 配置默认的静态资源处理器
  • 配置视图解析器
<!--  设置包扫描,扫描所有的Controller  -->
<context:component-scan base-package="com.lyldelove" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--  开启基于注解驱动的mvc,开启后可使用Spring MVC的高级功能  -->
<mvc:annotation-driven/>

<!--  配置默认的静态资源处理器  -->
<mvc:default-servlet-handler/>

<!--  配置视图解析器  -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--配置解析前后缀-->
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

静态资源的处理,还可以通过<mvc:resources />来解析配置

7. 引入前端JS/CSS

前端所需的js/css等静态文件,一般放在webapp目录下

8. 日志框架整合

在整合其他框架的过程中,项目可能会有很多异常/报错,我们需要通过日志来查找问题。

日志框架需要日志门面及日志实现,我们采用slf4j做日志门面,log4j做日志实现,看如何整合。

引入依赖:

<!--  日志,slf4j做日志门面,log4j做日志实现  -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
</dependency>

引入slf4j-log4j12后,IDEA会自动引入slf4j-api和log4j的依赖,不需要再显示引入

log4j会自动扫描src/main/resources目录下的log4j.xmllog4j.properties,我们把配置文件放在此目录下。

#log4j.properties

#日志输出级别
log4j.rootLogger=debug,stdout,D,E

#设置stdout的日志输出控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#输出日志到控制台的方式,默认为System.out
log4j.appender.stdout.Target = System.out
#设置使用灵活布局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p]  method:[%c (%rms)] - %m%n

9. 数据源整合

以Druid为例,需要引入Spring JDBCDruid的依赖,同时数据库连接信息最好单独出一个配置文件来管理,再在Spring配置文件中引入外部的配置文件。

依赖:

<!--  Spring jdbc  -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>

<!--  数据源Druid  -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>${druid.version}</version>
</dependency>

注意:要记得引入Spring jdbc的依赖,否则后面出问题会很难找(有日志还好找一点,所以最好日志框架的整合放到最前面)。

Spring配置:

<!--  加载外部配置文件  -->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!--  配置Druid数据源  -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>

    <!--  指定连接池中最大的活跃连接数  -->
    <property name="maxActive" value="20"/>
    <!--  指定启动连接池时,初始建立的连接数量  -->
    <property name="initialSize" value="1"/>
    <!--  指定连接池等待连接返回的最大等待时间,毫秒单位.  -->
    <property name="maxWait" value="60000"/>
    <!--  指定必须保持连接的最小值(For DBCP and Tomcat connection pools)  -->
    <property name="minIdle" value="1"/>
</bean>

10. MyBatis + MySql整合

依赖:

<!--  Spring jdbc  -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</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>${mybatis.spring.version}</version>
</dependency>

<!--  MySQL驱动  -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
</dependency>

Spring配置文件中配置MyBatis:

需要配置下面2项:

  • 配置sqlSessionFactory
  • 配置映射扫描器
<!--  配置MyBatis sqlSessionFactory  -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!--  指定MyBatis 的 XML 配置文件路径  -->
    <property name="configLocation" value="classpath:mybatis.xml"/>
    <!--  指定映射器 XML 文件路径  -->
    <property name="mapperLocations" value="classpath:mapper/**/*.xml"/>
</bean>

<!--  扫描MyBatis映射器  -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.lyldelove.dao"/>
</bean>

MyBatis配置文件:

在Spring配置文件sqlSessionFactory配置项中配置了MyBatis的配置文件,MyBatis的配置文件中,需要配置骆驼命名法则,还可以配置别名。

<settings>
    <!--  其余骆驼命名法则,是的数据库字段可以对应JavaBean属性  -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

<!--  起别名,这样在Mapper.xml文件中,resultType就可以简写,默认规则是JavaBean类名首字母小写  -->
<typeAliases>
    <package name="com.lyldelove.entity.system"/>
</typeAliases>

11. 需要深入挖掘的点

  • ContextLoaderListener作用及源码分析
  • DispatcherServlet作用及源码分析
  • Filter过滤器工作原理
  • Spring/Spring MVC配置文件解析及相关配置项的作用和源码分析
  • 日志框架深入,配置项
  • 日志框架是如何整合进来的,实现原理
  • 什么是数据源

原文地址:https://www.cnblogs.com/lyldelove/p/12624256.html

时间: 2024-10-26 22:22:24

IDEA(一) 使用IDEA搭建SSM框架项目的相关文章

搭建ssm框架项目基本原理和主要的配置文件小结

1.springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.springmvc是一个基于mvc的web框架.mvc的思想大家已经很熟悉了,简称"Model-View-Controller". 下面先简单介绍下我对spring-mvc的理解. 上面这张图大概说明了springmvc的运行过程,看起来可能有点云里雾里的,总结起来就是下面这些: 客户端发起请求到前端控制器(DispatcherServlet). 前端控制器请求Handler

Maven项目搭建(二):Maven搭建SSM框架

        上一章给大家讲解了如何使用Maven搭建web项目.       这次给大家介绍一下怎么使用Maven搭建SSM框架项目.       首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. parent:  声明继承. modules:  声明聚合,该值是一个当前POM的相对目录.用户项目的聚合. groupId:  定义当前Maven项目隶属的实际项目. artifactId:  定义实际项目中的一个Maven项目模块,一般为实际项目名称. ve

使用maven搭建ssm框架的javaweb项目

目前主流的javawe项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM矿建的maven项目的实施流程.记之共享! 一.SSM框架介绍 SSM框架是指:Spring+Spring MVC+Mybatis. [Spring] 轻量--从大小与开销两方面而言Spring都是轻量的,此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类.简单说就是自己需要什么就导入对应的jar的即可,而不是侵入式

完整搭建SSM框架之黑暗中的摸索

JavaWeb基础该学的都了解过一点了,那么必须要在项目中来练习和升华了(就像高三对数理化的整合练习!) 一共分为三个步骤: 1.环境的选择和准备 2.工程的创建 3.代码和配置文件的创建 环境 工程创建 在pom.xml文件中加入依赖包(去除index.jsp的报错) <!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api<

IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows

转-使用idea2017搭建SSM框架

转自http://www.cnblogs.com/hackyo/p/6646051.html 使用idea2017搭建SSM框架 搭建个SSM框架居然花费了我好长时间!特此记录! 需要准备的环境: idea 2017.1 jdk1.8 Maven 3.3.9  请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的 注:配置完ide红线报错没关系!可以run! 步骤: 一.首先使用idea新建一个Maven webapp项目 点击Finish,第一次搭建可能会很慢,甚至可能需要VP

快速搭建ssm框架

快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我过段时间再出一个 第一步:创建web项目 第二步:使用小黑鸟工具生成实体类,mapper接口,以及mapper.xml  不需要接口实现类(需要装插件) 第三步:创建service接口,创建service接口实现类,在类上添加@Service(需要提前引入SSM所需lib架包) 然后:调用***ma

使用IDEA搭建SSM框架

前言: [关于SSM的框架,以后再做整理] [学习性文章,本文长期更新,如有错误,感激指正,并会及时更正与回答,谢谢] 正文: 1.开发环境的配置[以后再做整理] 2.IDEA上创建MAVEN WEB框架[以后再做整理] 3.搭建SSM框架 ssm框架的搭建过程,实际是spring.spring-MVC.mybatis三个JAVA开源框架的整合过程.这里涉及到[利用maven整合框架,合并项目]的学习,[以后再做整理]. step1:maven引入需要的jar包 关于pom.xml文件的内容的组

详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. SpringMVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行定制. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架. 本文旨在快速且详细的介绍intellij idea 搭建SS