• idea搭建SSM项目这一篇就够了


    目录

    1. 创建Maven项目

    1.1 创建一个新的项目  (请先连接好网络)

    1.2 选择maven --> 选择你的jdk版本 --> 勾选Create from archetype

    1.3 随便选中一条输入webapp进行模糊查询然后选中下列我选中的内容(重要!不可错)

    1.4 填写你的项目名 --> 选择项目保存到你的电脑地址 --> 随便写(最好用两个单词中间用.隔开) --> 和项目名保持一致

    1.5 选择你的maven安装包地址 --> 查看settings.xml文件是否在idea显示的地址 -->查看你的下载资源本地仓库是否在idea显示的地址(如果有误或自己整改过都要进行修改和idea保持一致)

    1.6 正在创建中...请稍后(注意!!!创建maven项目请先连接网络)

    1.7 控制台出现(BUILD SUCCESS)代表Maven项目已创建成功

    2. 搭建项目相关目录

     2.1 选中main文件夹右键

     2.2 new一个新的文件夹选中(new --> Directory)

     2.3 此操作要操作两遍因为要添加下方图中这两个文件夹(java,resources)

     2.4 选中src文件夹右键

     2.5 new一个新的文件夹(new --> Directory)

     2.6 选中添加下方图中文件夹即可(test\java)

    3. 添加pom相关依赖

    4. 添加/修改相关配置文件

    4.1 jdbc.properties(添加到main文件夹 --> resources文件夹下面)

    4.2 log4j2.xml(添加到main文件夹 --> resources文件夹下面)

    4.3 mybatis.cfg.xml(添加到main文件夹 --> resources文件夹下面) 

    4.4 spring.xml(添加到main文件夹 --> resources文件夹下面) 

    4.5 spring-mybatis.xml(添加到main文件夹 --> resources文件夹下面) 

    4.6 spring-mvc.xml(添加到main文件夹 --> webapp文件夹 --> WEB-INF文件夹下面)

    4.7 修改web.xml相关配置

    4.8 generatorConfig.xml(添加到main文件夹 --> resources文件夹下面)

    4.8.1 添加Maven自动生成插件 

     5. 使用junit and Tomcat分别测试是否搭建成功

     5.1 junit测试

     5.2 Tomcat测试


    1. 创建Maven项目

     1.1 创建一个新的项目  (请先连接好网络)

    1.2 选择maven --> 选择你的jdk版本 --> 勾选Create from archetype

    1.3 随便选中一条输入webapp进行模糊查询然后选中下列我选中的内容(重要!不可错)

    1.4 填写你的项目名 --> 选择项目保存到你的电脑地址 --> 随便写(最好用两个单词中间用.隔开) --> 和项目名保持一致

    1.5 选择你的maven安装包地址 --> 查看settings.xml文件是否在idea显示的地址 -->查看你的下载资源本地仓库是否在idea显示的地址(如果有误或自己整改过都要进行修改和idea保持一致)

    1.6 正在创建中...请稍后(注意!!!创建maven项目请先连接网络)

    1.7 控制台出现(BUILD SUCCESS)代表Maven项目已创建成功

    2. 搭建项目相关目录

     2.1 选中main文件夹右键

     2.2 new一个新的文件夹选中(new --> Directory)

     2.3 此操作要操作两遍因为要添加下方图中这两个文件夹(java,resources)

     2.4 选中src文件夹右键

     2.5 new一个新的文件夹(new --> Directory)

     2.6 选中添加下方图中文件夹即可(test\java)

    3. 添加pom相关依赖

    • 直接复制下方依赖覆盖你自己创建好的项目pom文件中即可 
    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" 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.0modelVersion>
    5. <groupId>com.jmhgroupId>
    6. <artifactId>mybatis03artifactId>
    7. <version>1.0-SNAPSHOTversion>
    8. <packaging>warpackaging>
    9. <name>mybatis03 Maven Webappname>
    10. <url>http://www.example.comurl>
    11. <properties>
    12. <spring.version>5.0.2.RELEASEspring.version>
    13. <maven.compiler.source>1.8maven.compiler.source>
    14. <maven.compiler.target>1.8maven.compiler.target>
    15. <jackson.version>2.9.3jackson.version>
    16. <shiro.version>1.2.5shiro.version>
    17. <slf4j.version>1.7.7slf4j.version>
    18. <log4j2.version>2.9.1log4j2.version>
    19. properties>
    20. <dependencies>
    21. <dependency>
    22. <groupId>org.springframeworkgroupId>
    23. <artifactId>spring-coreartifactId>
    24. <version>${spring.version}version>
    25. dependency>
    26. <dependency>
    27. <groupId>org.springframeworkgroupId>
    28. <artifactId>spring-beansartifactId>
    29. <version>${spring.version}version>
    30. dependency>
    31. <dependency>
    32. <groupId>org.springframeworkgroupId>
    33. <artifactId>spring-contextartifactId>
    34. <version>${spring.version}version>
    35. dependency>
    36. <dependency>
    37. <groupId>org.springframeworkgroupId>
    38. <artifactId>spring-ormartifactId>
    39. <version>${spring.version}version>
    40. dependency>
    41. <dependency>
    42. <groupId>org.springframeworkgroupId>
    43. <artifactId>spring-txartifactId>
    44. <version>${spring.version}
    45. version>
    46. dependency>
    47. <dependency>
    48. <groupId>org.springframeworkgroupId>
    49. <artifactId>spring-aspectsartifactId>
    50. <version>${spring.version}version>
    51. dependency>
    52. <dependency>
    53. <groupId>org.springframeworkgroupId>
    54. <artifactId>spring-webartifactId>
    55. <version>${spring.version}version>
    56. dependency>
    57. <dependency>
    58. <groupId>org.springframeworkgroupId>
    59. <artifactId>spring-testartifactId>
    60. <version>${spring.version}version>
    61. dependency>
    62. <dependency>
    63. <groupId>org.springframeworkgroupId>
    64. <artifactId>spring-webmvcartifactId>
    65. <version>${spring.version}version>
    66. dependency>
    67. <dependency>
    68. <groupId>jstlgroupId>
    69. <artifactId>jstlartifactId>
    70. <version>1.2version>
    71. dependency>
    72. <dependency>
    73. <groupId>taglibsgroupId>
    74. <artifactId>standardartifactId>
    75. <version>1.1.2version>
    76. dependency>
    77. <dependency>
    78. <groupId>com.fasterxml.jackson.coregroupId>
    79. <artifactId>jackson-databindartifactId>
    80. <version>${jackson.version}version>
    81. <exclusions>
    82. <exclusion>
    83. <artifactId>jackson-annotationsartifactId>
    84. <groupId>com.fasterxml.jackson.coregroupId>
    85. exclusion>
    86. exclusions>
    87. dependency>
    88. <dependency>
    89. <groupId>com.fasterxml.jackson.coregroupId>
    90. <artifactId>jackson-coreartifactId>
    91. <version>${jackson.version}version>
    92. dependency>
    93. <dependency>
    94. <groupId>com.fasterxml.jackson.coregroupId>
    95. <artifactId>jackson-annotationsartifactId>
    96. <version>${jackson.version}version>
    97. dependency>
    98. <dependency>
    99. <groupId>commons-fileuploadgroupId>
    100. <artifactId>commons-fileuploadartifactId>
    101. <version>1.3.3version>
    102. dependency>
    103. <dependency>
    104. <groupId>org.hibernategroupId>
    105. <artifactId>hibernate-validatorartifactId>
    106. <version>6.0.7.Finalversion>
    107. dependency>
    108. <dependency>
    109. <groupId>junitgroupId>
    110. <artifactId>junitartifactId>
    111. <version>4.12version>
    112. <scope>testscope>
    113. dependency>
    114. <dependency>
    115. <groupId>javax.servletgroupId>
    116. <artifactId>javax.servlet-apiartifactId>
    117. <version>4.0.0version>
    118. <scope>providedscope>
    119. dependency>
    120. <dependency>
    121. <groupId>org.mybatisgroupId>
    122. <artifactId>mybatisartifactId>
    123. <version>3.4.5version>
    124. dependency>
    125. <dependency>
    126. <groupId>com.github.pagehelpergroupId>
    127. <artifactId>pagehelperartifactId>
    128. <version>5.1.2version>
    129. dependency>
    130. <dependency>
    131. <groupId>org.mybatisgroupId>
    132. <artifactId>mybatis-springartifactId>
    133. <version>1.3.1version>
    134. dependency>
    135. <dependency>
    136. <groupId>mysqlgroupId>
    137. <artifactId>mysql-connector-javaartifactId>
    138. <version>5.1.44version>
    139. dependency>
    140. <dependency>
    141. <groupId>org.apache.commonsgroupId>
    142. <artifactId>commons-dbcp2artifactId>
    143. <version>2.1.1version>
    144. dependency>
    145. <dependency>
    146. <groupId>org.apache.commonsgroupId>
    147. <artifactId>commons-pool2artifactId>
    148. <version>2.4.3version>
    149. dependency>
    150. <dependency>
    151. <groupId>org.slf4jgroupId>
    152. <artifactId>slf4j-apiartifactId>
    153. <version>${slf4j.version}version>
    154. dependency>
    155. <dependency>
    156. <groupId>org.slf4jgroupId>
    157. <artifactId>jcl-over-slf4jartifactId>
    158. <version>${slf4j.version}version>
    159. <scope>runtimescope>
    160. <exclusions>
    161. <exclusion>
    162. <artifactId>slf4j-apiartifactId>
    163. <groupId>org.slf4jgroupId>
    164. exclusion>
    165. exclusions>
    166. dependency>
    167. <dependency>
    168. <groupId>org.apache.logging.log4jgroupId>
    169. <artifactId>log4j-slf4j-implartifactId>
    170. <version>${log4j2.version}version>
    171. <exclusions>
    172. <exclusion>
    173. <artifactId>slf4j-apiartifactId>
    174. <groupId>org.slf4jgroupId>
    175. exclusion>
    176. exclusions>
    177. dependency>
    178. <dependency>
    179. <groupId>org.apache.logging.log4jgroupId>
    180. <artifactId>log4j-coreartifactId>
    181. <version>${log4j2.version}version>
    182. dependency>
    183. <dependency>
    184. <groupId>org.apache.logging.log4jgroupId>
    185. <artifactId>log4j-apiartifactId>
    186. <version>${log4j2.version}version>
    187. dependency>
    188. <dependency>
    189. <groupId>org.apache.logging.log4jgroupId>
    190. <artifactId>log4j-webartifactId>
    191. <version>${log4j2.version}version>
    192. dependency>
    193. <dependency>
    194. <groupId>com.lmaxgroupId>
    195. <artifactId>disruptorartifactId>
    196. <version>3.2.0version>
    197. dependency>
    198. <dependency>
    199. <groupId>org.projectlombokgroupId>
    200. <artifactId>lombokartifactId>
    201. <version>1.18.20version>
    202. <scope>providedscope>
    203. dependency>
    204. <dependency>
    205. <groupId>org.apache.shirogroupId>
    206. <artifactId>shiro-coreartifactId>
    207. <version>${shiro.version}version>
    208. dependency>
    209. <dependency>
    210. <groupId>org.apache.shirogroupId>
    211. <artifactId>shiro-webartifactId>
    212. <version>${shiro.version}version>
    213. dependency>
    214. <dependency>
    215. <groupId>org.apache.shirogroupId>
    216. <artifactId>shiro-springartifactId>
    217. <version>${shiro.version}version>
    218. dependency>
    219. dependencies>
    220. <build>
    221. <finalName>ssmfinalName>
    222. <resources>
    223. <resource>
    224. <directory>src/main/javadirectory>
    225. <includes>
    226. <include>**/*.xmlinclude>
    227. includes>
    228. resource>
    229. <resource>
    230. <directory>src/main/resourcesdirectory>
    231. <includes>
    232. <include>jdbc.propertiesinclude>
    233. <include>*.xmlinclude>
    234. includes>
    235. resource>
    236. resources>
    237. <pluginManagement>
    238. <plugins>
    239. <plugin>
    240. <groupId>org.mybatis.generatorgroupId>
    241. <artifactId>mybatis-generator-maven-pluginartifactId>
    242. <version>1.3.2version>
    243. <dependencies>
    244. <dependency>
    245. <groupId>mysqlgroupId>
    246. <artifactId>mysql-connector-javaartifactId>
    247. <version>5.1.44version>
    248. dependency>
    249. dependencies>
    250. <configuration>
    251. <overwrite>trueoverwrite>
    252. configuration>
    253. plugin>
    254. plugins>
    255. pluginManagement>
    256. build>
    257. project>

    4. 添加/修改相关配置文件

     4.1 jdbc.properties(添加到main文件夹 --> resources文件夹下面)

    下方配置文件需要修改:

     1. 你的数据库名称 

     2. 你的数据库登录账号

     3. 你的数据库登录密码

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://localhost:3306/你的数据库名称?useUnicode=true&characterEncoding=UTF-8
    3. jdbc.username=你的数据库登录账号
    4. jdbc.password=你的数据库登录密码

     4.2 log4j2.xml(添加到main文件夹 --> resources文件夹下面)

    1. "1.0" encoding="UTF-8"?>
    2. <Configuration status="WARN" monitorInterval="30">
    3. <Properties>
    4. <Property name="LOG_HOME">/root/workspace/lucenedemo/logsProperty>
    5. <property name="ERROR_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/errorproperty>
    6. <property name="WARN_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/warnproperty>
    7. <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%nproperty>
    8. Properties>
    9. <Appenders>
    10. <Console name="Console" target="SYSTEM_OUT">
    11. <ThresholdFilter level="trace" onMatch="ACCEPT"
    12. onMismatch="DENY" />
    13. <PatternLayout pattern="${PATTERN}" />
    14. Console>
    15. <File name="log" fileName="logs/test.log" append="false">
    16. <PatternLayout
    17. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    18. File>
    19. <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"
    20. filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
    21. <ThresholdFilter level="info" onMatch="ACCEPT"
    22. onMismatch="DENY" />
    23. <PatternLayout
    24. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    25. <Policies>
    26. <TimeBasedTriggeringPolicy interval="1"
    27. modulate="true" />
    28. Policies>
    29. RollingFile>
    30. <RollingFile name="RollingFileWarn" fileName="${WARN_LOG_FILE_NAME}/warn.log"
    31. filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
    32. <ThresholdFilter level="warn" onMatch="ACCEPT"
    33. onMismatch="DENY" />
    34. <PatternLayout
    35. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    36. <Policies>
    37. <TimeBasedTriggeringPolicy />
    38. <SizeBasedTriggeringPolicy size="2 kB" />
    39. Policies>
    40. <DefaultRolloverStrategy max="20" />
    41. RollingFile>
    42. <RollingFile name="RollingFileError" fileName="${ERROR_LOG_FILE_NAME}/error.log"
    43. filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
    44. <ThresholdFilter level="error" onMatch="ACCEPT"
    45. onMismatch="DENY" />
    46. <PatternLayout
    47. pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    48. <Policies>
    49. <TimeBasedTriggeringPolicy interval="1"
    50. modulate="true" />
    51. Policies>
    52. RollingFile>
    53. Appenders>
    54. <Loggers>
    55. <logger name="org.springframework" level="INFO">logger>
    56. <logger name="org.mybatis" level="INFO">logger>
    57. <logger name="org.springframework" level="ERROR" />
    58. <logger name="org.hibernate" level="ERROR" />
    59. <logger name="org.apache.struts2" level="ERROR" />
    60. <logger name="com.opensymphony.xwork2" level="ERROR" />
    61. <logger name="org.jboss" level="ERROR" />
    62. <root level="all">
    63. <appender-ref ref="Console" />
    64. <appender-ref ref="RollingFileInfo" />
    65. <appender-ref ref="RollingFileWarn" />
    66. <appender-ref ref="RollingFileError" />
    67. root>
    68. Loggers>
    69. Configuration>

    4.3 mybatis.cfg.xml(添加到main文件夹 --> resources文件夹下面) 

    1. "1.0" encoding="UTF-8"?>
    2. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    3. <configuration>
    4. <settings>
    5. <setting name="logImpl" value="LOG4J2"/>
    6. settings>
    7. <plugins>
    8. <plugin interceptor="com.github.pagehelper.PageInterceptor">
    9. plugin>
    10. plugins>
    11. configuration>

    4.4 spring.xml(添加到main文件夹 --> resources文件夹下面) 

    1. "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. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="propertyConfigurer"
    6. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    7. <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    8. <property name="ignoreResourceNotFound" value="true" />
    9. <property name="locations">
    10. <list>
    11. <value>classpath:jdbc.propertiesvalue>
    12. list>
    13. property>
    14. bean>
    15. <import resource="spring-mybatis.xml"/>
    16. beans>

    4.5 spring-mybatis.xml(添加到main文件夹 --> resources文件夹下面) 

    下方配置文件需要修改(注!!!需要修改的地方已用注释标注):

     

       

    1. "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" xmlns:tx="http://www.springframework.org/schema/tx"
    5. xmlns:aop="http://www.springframework.org/schema/aop"
    6. 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    7. <context:component-scan base-package="com.jmh.shiro" use-default-filters="true">
    8. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    9. context:component-scan>
    10. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
    11. destroy-method="close">
    12. <property name="driverClassName" value="${jdbc.driver}"/>
    13. <property name="url" value="${jdbc.url}"/>
    14. <property name="username" value="${jdbc.username}"/>
    15. <property name="password" value="${jdbc.password}"/>
    16. <property name="initialSize" value="10"/>
    17. <property name="maxTotal" value="100"/>
    18. <property name="maxIdle" value="50"/>
    19. <property name="minIdle" value="10"/>
    20. <property name="maxWaitMillis" value="-1"/>
    21. bean>
    22. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    23. <property name="dataSource" ref="dataSource"/>
    24. <property name="configLocation" value="classpath:mybatis.cfg.xml"/>
    25. <property name="mapperLocations" value="classpath:com/jmh/shiro/**/mapper/*.xml"/>
    26. <property name="typeAliasesPackage" value="com.jmh.shiro.model"/>
    27. bean>
    28. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    29. <property name="basePackage" value="com/jmh/shiro/**/mapper"/>
    30. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    31. bean>
    32. <bean id="transactionManager"
    33. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    34. <property name="dataSource" ref="dataSource"/>
    35. bean>
    36. <tx:annotation-driven transaction-manager="transactionManager"/>
    37. <aop:aspectj-autoproxy/>
    38. beans>

     4.6 spring-mvc.xml(添加到main文件夹 --> webapp文件夹 --> WEB-INF文件夹下面)

     下方配置文件需要修改(注!!!需要修改的地方已用注释标注):

    1. "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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    8. <context:component-scan base-package="com.jmh.shiro" use-default-filters="false">
    9. <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    10. context:component-scan>
    11. <mvc:annotation-driven>mvc:annotation-driven>
    12. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    13. <property name="viewClass"
    14. value="org.springframework.web.servlet.view.JstlView">property>
    15. <property name="prefix" value="/WEB-INF/jsp/"/>
    16. <property name="suffix" value=".jsp"/>
    17. bean>
    18. <mvc:resources location="/static/css/" mapping="/static/css/**"/>
    19. <mvc:resources location="/static/images/" mapping="/static/images/**"/>
    20. <mvc:resources location="/static/js/" mapping="/static/js/**"/>
    21. beans>

    4.7 修改web.xml相关配置

    •  可直接复制覆盖你的web.xml文件

    下方配置文件需要修改(注!!!需要修改的地方已用注释标注):

     1. 需要修改01(你要映射的.xml文件名)

     2. 需要修改02  (中文乱码过滤器配置(已在下方提供代码资源))

     3. 需要修改03  (那里面的.xml文件修改成上方4.6添加的spring-mvc.xml文件名即可)

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    5. version="3.1">
    6. <display-name>Archetype Created Web Applicationdisplay-name>
    7. <context-param>
    8. <param-name>contextConfigLocationparam-name>
    9. <param-value>classpath:spring.xmlparam-value>
    10. context-param>
    11. <listener>
    12. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    13. listener>
    14. <listener>
    15. <listener-class>org.springframework.web.util.IntrospectorCleanupListenerlistener-class>
    16. listener>
    17. <filter>
    18. <filter-name>encodingFilterfilter-name>
    19. <filter-class>com.jmh.shiro.utils.EncodingFiterfilter-class>
    20. <async-supported>trueasync-supported>
    21. <init-param>
    22. <param-name>encodingparam-name>
    23. <param-value>UTF-8param-value>
    24. init-param>
    25. filter>
    26. <filter-mapping>
    27. <filter-name>encodingFilterfilter-name>
    28. <url-pattern>/*url-pattern>
    29. filter-mapping>
    30. <servlet>
    31. <servlet-name>SpringMVCservlet-name>
    32. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    33. <init-param>
    34. <param-name>contextConfigLocationparam-name>
    35. <param-value>/WEB-INF/spring-mvc.xmlparam-value>
    36. init-param>
    37. <load-on-startup>1load-on-startup>
    38. <async-supported>trueasync-supported>
    39. servlet>
    40. <servlet-mapping>
    41. <servlet-name>SpringMVCservlet-name>
    42. <url-pattern>/url-pattern>
    43. servlet-mapping>
    44. web-app>
    •  EncodingFiter
    1. package com.jmh.ssm.utils;
    2. import javax.servlet.*;
    3. import javax.servlet.http.HttpServletRequest;
    4. import javax.servlet.http.HttpServletResponse;
    5. import java.io.IOException;
    6. import java.util.Map;
    7. /**
    8. * 中文乱码处理
    9. *
    10. */
    11. public class EncodingFiter implements Filter {
    12. private String encoding = "UTF-8";// 默认字符集
    13. public EncodingFiter() {
    14. super();
    15. }
    16. public void destroy() {
    17. }
    18. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
    19. throws IOException, ServletException {
    20. HttpServletRequest request = (HttpServletRequest) servletRequest;
    21. HttpServletResponse response = (HttpServletResponse) servletResponse;
    22. String method = request.getMethod();
    23. if (method.equalsIgnoreCase("get")) {
    24. Map map = (Map) request.getParameterMap();// 保存所有参数名=参数值(数组)的Map集合
    25. for (String[] values : map.values()) {
    26. for (int i = 0; i < values.length; i++) {
    27. values[i] = new String(values[i].getBytes("ISO-8859-1"), this.encoding);
    28. }
    29. }
    30. } else if (method.equalsIgnoreCase("post")) {
    31. request.setCharacterEncoding(this.encoding);
    32. }
    33. response.setContentType("text/html;charset=" + this.encoding);
    34. chain.doFilter(servletRequest, servletResponse);
    35. }
    36. public void init(FilterConfig filterConfig) throws ServletException {
    37. String s = filterConfig.getInitParameter("encoding");// 读取web.xml文件中配置的字符集
    38. if (null != s && !s.trim().equals("")) {
    39. this.encoding = s.trim();
    40. }
    41. }
    42. }

     4.8 generatorConfig.xml(添加到main文件夹 --> resources文件夹下面)

     下方配置文件需要修改(注!!!需要修改的地方已用注释标注):

      1. 需要修改01 (你的mysql jar包的放置地址路径位置)

      2. 需要修改02 (生成实体类的模块位置比如xxx.xxx.xxx.model)

      3. 需要修改03 (生成sql映射文件位置)

      4. 需要修改04 (生成mapper接口位置)

      5. 最后就是table标签需要修改的属性值!一个table标签就是一张表可以这么理解

          需要修改的table标签也就两个属性:

          5.1 tableName="这里填写的就是你要生成的表名称"

          5.2 domainObjectName="这里就是你要生成的表对应的实体类名称"

    1. "1.0" encoding="UTF-8" ?>
    2. generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    4. <generatorConfiguration>
    5. <properties resource="jdbc.properties"/>
    6. <classPathEntry location="E:\\mysql"/>
    7. <context id="infoGuardian">
    8. <commentGenerator>
    9. <property name="suppressAllComments" value="true"/>
    10. <property name="suppressDate" value="true"/>
    11. commentGenerator>
    12. <jdbcConnection driverClass="${jdbc.driver}"
    13. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    14. <javaTypeResolver>
    15. <property name="forceBigDecimals" value="false"/>
    16. javaTypeResolver>
    17. <javaModelGenerator targetPackage="com.jmh.shiro.model"
    18. targetProject="src/main/java">
    19. <property name="enableSubPackages" value="false"/>
    20. <property name="constructorBased" value="true"/>
    21. <property name="trimStrings" value="false"/>
    22. <property name="immutable" value="false"/>
    23. javaModelGenerator>
    24. <sqlMapGenerator targetPackage="com.jmh.shiro.mapper"
    25. targetProject="src/main/java">
    26. <property name="enableSubPackages" value="false"/>
    27. sqlMapGenerator>
    28. <javaClientGenerator targetPackage="com.jmh.shiro.mapper"
    29. targetProject="src/main/java" type="XMLMAPPER">
    30. <property name="enableSubPackages" value="false"/>
    31. javaClientGenerator>
    32. <table schema="" tableName="t_sys_user" domainObjectName="User"
    33. enableCountByExample="false" enableDeleteByExample="false"
    34. enableSelectByExample="false" enableUpdateByExample="false">
    35. table>
    36. <table schema="" tableName="t_sys_permission" domainObjectName="Permission"
    37. enableCountByExample="false" enableDeleteByExample="false"
    38. enableSelectByExample="false" enableUpdateByExample="false">
    39. table>
    40. <table schema="" tableName="t_sys_role" domainObjectName="Role"
    41. enableCountByExample="false" enableDeleteByExample="false"
    42. enableSelectByExample="false" enableUpdateByExample="false">
    43. table>
    44. context>
    45. generatorConfiguration>

    4.8.1 添加Maven自动生成插件 

    命令如下:

    mybatis-generator:generate -e 

    好吧!我还是当个老保姆一步步带你们怎么添加好吧 [表情委屈委屈]

    4.8.1.1

     4.8.1.2 点击+号

    4.8.1.3 选择Maven

    4.8.1.4 注意!复制命令的时候不要多复制空

     4.8.1.5

    4.8.1.6 ok!下方就是生成成功啦 如果你没有像图中这个小企鹅的话你也可以忽略这个作用就是方便我们查看sql映射文件的代码...如果你想要这个功能的话下载Mybatis插件“ free mybatis plugins”如果没有这个插件的话就是版本问题就下载Mybatis插件‘’ MybatisX ”

    ok!ssm项目基本就搭建好了然后下方我们就测试一下吧 

     5. 使用junit and Tomcat分别测试是否搭建成功

      5.1 junit测试

      5.1.1 需要在Mapper层接口添加@Repository注解

    @Repository    将DAO类声明为Bean3  

       5.1.2 Service层代码 需在service层接口添加@Transactional注解

    • 可直接复制Mapper接口粘贴即可需修改@注解

     @Transactional 注解配置事务,个人感觉写XML配置声明式事务更加简单   

     @Transactional(readOnly = true) 在方法前面加上就代表是只读事务

    1. package com.jmh.ssm.service;
    2. import com.jmh.ssm.model.User;
    3. import org.springframework.stereotype.Repository;
    4. import org.springframework.stereotype.Service;
    5. import org.springframework.transaction.annotation.Transactional;
    6. @Transactional
    7. public interface IUserService {
    8. int deleteByPrimaryKey(Integer userid);
    9. int insert(User record);
    10. int insertSelective(User record);
    11. @Transactional(readOnly = true)
    12. User selectByPrimaryKey(Integer userid);
    13. int updateByPrimaryKeySelective(User record);
    14. int updateByPrimaryKey(User record);
    15. }

     5.1.3 Service.impl层代码 需在Service.impl层接口实现类添加@Service() 注解

    • 此时Service实现类需要依赖Mapper层接口 我们需要注入Mapper层接口添加@Resource注解 

    @Service() 通常作用在业务层  

    @Resource的装配顺序:
    1、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
    2、指定了name或者type则根据指定的类型去匹配bean
    3、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错

    1. package com.jmh.ssm.service.impl;
    2. import com.jmh.ssm.mapper.UserMapper;
    3. import com.jmh.ssm.model.User;
    4. import com.jmh.ssm.service.IUserService;
    5. import org.springframework.stereotype.Service;
    6. import javax.annotation.Resource;
    7. @Service
    8. public class UserServiceImpl implements IUserService {
    9. //注入
    10. @Resource
    11. private UserMapper userMapper;
    12. @Override
    13. public int deleteByPrimaryKey(Integer userid) {
    14. return 0;
    15. }
    16. @Override
    17. public int insert(User record) {
    18. return 0;
    19. }
    20. @Override
    21. public int insertSelective(User record) {
    22. return 0;
    23. }
    24. @Override
    25. public User selectByPrimaryKey(Integer userid) {
    26. return userMapper.selectByPrimaryKey(userid);
    27. }
    28. @Override
    29. public int updateByPrimaryKeySelective(User record) {
    30. return 0;
    31. }
    32. @Override
    33. public int updateByPrimaryKey(User record) {
    34. return 0;
    35. }
    36. }

     5.1.4 使用junit单元测试

    • 创建BaseTestCat类  

    创建BaseTestCat类需添加以下两个注解:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"classpath:spring.xml"})spring.xml文件对应你要映射的.xml文件名

    1. package com.jmh.mybatis.service.impl;
    2. import org.junit.Before;
    3. import org.junit.runner.RunWith;
    4. import org.springframework.test.context.ContextConfiguration;
    5. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    6. @RunWith(SpringJUnit4ClassRunner.class)
    7. @ContextConfiguration(locations={"classpath:spring.xml"})
    8. public class BaseTestCat {
    9. @Before
    10. public void setUp(){
    11. }
    12. }
    • 创建junit测试类需继承上方BaseTestCat类 重写BaseTestCat类里面的方法
    1. package com.jmh.ssm.service.impl;
    2. import com.jmh.ssm.model.User;
    3. import com.jmh.ssm.service.IUserService;
    4. import org.junit.Test;
    5. import javax.annotation.Resource;
    6. import static org.junit.Assert.*;
    7. public class UserServiceImplTest extends BaseTestCat{
    8. //注入
    9. @Resource
    10. private IUserService iUserService;
    11. @Override
    12. public void setUp() {
    13. super.setUp();
    14. }
    15. @Test
    16. public void deleteByPrimaryKey() {
    17. }
    18. @Test
    19. public void insert() {
    20. }
    21. @Test
    22. public void insertSelective() {
    23. }
    24. @Test
    25. public void selectByPrimaryKey() {
    26. User user = iUserService.selectByPrimaryKey(1);
    27. System.out.println(user);
    28. }
    29. @Test
    30. public void updateByPrimaryKeySelective() {
    31. }
    32. @Test
    33. public void updateByPrimaryKey() {
    34. }
    35. }
    • 随便测试一个方法成功就是成功!失败就是失败! 

     

     5.2 Tomcat测试

     5.2.1 前端代码(在WEB-INF下面创建一个jsp文件夹 在jsp文件夹里面创建一个index.jsp页面)

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: 蒋明辉
    4. Date: 2022/8/21
    5. Time: 2:59
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>搭建SSM项目title>
    12. head>
    13. <body>
    14. <h1>搭建SSM项目成功!h1>
    15. body>
    16. html>

     5.2.2 Controller层代码 

    1. package com.jmh.ssm.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. /**
    5. * Tomcat测试
    6. */
    7. @Controller
    8. public class SsmController {
    9. @RequestMapping("/")//请求路径:当前/是打开服务器自动请求的第一个页面
    10. public String toIndex(){
    11. return "index";//跳转视图名称
    12. }
    13. }

     5.2.3 搭建Tomcat服务器

     嘿嘿!现在最关键的时候到啦看看能不能第一时间访问index.jsp页面啦

    ok!访问成功 测试完毕 


  • 相关阅读:
    [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
    QT学习笔记1-Hello, QT
    MAX9295配置说明
    Allegro DVT与SiMa.ai携手优化嵌入式边缘应用的能效
    Python基础 --(1)Python概述
    【Excel】使用 SpringBoot 实现 Excel 文件的导入与导出
    【PG】PostgreSQL数据库管理
    JS有哪些基本数据类型,它们的区别?
    Vue模板语法(下)
    51单片机入门
  • 原文地址:https://blog.csdn.net/m0_63300795/article/details/126437605