1、在idea中创建项目
点击new-project,点击Maven项目,勾选 creat from archetype
,找到`maven-archetype-webapp
写好相关信息
点击下一步,需要检查maven环境
点击后下载对应的插件,选择项目地址。
开始下载资源,直到显示创建成功。
2、修改编译版本
修改jdk版本,从1.7改成1.8(本人jdk是1.8)
修改POM的加载文件:
在 settings中搜索 java Complier 把版本修改为1.8
找到project Struct 把jdk版本改为1.8
3、完善项目包
当前缺少以下内容:
java文件夹 和 resources文件夹,以及test文件夹。因此在modules模块中进行添加
右键即可床架文件夹
文件夹创建好后如下:
同时记得Mark便于管理(对应文件夹点击Mark as中的内容)。
此时项目结构就搭建好了
4、添加依赖
基于SSM项目 添加依赖(请根据实际项目需求添加,我给学生做演示的依赖有以下):
<dependencies>
<!--Spring核心容器-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring事务管理-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring的jdbc操作数据库的依赖,包含Spring自带数据源,jdbcTemplate-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring MVC的核心-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--MyBatis核心-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--MyBatis的分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
<!--MyBatis整合Spring的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.1</version>
</dependency>
<!--mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--Druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!--servlet-api :引入servlet的功能-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--jsp-api: jsp页面的功能包 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- JSTL标签库 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!--jackson坐标-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<!--日志开始-->
<!--引入日志的门脸-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<!-- 日志工具包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.10.0</version>
</dependency>
<!--日志核心包-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
刷新maven后即可完成依赖引入
5、配置mybatis文件
因大部分内容会加载到spring的上下文中,故mybatis.xml留了一部分内容用于演示。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--root tag -->
<configuration>
<!--处理数据库和类之间的字段关系-->
<settings>
<!--格式-->
<!-- <setting name="" value=""/>-->
<setting name="mapUnderscoreToCamelCase" value="true" />
<!--缓存开启-->
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
6、配置Spring 上下文加载文件
在创建spring config文件
我命名为了spring-mvc.xml
文件中预加载以下配置内容:JDBC、视图解析器、注解驱动
JDBC(Mapper接口版本)
<!--数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!--注意版本 如果是 com.mysql.jdbc.Driver 可能提示加载失败-->
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/cloudlibrary?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false"></property>
<property name="username" value="root"></property>
<property name="password" value="MYSQL"></property>
</bean>
<!--session工厂-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--别名的路径扫描-->
<!--<property name="typeAliasesPackage" value="com.jycj.pojo"></property>-->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!--扫描接口生成代理实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.jycj.mapper"></property>
</bean>
注意:
1、Driver Class Name 如果是 `com.mysql.jdbc.Driver` 可能提示加载失败
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2、在xml中 & 需要转义(用在url中)
3、一定要配置生成的代理实现类,否则spring加载会失败;无法初始化Mapper接口
视图解析器
配置页面存放路径(以JSP为例)
<!--配置视图解析器开始-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--配置视图解析器结束-->
这样的话扫描的路径会在webapp文件夹下的/WEB-INF/下的pages路径 注意“/”的位置
配置注解驱动
<!--处理编码以及json串的问题-->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
<value>text/html;charset=utf-8</value>
<!-- application 可以在任意 form 表单里面 enctype 属性默认找到
<value>application/x-www-form-urlencoded</value>
-->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
如果mvc提示下划线标红,记得导入依赖
7、配置web.xml
主要是加载前端控制器和编码的过滤
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Web Application</display-name>
<filter>
<filter-name>encoding</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>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<!--配置Spring MVC 前端控制器-->
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 配置初始化参数,用于读取 Spring MVC 的配置文件 -->
<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>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这样可以由Spring帮助我们进行请求路径的匹配。
注意加载spring-mvc.xml一定要和你的加载文件名称和路径一致,否则报错
classpath:是从resources包开始查找的
8、创建业务代码简单运行(根据自身业务选择)
配置数据库
根据自身业务配置;我的数据库加载了部分内容:
创建User类
完成属性和注入
创建UserMapper接口
根据自身业务处理即可
完成业务代码编写:
查询用户和新增用户
创建UserService接口和实现类
简单模拟业务内容查询,登录,新增:
配置实现类:
创建UserController控制器
简单返回JSON数据即可。
因在spring中配置了对应的JSON配置 所以直接返回的user对象会被解析成json。
9、添加自动扫描
在spring-mvc.xml中添加对应的扫描内容。
9、测试运行代码
配置tomcat Server
运行结果:根据访问路径完成数据回复。
补充:修改mybatis-config和spring-mvc.xml 实现配置文件记载SQL
1、重新修改spring-mvc.xml文件,用于加载mapper地址
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--别名的路径扫描-->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!--扫描mapper路径-->
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
<!--设置实体包路径-->
<property name="typeAliasesPackage" value="com.jycj.pojo"></property>
</bean>
2、添加mapper文件
注意命名空间要对应到接口中
3、修改mapper只需要抽象方法即可。
以上