IDEA搭建SSM框架【配置类、新手向】
创始人
2024-02-20 03:46:52
0

以下操作基于2020.3企业版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEgiWHwX-1669548886653)(assets/image-20221109105330-heilasm.png)]

1.创建Java Enterprise项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lii6FyNy-1669548886654)(assets/image-20221109105434-y39cakk.png)]

直接默认即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y35MWx5Y-1669548886654)(assets/image-20221109105622-fcd9xfy.png)]

输入项目相关信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5JGlWUW-1669548886655)(assets/image-20221109105713-igwb7w3.png)]

点击完成后,得到以下目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l4reuygh-1669548886655)(assets/image-20221109105757-r4cn7bg.png)]

2.搭建项目目录结构

java目录下

  • controller:实现控制转发,基本参数校验,不复杂的简单业务处理

  • config:配置类存放的地方

  • service:业务逻辑层

    • impl(实现层)
  • dao:数据持久层

  • entitry:实体类

  • resources

    • mappers(存放sql语句)
  • webapp

    • WEB-INF

      • views(视图的JSP文件)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dw9KBSKj-1669548886655)(assets/image-20221116105439-d9bmup8.png)]

3.导入依赖

pom.xml文件中导入SSM框架相关依赖

	org.springframeworkspring-jdbc5.3.23org.springframeworkspring-tx5.3.23org.springframeworkspring-test5.3.23testorg.springframeworkspring-webmvc5.3.23javax.servletjstl1.2javax.servlet.jsp.jstljstl-api1.2mysqlmysql-connector-java8.0.30org.mybatismybatis3.5.11org.mybatismybatis-spring2.0.7

导入完成后,点击右上角的更新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1WVSPDK7-1669548886655)(assets/image-20221109113134-v5rg43v.png)]

如果没有出现Spring Config,则检查一下是否正确安装了依赖了

4.通过类配置项目

创建类App

config目录下创建类App

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7mDx5B8v-1669548886656)(assets/image-20221116103236-ee5zteu.png)]

  • 添加注解@Configuration——表示为配置类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQz0ylJl-1669548886656)(assets/image-20221116103406-j9ofhna.png)]

  • 添加注解ComponentScan——扫描service
@ComponentScan(basePackages = "com.leo.SSM.service")

注意:

  • basePackages 配置:查看下图位置
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZRm3YXt-1669548886656)(assets/image-20221116103959-o9vgusq.png)]
  • 这里扫描的包对应位置也需要添加注解

    例如这里,我扫描了service,那与之对应的就需要在service的各个类中添加注解@Service

为防止后面忘记,先在service目录下创建一个service接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPnsGNDR-1669548886656)(assets/image-20221116105603-c5nohb4.png)]

service->impl下创建对应的实现类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bf5QETjB-1669548886657)(assets/image-20221116111944-erw6ogu.png)]

实现类中添加@Service注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VE2eecME-1669548886657)(assets/image-20221116112009-ew2qlnc.png)]

实现接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gU8skaxY-1669548886657)(assets/image-20221127115912-1bh4wjr.png)]

  • 添加注解@MapperScan——扫描dao
@MapperScan(basePackages = "com.leo.SSM.dao")

创建UserDao接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1dsc9LnT-1669548886657)(assets/image-20221012115126-rd0ld4f.png)]

添加注解@Mapper

package com.leo.SSM.dao;import org.apache.ibatis.annotations.Mapper;@Mapper
public class UserDao {
}
  • 添加注解——添加配置源(配置jdbc)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvSUgtBS-1669548886658)(assets/image-20221116105945-36gqupw.png)]

直接直接复制下列代码进入项目即可

@PropertySource("classpath:jdbc.properties")

创建jdbc配置文件

resources下创建jdbc.properties

选择Resource Bundle

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zw5gzdFY-1669548886658)(assets/image-20221116110150-t8atbxh.png)]

仅输入名称即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBnSqObt-1669548886658)(assets/image-20221116110226-v8001zd.png)]

创建完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwvCLEiz-1669548886658)(assets/image-20221116110240-8mktok3.png)]

进行配置

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///studb?useSSL=false
jdbc.username=你SQL的用户名
jdbc.password=SQL的密码
  • 开启事务管理

在App类中继续添加@EnableTransactionManagement注解,表示开启事务

配置类App

创建于jdbc对应的属性

    private String driver;private String url;private String userName;private String password;
  • 添加注解,设置值
@Value("${jdbc.driver}")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-he7WJPUf-1669548886658)(assets/image-20221116110655-wlypjiq.png)]

属性的最终配置

@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String userName;@Value("${jdbc.password}")private String password;

配置数据源

  • 创建方法,并添加@Bean注解——往IOC容器中放东西
@Beanpublic DataSource dataSource(){}
  • 创建一个dataSource并返回
DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(userName);dataSource.setPassword(password);return dataSource;

配置mybatis中的SqlSessionFacotry

  • 创建方法,添加注解
@Beanpublic SqlSessionFactory sqlSessionFactory(){}
  • 配置mybatis相关属性

    • 数据源
    • 映射包名
    • 对应sql存放位置
    • 映射关系(下划线改为小驼峰)
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource());
//        映射包名sqlSessionFactoryBean.setTypeAliasesPackage("com.leo.SSM.entity");PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:mappers/*.xml"));org.apache.ibatis.session.Configuration configuration = Objects.requireNonNull(sqlSessionFactoryBean.getObject()).getConfiguration();configuration.setMapUnderscoreToCamelCase(true);return sqlSessionFactoryBean.getObject();

配置事务

@Beanpublic PlatformTransactionManager transactionManager(){DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();transactionManager.setDataSource(dataSource());return transactionManager;}

