一、开发环境
项目管理: maven-3.6.0
后端服务器: tomcat-8.5.5
数据库: mysql-8.0.27
二、项目搭建
1.新建工程
点击File->New->Project开始新建
选择Maven骨架创建
给项目取个名字,并选择项目的存放路径,然后next
接下来配置自己下载的maven,如果maven中没有repository文件夹就新建一个,然后Finish
新建好的项目目录结构如下
完善项目结构
接下来完善一下项目目录结构,右键main->New->Directory
依次选择java、resources
依次创建controller层、service层、dao层、pojo层
2.配置tomcat服务
点击右上角configuration配置tomcat
点击+,选择tomcat
点击右下角Fix
再点击第二个,Apply一下,然后OK
配置好后可以看到自己的tomcat,接下来可以点击运行
启动后会打开如下网页
3.配置pom.xml文件
在pom.xml文件中引入本项目所需的相关依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--引入springMVC包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--引入spring框架对jdbc包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--引入数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--引入mybatis与spring连接包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.0</version>
</dependency>
<!--mybatis框架-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--引入数据库连接池包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--@ResponseBody注解标识该方法的返回值直接写回到HTTP响应体中去(而不会被被放置到Model 中或被解释为一个视图名),因此这里需要引入jar包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
</dependencies>
4.新建jdbc.properties文件
在resources下新建jdbc.properties文件,配置mysql参数
# 数据库驱动
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
# mysql用户,一般都是root
jdbc.username=root
# mysql登录密码,自定义
jdbc.password=111111
# mysql数据库,自定义
jdbc.url=jdbc:mysql://localhost:3306/dataSSM?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
5.创建相关xml文件
spring-context.xml Spring框架的核心配置文件,用于配置Spring容器,包括Bean的定义、依赖注入等
spring-mvc.xml Spring MVC框架的配置文件,用于配置MVC模式的各个组件,如视图解析器、控制器、拦截器等
spring-mybatis.xml 这个文件主要用于整合Spring和MyBatis,包括数据源的配置、事务管理器的配置等
mybatis.xml 这是MyBatis框架的配置文件,用于配置MyBatis的各种属性,如别名、映射文件、插件等
mapper文件夹 MyBatis框架中的一个目录,用于存放映射文件
mapper/demoMapper.xml 是一个映射文件,用于定义SQL语句和结果映射规则。在这个文件中,你可以编写各种SQL语句,如查询、插入、更新、删除等,并将它们与Java对象进行映射。通过这个文件,你可以在Java代码中调用这些SQL语句,实现对数据库的操作
通过resources->New->XML Configuration File->Spring Config创建spring-context.xml、spring-mvc.xml、spring-mybatis.xml等spring文件
接下来需要创建mybatis的配置文件mybatis.xml和映射文件demoMapper.xml,虽然都是xml文件,但是里面配置不同
在新建这两个文件前需要先创建好对应的模板(方便以后使用),按住快捷键Ctrl+Alt+S打开setting,搜索templat,选择File and Code Templates,新增模板,设置命名、文件类型、模板内容等
mybatis.xml文件
mybatis的模板内容如下:
<!--mybatis.xml-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--配置mybatis-->
<configuration>
<settings>
<!--开启mybatis懒加载功能-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--开启mybatis的基本日志功能,将执行的sql语句打印在控制中-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
DemoMapper.xml文件
mapper的设置方法和上面一样,模板内容为:
<!--DemoMapper.xml-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
这里的namespace后面会爆红,即使设置了命名也会,但是不影响使用
接下来新建mybatis.xml文件和demoMapper.xml文件了
6.配置spring-mybatis.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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: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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置mybatis对应当前项目结构的管理-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--将mybatis的配置引入-->
<property name="configLocation" value="classpath:mybatis.xml"/>
<!--将当前项目的数据源引入-->
<property name="dataSource" ref="dataSource"/>
<!--将当前项目的实体类引入到mybatis中-->
<property name="typeAliasesPackage" value="com.sy.pojo"/>
<!--将项目中的mybatis的映射文件引入当前mybatis中-->
<property name="mapperLocations">
<list>
<value>classpath*:mapper/*.xml</value>
</list>
</property>
</bean>
<!--开启使用mybatis的模板工具-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
</beans>
7.配置spring-mvc.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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: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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--开启springMVC对java文件的包扫描-->
<context:component-scan base-package="com.demo.*"/>
<!--开启springMVC对前端资源的扫描和解析-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--释放前端各类文件资源-->
<mvc:default-servlet-handler/>
<!--开启对springmvc当中请求注解的功能-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
</beans>
8.配置spring-context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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"
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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
">
<!--spring引入外部的配置文件-->
<context:property-placeholder location="classpath*:jdbc.properties"/>
<!--通过配置将是spring框架和mybatis框架进行整合-->
<import resource="spring-mybatis.xml"/>
</beans>
9.配置web.xml文件
(在webapp->WEB-INF下)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--将spring框架整合到当前的web项目中-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--添加web项目对springMVC的支持-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--在当前的servlet初始化过程中,需要添加一些基础参数-->
<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>
<!--将web项目的所有请求,都交给springMVC-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
10.启动tomcat测试配置
最后再次启动项目,如果弹出网页则表示SSM项目配置没有问题
三、样例测试
1.创建user表
在mysql数据库中随便创建一个用户user表
2.创建User对象
User.java文件
package com.demo.pojo;
/**
* @ClassName User
* @Description
* @Author Chen
* @Date 2024/4/14 0:33
* @Version 1.0
**/
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3.完善demoMapper.xml
demoMapper.xml文件中可以写mysql的SQL语句,这里通过user的username来查询用户
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="DemoMapper">
<select id="queryById" parameterType="com.demo.pojo.User" resultType="com.demo.pojo.User">
select * from user where username=#{username};
</select>
</mapper>
4.创建UserDao层
UserDao.java文件
package com.demo.dao;
import com.demo.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @ClassName DemoDao
* @Description
* @Author Chen
* @Date 2024/4/14 0:26
* @Version 1.0
**/
@Repository
public class DemoDao {
/*从spring容器中拿取类对象*/
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
// 通过username查询用户
List<User> queryById(User user){
return sqlSessionTemplate.selectList("DemoMapper.queryById",user);
}
}
5.创建Service抽象类
UserService.java
package com.demo.service;
import com.demo.pojo.User;
import java.util.List;
public interface DemoService {
List<User> queryById(User user);
}
实现UserService.java抽象类
UserServiceImpl.java
package com.demo.service.impl;
import com.demo.dao.DemoDao;
import com.demo.pojo.User;
import com.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName DemoServiceImpl
* @Description
* @Author Chen
* @Date 2024/4/14 0:49
* @Version 1.0
**/
@Service
public class DemoServiceImpl implements DemoService {
@Autowired
private DemoDao demoDao;
@Override
public List<User> queryById(User user) {
return demoDao.queryById(user);
}
}
6.创建Controller类
DemoController.java
package com.demo.controller;
import com.demo.pojo.User;
import com.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
/**
* @ClassName DemoController
* @Description
* @Author Chen
* @Date 2024/4/13 0:49
* @Version 1.0
**/
@Controller
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("/demo") // 请求路由
public ModelAndView getUserBy(ModelAndView modelAndView){
User user = new User();
// 设置username,以便后面查询
user.setUsername("admin");
// 通过username查询用户
List<User> users = demoService.queryById(user);
// 将查寻到的用户放进去,传入前端
modelAndView.addObject("users",users);
// 设置跳转页面名称
modelAndView.setViewName("demo");
return modelAndView;
}
}
7.编写demo.jsp
在webapp下创建一个view文件夹,再在view下创建一个demo.jxp文件,展示查询到的user数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
/*获取项目的根路径*/
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
/*basePath就是得到的跟路径类似于:http://localhost:8081/pinduoduo/*/
%>
<html>
<body>
<c:forEach items="${users}" var="user">
<h2>Hello World!</h2>
<h2>${user.username}:${user.password}</h2>
</c:forEach>
</body>
</html>
8.启动项目
启动项目,访问路径便可得到user数据