【SSM整合例子: 课程信息查询】超详细教程!!!

一、创建一个maven项目

image-20221126213435857

image-20221126213547729

image-20221126213630656




二、导入maven依赖

image-20221126213916457

<packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--springmvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Mybatis核心 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!--mybatis和spring的整合包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
        <!-- junit测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <!-- log4j日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
        <!-- 日志 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- ServletAPI -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- Spring5和Thymeleaf整合包 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
        <!--自动生产setter和getter-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>
    </dependencies>

定义版本号:

<spring.version>5.3.1</spring.version>

image-20221126214144376



点击下载依赖:

image-20221126214006536




三、配置Web.xml文件

①进入项目结构这里,创建web.xml文件

image-20221126214455652

image-20221126214736410




定义web.xml的路径,在项目名后插入\src\main\webapp , 然后点Apply ,以及OK

image-20221126214935592

然后就发现有了web.xml文件:

image-20221126215155040




②配置web.xml文件

在web.xml文件中插入过滤器以及主要servlet:爆红没关系,因为有文件还没创建。

image-20221126215428564

<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>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<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>

<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:springmvc.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>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>



四、创建并配置springmvc.xml文件

resource根目录下鼠标右键创建springmvc.xml文件。

image-20221126215803444

springmvc.xml文件里配置:爆红不要紧,将鼠标移到爆红的地方Alt+Enter,

image-20221126220331541

<context:component-scan base-package="com.ssm.controller"/>

<!-- 配置Thymeleaf视图解析器 -->
<bean id="viewResolver"
      class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    <property name="order" value="1"/>
    <property name="characterEncoding" value="UTF-8"/>
    <property name="templateEngine">
        <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
            <property name="templateResolver">
                <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                    <!-- 视图前缀 -->
                    <property name="prefix" value="/WEB-INF/templates/"/>
                    <!-- 视图后缀 -->
                    <property name="suffix" value=".html"/>
                    <property name="templateMode" value="HTML5"/>
                    <property name="characterEncoding" value="UTF-8" />
                </bean>
            </property>
        </bean>
    </property>
</bean>

<mvc:annotation-driven/>

<mvc:default-servlet-handler/>

<mvc:view-controller path="/" view-name="input"/>

<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>



五、创建课程实体类:

先在MySQL数据库创建一个表:

image-20221126232113586

建表代码如下:

create table course(
c_id int(11) not null auto_increment,
c_name varchar(10),
teacher varchar(10),
c_hour int(4),
credit int(4),
primary key(c_id)
)DEFAULT CHARSET=utf8;

insert into course(c_name,teacher,c_hour,credit) 
values("JavaEE实验","肖帮主",16,1);
insert into course(c_name,teacher,c_hour,credit) 
values("刑法与法律","张三",48,5);
insert into course(c_name,teacher,c_hour,credit) 
values("Java基础","肖老师",32,3);
insert into course(c_name,teacher,c_hour,credit) 
values("JavaEE","郭标",32,2.5);

对应的实体类代码如下:

image-20221126221604497

代码如下:

package com.ssm.pojo;

public class Clazz {

    private Integer cId;    //课程id

    private String cName;   //课程名

    private String teacher; //课程教师

    private Integer cHour;  //学时

    private Integer credit; //学分

    public Clazz() {
    }

    public Clazz(Integer cId, String cName, String teacher, Integer cHour, Integer credit) {
        this.cId = cId;
        this.cName = cName;
        this.teacher = teacher;
        this.cHour = cHour;
        this.credit = credit;
    }

    public Integer getcId() {
        return cId;
    }

    public void setcId(Integer cId) {
        this.cId = cId;
    }

    public String getcName() {
        return cName;
    }

    public void setcName(String cName) {
        this.cName = cName;
    }

    public String getTeacher() {
        return teacher;
    }

    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }

    public Integer getcHour() {
        return cHour;
    }

    public void setcHour(Integer cHour) {
        this.cHour = cHour;
    }

    public Integer getCredit() {
        return credit;
    }

    public void setCredit(Integer credit) {
        this.credit = credit;
    }

    @Override
    public String toString() {
        return "Clazz{" +
                "cId=" + cId +
                ", cName='" + cName + '\'' +
                ", teacher='" + teacher + '\'' +
                ", cHour=" + cHour +
                ", credit=" + credit +
                '}';
    }
}



六、创建Mapper接口和xml文件:

我们分别在根目录javaresource下创建有相同com.ssm.mapper包名的mapper:

注意:

javacom.ssm.mapper的CourseMapper是接口

resourcecom.ssm.mappe的CourseMapper.xml是xml文件

image-20221126222454294

代码如下:

CourseMapper接口:

package com.ssm.mapper;

import com.ssm.pojo.Clazz;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CourseMapper {
    List<Clazz> getClazzByMoHu(@Param("cname")String uname);
}

