实验三 SSM框架整合实验

一、实验环境

Windows、IDEA2023.2.1、DataGrip2022.3.3、mybatis3.5.6、tomcat8.0.23

二、实验目的与要求

掌握 Spring MVC 框架的基本使用,并整合 Spring 框架和 MyBatis 框架实现简单的 Web 应用。

1、熟悉 SpringMVC 的基本工作原理;

2、掌握前端控制器的配置;

3、掌握后端控制器的编写;

4、掌握简单数据绑定;

5、掌握复杂数据绑定;

6、掌握 SSM 三大框架的整合。

三、实验步骤与结果(重点,应包含详细步骤、核心代码、结果截图等)

设计一个简单的学生信息管理系统,并使用 SSM 框架技术整合实现。要求能够通过 Web 页面添加、删除、修改和查询学生信息。自己编写相关的类、接口、配置文件和用户访问页面等。可参考如下 SQL 语句建表:

CREATE TABLE students (

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(20) NOT NULL,

age int(11) NOT NULL,

gender varchar(255) DEFAULT NULL,

number varchar(20) DEFAULT NULL,

address varchar(20) DEFAULT NULL,

status int(11) NOT NULL DEFAULT 1,

PRIMARY KEY (id) )

1、创建一个MySQL数据库ssm_student并创建student_tb表,将数据插入。

2、创建com.yin.domain包,在其中创建student POJO类,在其中定义各属性,并创建getter和setter方法。

package com.yin.domain;

public class Student {

    private int id;

    private String name;

    private int age;

    private String gender;

    private String number;

    private String address;

    private int status;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String getGender() {

        return gender;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }

    public String getNumber() {

        return number;

    }

    public void setNumber(String number) {

        this.number = number;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }

    public int getStatus() {

        return status;

    }

    public void setStatus(int status) {

        this.status = status;

    }

}

3、使用注解配置类型,创建com.yin.config包,在其中创建EncodingFilter、JdbcConfig、MyBatisConfig、ServletContainersIinitConfig、SpringConfig、SpringMvcConfig等java配置文件。

public class EncodingFilter implements Filter {

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        servletRequest.setCharacterEncoding("utf-8");

        servletResponse.setContentType("text/html;charset=utf-8");

        filterChain.doFilter(servletRequest,servletResponse);

}

@PropertySource("classpath:jdbc.properties")

public class JdbcConfig {

    @Value("${jdbc.driverClass}")

    private String driver;

    @Value("${jdbc.url}")

    private String url;

    @Value("${jdbc.username}")

    private String username;

    @Value("${jdbc.password}")

    private String password;

    @Bean("dataSource")

    public DataSource getDataSource(){

        DruidDataSource ds = new DruidDataSource();

        ds.setDriverClassName(driver);

        ds.setUrl(url);

        ds.setUsername(username);

        ds.setPassword(password);

        return ds;

    }

}

@MapperScan("com.yin.mapper")

public class MyBatisConfig {

    //配置分页拦截器

    @Bean

    public PageInterceptor pageInterceptor(){

        PageInterceptor pageInterceptor = new PageInterceptor();

        //分页插件配置

        Properties properties = new Properties();

        properties.setProperty("value","true");

        pageInterceptor.setProperties(properties);

        return pageInterceptor;

    }

    @Bean

    public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){

        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();

        ssfb.setDataSource(dataSource);

        ssfb.setTypeAliasesPackage("com.yin.domain");

        return ssfb;

    }

}

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class<?>[] getRootConfigClasses() {

        return new Class[]{SpringConfig.class};

    }

    protected Class<?>[] getServletConfigClasses() {

        return new Class[]{SpringMvcConfig.class};

    }

    protected String[] getServletMappings() {

        return new String[]{"/"};

    }

}

@Configuration

@ComponentScan("com.yin.service")

@Import({MyBatisConfig.class, JdbcConfig.class})

@EnableTransactionManagement    //事务管理

public class SpringConfig {

    //事务管理的配置

    @Bean

    public DataSourceTransactionManager transactionManager(DataSource dataSource){

        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();

        //配置数据源

        transactionManager.setDataSource(dataSource);

        return transactionManager;

    }

}

jdbc.username=root

jdbc.password=452372

jdbc.url=jdbc:mysql://localhost:3306/ssm_student

jdbc.driverClass=com.mysql.cj.jdbc.Driver

4、配置jdbc,properties文件以及service接口以及实现类servieImpl,并创建controller文件,编写前端代码。

用户登录界面:

学生信息添加:

学生信息删除:

 学生信息修改:

学生信息查询:

源程序均可正常运行:

四、讨论、心得(遇到的问题与解决办法等)

在本次实验中,我学会了分别使用基于xml和注解的方式对Bean进行装配,同时加深了对面向切面编程的认识和学习兴趣;在基于注解的方式进行面向切面编程时,我忘记加@Aspect注解,直接导致了运行结果没有环绕、开始和结束等各通知。我浪费了不少时间才注意到这个基础问题,加上这个注释后实验结果预期一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值