# ssm_study **Repository Path**: qimu6/ssm_study ## Basic Information - **Project Name**: ssm_study - **Description**: SSM整合 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-26 - **Last Updated**: 2022-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XML方式ssm整合,完成基本业务 ## 1. 功能 | **功能** | 实现 | | :-----------: | :----------------------------------------------------------: | | **添加用户** | 控制层获取用户在页面输入的信息,调用service层接口,service层获取数据交互层的数据,进行用户的添加 | | **修改用户** | 与添加用户共用一个页面,用隐藏输入框获取用户id,通过id区分执行的操作是添加还是修改,并实现数据的回填 | | **模糊查询**y | 使用动态sql,减少代码,实现模糊查询 | | **批量删除** | 接收删除请求,执行删除操作,根据多选框可以实现批量删除的功能,因为是数组类型使用单独删除也是正常的 | | **分页** | 未完成 | ```java @Controller @RequestMapping("/user") public class IUserController { @Autowired private IUserService iUserService; @RequestMapping("/index") public String login() { return "login"; } /** * 显示用户,因为用的动态sql所以支持模糊查询 * @param model * @param user * @return */ @RequestMapping(value = "/userList") public String getAll(Model model,User user) { List users = iUserService.dynamicGetAllUser(user); model.addAttribute("list", users); return "user_list"; } /** * 修改用户 * 获取此时的用户id,根据id查询用户信息,进行数据的回填 * @param user * @param model * @return */ @RequestMapping("/update") public String update(User user, Model model) { User u = new User(); u.setId(user.getId()); List users = iUserService.dynamicGetAllUser(u); if (!users.isEmpty()) { model.addAttribute("user", users.get(0)); } return "doUpdateAndSave"; } /** * 添加用户 * @return */ @RequestMapping("/add") public String add() { return "doUpdateAndSave"; } /** * 执行修改或添加用户信息 * @param user * @return */ @RequestMapping(value = "doUpdateAndSave") public String doUpdateAndSave(User user) { /* user.getId() 是隐藏输入框的值,用户看不到,这个是表单执行添加或修改的关键. 添加功能是添加用户按钮a标签链接跳转过来的,并没有获取表单数据,在链接拼接上可以明显的看到, 所以此时的表单的各个组件value为空,user.getId()也必然为null,user.getId()为空时执行添加操作. ->>>>>>> 修改功能也是a标签链接跳转过来的,但是拼接了Id信息,当user.getId()不为空时执行修改操作. */ if (user != null && user.getId() != null) { iUserService.dynamicUpdateUserById(user); } else { iUserService.dynamicAddUser(user); } return "redirect:/user/userList"; } /** * 删除用户 * @param id * @return */ @RequestMapping("/delete") public String delete(Integer[] id) { if (id != null && id.length > 0) { iUserService.dynamicDeleteUserById(id); } return "redirect:/user/userList"; } } ``` ## 1. 添加依赖 ```xml org.springframework spring-context 5.3.1 org.springframework spring-webmvc 5.3.1 com.fasterxml.jackson.core jackson-databind 2.12.1 org.springframework spring-jdbc 5.3.1 org.mybatis mybatis-spring 2.0.6 junit junit 4.12 test org.springframework spring-test 5.3.1 test com.alibaba druid 1.0.9 org.springframework spring-aspects 5.3.1 org.mybatis mybatis 3.5.7 mysql mysql-connector-java 8.0.28 org.springframework spring-orm 5.3.1 log4j log4j 1.2.17 javax.servlet javax.servlet-api 3.1.0 provided com.github.pagehelper pagehelper 5.2.0 javax.servlet jstl 1.2 ``` ## 2. 配置文件 ### 2.1 配置 Web.xml ``` 1. 核心控制器 DispatcherServlet 2. ContextLoaderListener 3. 编码过滤器(放过滤器中最前) 4. 请发方法处理器 HiddenMethodFilter ``` ````xml ```XML characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true characterEncodingFilter /* hiddenHttpMethodFilter org.springframework.web.filter.HiddenHttpMethodFilter hiddenHttpMethodFilter /* dispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-config.xml 1 dispatcherServlet / org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:spring-config.xml ``` ```` ### 2.2 配置SprignMVC-config >1. Controller包的扫描 >2. 静态资源处理 >3. 视图控制器 >4. 注解驱动 ```xml ``` ### 2.3 Spring整合Mybatis和MVC的配置文件 >**配置分为三大部分:** > > **一: 1. 包扫描、排除@Controller** > >**二:事务相关** > >1. **事务管理器** >2. **事务注解驱动** > >**三:MyBaits需要的配置:** > >1. **引入 jdbc.properties** >2. **druid 数据源** >3. **SqlSessionFactoryBean 注册到IOC** >4. **产生的mapper代理类注册到IOC ----> (配置 MapperScannerConfigurer)** ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/smbms jdbc.username=root jdbc.password=1234 ``` ```xml ``` ### 2.4 Mabatis配置 ````xml ```XML ``` ```` ## 3. 日志文件 ### 3.1 log4j日志文件(druid/mybatis) >在 resources/ 下编写 log4j.xml ```xml ``` ### 3.2 lockback 日志(Spring/mybatis) >在 main/resources/ 下编写 logback.xml(固定名字) > > 在 test/resources/ 下编写 logback-test.xml(固定名字,单元测试会用) ````xml ```XML [%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n ``` ````