CourseMapper.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="com.ssm.mapper.CourseMapper">

    <select id="getClazzByMoHu" resultType="com.ssm.pojo.Clazz">
        select * from course where c_name like concat('%',#{cname},'%')
    </select>

</mapper>



七、创建配置文件

①创建Mybatis配置文件

resource根目录下创建mybatis-config.xml配置文件,然后填下下面代码:

image-20221126223720246

代码如下所示:

<?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">

<configuration>
   
    <settings>
        <!--将下划线映射为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--按需加载-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>

</configuration>

②创建jdbc数据库信息文件

创建数据库连接信息文件jdbc.properties

image-20221126224049964

代码如下:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm
jdbc.username=root
jdbc.password=root

因为我使用的是MySQL5.7版本,如果用的是MySQL8.0以上版本的话,需要在url后加上?serverTimezone=UTC,如下所示:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=root

③创建日志配置文件

创建log4j的日志配置文件,用于输出相应的日志信息:有红色报错不要紧,可以运行。

image-20221126224431976

代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

④创建Spring核心配置文件

配置Spring核心配置文件:

image-20221126224842245

代码如下所示:

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

    <!--扫描组件(除了控制层)-->
    <context:component-scan base-package="com.ssm">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--引入数据库配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

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

    <!--配置事务管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--开启事务注解驱动
        将使用注解@Transactional标识的方法或类中所有的方法进行事务管理
    -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--配置SqlSessionFactoryBean,可以直接在Spring的IOC中获取SqlSessionFactory对象.-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--设置MyBatis核心配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--设置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--设置类型别名-->
        <property name="typeAliasesPackage" value="com.ssm.pojo"/>
        <!--设置类名别名所对应的包,当接口与Maper文件路径不一致时设置-->
        <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"/>
    </bean>

    <!--扫描mapper接口,获取所有mapper接口的代理实现类对象,并且将这写对象交给ioc容器管理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ssm.mapper"/>
    </bean>

</beans>

八、创建Service层

ssm目录下创建service包,接着在该包下创建CourseService接口,以及CourseService接口的实现类CourseServiceImpl

image-20221126225528416

代码如下:

CourseService:

package com.ssm.service;

import com.ssm.pojo.Clazz;

import java.util.List;

public interface CourseService {

     /**
     * 根据课程名进行模糊查询
     * @param uname
     * @return
     */
    List<Clazz> getClazzByMoHu(String cname);
}

CourseServiceImpl:

package com.ssm.service;

import com.ssm.mapper.CourseMapper;
import com.ssm.pojo.Clazz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class CourseServiceImpl implements CourseService{
    @Autowired
    private CourseMapper courseMapper;

    /**
     * 根据课程名进行模糊查询
     * @param uname
     * @return
     */
    @Override
    public List<Clazz> getClazzByMoHu(String uname) {
        List<Clazz> ClazzByMoHu = courseMapper.getClazzByMoHu(uname);
        return ClazzByMoHu;
    }

}



九、创建Controller控制层

java根目录这里鼠标右键创建一个控制层包名com.ssm.controller

image-20221126220602042

然后在这个包下创建CourseController课程表控制器类

image-20221126220914266

CourseController代码如下所示:

package com.ssm.controller;

import com.ssm.pojo.Clazz;
import com.ssm.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

@Controller
public class CourseController {

    @Autowired
    private CourseService courseService;

    @PostMapping("/search/coursename")
    public String searchUsername( String coursename, Model model) {
        List<Clazz> list = courseService.getClazzByMoHu(coursename);
        model.addAttribute("list",list);
        return "course_list";
    }
}



十、创建Html显示页面

webapp下的WEB-INF目录下创建templates目录,该目录包含两个html文件:

分别是查询课程页面input.html以及查询结果页面course_list.html

image-20221126230645007

代码如下所示:

input.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>查询课程</title>
</head>
<body>
<h1>模糊查询课程名</h1>
<form th:action="@{/search/coursename}" method="post">
    课程名:<input type="text" name="coursename"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

course_list.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>课程列表</title>
<!--    <link rel="stylesheet" th:href="@{/static/css/index_work.css}">-->
</head>
<body>
<div id="app">
    <table>
        <tr>
            <th colspan="6">查询到的课程信息列表</th>
        </tr>
        <tr>
            <th>课程ID</th>
            <th>课程名</th>
            <th>任教老师</th>
            <th>学时</th>
            <th>学分</th>
        </tr>
        <tr th:each="clazz,status : ${list}">
            <td th:text="${status.count}"></td>
            <td th:text="${clazz.cName}"></td>
            <td th:text="${clazz.teacher}"></td>
            <td th:text="${clazz.cHour}"></td>
            <td th:text="${clazz.credit}"></td>
        </tr>
    </table>
</div>

</body>
</html>



十一、配置Tomcat

点击这里Add Configuration

image-20221126231059814

接着点击+

image-20221126231159485

找到Tomcat,选择Local

image-20221126231242190

接着点击Deployment:

image-20221126231337594

继续点击+以及Artifact

image-20221126231429755

选择第二个并点击OK:

image-20221126231509477

最后点击ApplyOK即可

image-20221126231605993

十二、启动项目

点击启动

image-20221126231650469

弹出页面:

image-20221126231803126

输入Java点击提交进行查询,得到如下所示:

image-20221126231906352




大功告成!!!谢谢阅读,如有错误,请指正,谢谢啦!!




  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值