配置Web-MVC

在config文件夹下创建类WebMvcConfig

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQ60y3Lh-1669548886659)(assets/image-20221116114030-qjbnc65.png)]

  • 添加注解@Configuration,声明配置类
import org.springframework.context.annotation.Configuration;@Configuration
  • 添加注解@EnableWebMvc——启动webMvc
import org.springframework.web.servlet.config.annotation.EnableWebMvc;@EnableWebMvc
  • 扫包与controller对应
import org.springframework.context.annotation.ComponentScan;@ComponentScan(basePack
ages = "com.leo.SSM.controller")

实现WebMvcConfigurer

public class WebMvcConfig implements WebMvcConfigurer {}

选择重写方法

ctrl+o选择以下方法进行重写

  • addViewControllers
  • configureViewResolvers

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjVchqPS-1669548886659)(assets/image-20221116115146-61ipcs8.png)]

添加视图解析器

  • 设置视图对应文件位置
  • 设置视图文件后缀
  • 设置视图解析器,支持JSTL
private ViewResolver viewResolver(){InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/views/");viewResolver.setSuffix(".jsp");viewResolver.setViewClass(JstlView.class);return viewResolver;}

注册视图解析器

configureViewResolvers方法中,进行视图解析器的注册

@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {
//        注册视图解析器registry.viewResolver(viewResolver());}

添加view的控制

在spring中,很可能出现很多仅需要页面跳转而没有具体业务逻辑的代码比如

@GetMapping('/login')public String login(){return "login";}

这样长久以往就会生成很多这样的空方法,因此我们需要通过SprIngMVC中的addViewControllers简化实现上述逻辑

  • 设置/对应的页面为login
@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("login");}

创建Controller

controller目录下创建UserController类,添加注解@Controller

package com.leo.SSM.controller;import org.springframework.stereotype.Controller;@Controller
public class UserController {
}

配置整体servlet

创建类AppInit

在config目录下创建AppInit类,并继承AbstractAnnotationConfigDispatcherServletInitializer

继承的类用于DispatcherServlet 初始化

DispatcherServlet:Spring MVC的核心组件,它是request首先到达的地方,负责在各个组件间传递加工

  • 完成servlet容器功能
  • 完成配置MVC基础功能
  • 完成配置DispatcherServletContextLoaderListener

ContextLoaderListener——Spring实现了Tomcat提供的ServletContextListener接口,写了一个监听器来监听项目启动。一旦项目启动,会触发ContextLoaderListener中的特定方法

实现其方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDA4UB8k-1669548886659)(assets/image-20221126230419-xfoxiwo.png)]

修改各方法逻辑

**getRootConfigClasses——**配置root上下文(数据源等)

这里直接从我们的APP中获取即可

@Overrideprotected Class[] getRootConfigClasses() {return new Class[]{App.class};}

**getServletConfigClasses——**配置dispatcher servlet(视图解析器)

这里从WebMvcConfig中获取

@Overrideprotected Class[] getServletConfigClasses() {return new Class[]{WebMvcConfig.class};}

getServletMappings——指定开始被servlet处理的url(默认设置为 /

@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}

5.实现login页面

WebMvcConfig.java文件配置下的prefix目录下创建文件,名称为login

<%--Created by IntelliJ IDEA.User: LeoDate: 2022/11/6Time: 15:37To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

Title




6.创建userController

UserController 添加方法

@PostMapping("/login")public String login(){return "index";}

因为在form表单中

  • action = login ----> (“/login”)
  • method=“post” —>@PostMapping

我们运行测试一下

请添加图片描述

当我们点击登录时,返回的页面就是index.jsp

当然,现在没有进行逻辑判断,但是实际上对于webmvc的配置已经成功

7.创建实体类

entity文件目录下创建与数据库对应的类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZqxqhbH-1669548886659)(assets/image-20221127114905-gkmig8l.png)]

8.实现UserDao

定义接口

首先我们需要实现登录接口,因此在UserDao中定义获取用户信息的接口

    UserInfo getUserInfo(@Param("userNumber") String userNumber , @Param("passwd") String passwd);

实现SQL

resources->mappers创建UserMapper.xml文件



selectpk_user_id,u_number,u_name,u_passwdfrom user_infowhere u_number = #{userNumber} and u_passwd = #{passwd}

9.实现UserService

UserService接口出定义方法

  • 返回类型——boolean
  • 传递参数
  • 方法名——login
package com.leo.SSM.service;import javax.servlet.http.HttpSession;
import java.util.List;public interface UserService {Boolean login(String userNumber , String passwd, HttpSession session, Model model);
}

定义属性

使用注解@Resource将userDAO交给Spring进行管理

@Resourceprivate UserDAO userDAO;

实现方法

@Overridepublic Boolean login(String userNumber, String passwd, HttpSession session) {UserInfo userInfo = null;userInfo = userDAO.getUserInfo(userNumber , passwd);if(null != userInfo){session.setAttribute("user",userInfo);return true;}else{model.addAttribute("msg","用户名或密码错误");return false;}}

10.实现UserController逻辑

添加属性——UserService

    @Resourceprivate UserService userService;

修改函数参数

与login.jsp中的name对应

login(String userName , String password , HttpSession session)

修改逻辑

直接调用UserService,判断返回值

  • true——进入index.jsp页面
  • false——停留在login.jsp页面
boolean isSuccess = userService.login(userName , password,session);if(isSuccess){return "index";}else{return "login";}

实现logout

  • 使session失效
  • 设置提示信息
  • 跳转login页面
@PostMapping("/logout")public String logout(HttpSession session, Model model){session.invalidate();model.addAttribute("msg","退出成功");return "login";}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...