ssm整合

SSM整合笔记

整合Spring

  1. 编写xml配置文件,开启注解扫描(指定Controller注解不扫描)

     
         
         
         
         
    
  2. 在业务层的实现类上编写Spring注解,如:

     @Service("accountService")
     public class AccountServiceImpl implements AccountService
    
  3. Spring整合完成,测试一下(非必须):

     @Test
         public void run1(){
             ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
             AccountService as = (AccountService) ac.getBean("accountService");
             as.findAll();
         }
    

整合SpringMVC

  1. 在web.xml中配置前端控制器和中文乱码过滤器

     
       
         dispatcherServlet
         org.springframework.web.servlet.DispatcherServlet
         
         
           contextConfigLocation
           classpath:springmvc.xml
         
    
         
         1
       
       
       
         dispatcherServlet
         /
       
       
       
       
         characterEncodingFilter
         org.springframework.web.filter.CharacterEncodingFilter
         
           encoding
           UTF-8
         
       
    
       
         characterEncodingFilter
         /*
       
    
  2. 编写springmvc.xml配置文件,内容包括

     1. 开启注解扫描,只扫描Controller注解
     2. 配置视图解析器对象
     3. 过滤静态资源
     4. 开启SpringMVC注解的支持
    
     
     
         
     
     
     
        
         
     
     
     
     
     
     
     
    
  3. 编写web层业务逻辑

     @Controller
     @RequestMapping("/account")
     public class AccountController {
    
         @RequestMapping("/findAll")
         public String findAll(){
             System.out.println("表现层:查询所有账户》。。");
             return "list";
         }
     }
     //在index.xml中跳转进行测试:测试
    

Spring和SpringMVC两者的整合

》我们知道,在web.xml中前端控制器中加载了spingmvc.xml,但是spring的配置文件还没有加载
》所以,需要在web.xml中配置Spring监听器,去加载applicationContext.xml

  1. 在web.xml配置文件中配置Spring的监听器:

     
     
     org.springframework.web.context.ContextLoaderListener
     
     
     contextConfigLocation
     classpath:applicationContext.xml
     
    
  2. 在web层通过依赖注入,将service层对象注入:

     @Controller
     @RequestMapping("/account")
     public class AccountController {
    
         @Autowired
         private AccountService accountService;  //依赖注入
    
         @RequestMapping("/findAll")
         public String findAll(){
             System.out.println("表现层:查询所有账户》。。");
             //调用service层方法
             accountService.findAll();
             return "list";
         }
     }
    

mybatis

  1. 使用注解编写dao层接口的sql语句

     public interface AccountDao {
         //查询所有
         @Select("select * from account")
         List findAll();
         //保存账户信息
         @Insert("insert into account (name,money) values (#{name},#{money})")
         void saveAccount(Account account);
     }
    
  2. 编写SqlMapConfig.xml配置文件

     
     
    
     
         
         
             
                 
                 
                     
                     
                     
                     
                 
             
         
         
         
             
             
             
             
         
     
    
  3. 编写测试类(非必须)

     public class TestMybatis {
         @Test
         public void testMybatis() throws Exception {
             //加载配置文件
             InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
             //创建SqlSessionFactory对象
             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
             //创建SqlSession对象
             SqlSession sqlSession = factory.openSession();
             //获取代理对象
             AccountDao dao = sqlSession.getMapper(AccountDao.class);
             //查询所有数据
             List list = dao.findAll();
             for (Account account : list) {
                 System.out.println(account);
             }
             //关闭资源
             sqlSession.close();
             in.close();
         }
     }
    

整合mybatis

思路:现在需要将获取到的代理对象,存入容器中,在service中获取到dao层的代理对象,调用dao层代理对象的方法,如何操作呢?
答案:在业务层service的配置文件applicationContext.xml中配置

  1. 编写applicationContext.xml配置文件:

     
     
    
         
         
             
             
         
    
    
         
         
         
             
             
             
             
         
         
         
             
             
         
         
         
             
         
     
    
  2. 此时,之前编写的SqlMapConfig.xml就没有用处了,可以删掉

  3. 在service层注入dao代理对象

     @Service("accountService")
     public class AccountServiceImpl implements AccountService {
    
         @Autowired
         private AccountDao accountDao; //注入代理对象
    
         @Override
         public List findAll() {
             System.out.println("业务层:查询所有账户信息...");
             return accountDao.findAll();
         }
    
         @Override
         public void saveAccount(Account account) {
             System.out.println("业务层:保存账户");
             accountDao.saveAccount(account);
             //这里没有添加事务,并不会真的保存到数据库
         }
     }
    
  4. 整合完成,此时我们在web层可以将数据,转发到页面中去(通过Model)

     @Controller
     @RequestMapping("/account")
     public class AccountController {
    
         @Autowired
         private AccountService accountService;
    
         @RequestMapping("/findAll")
         public String findAll(Model model){
             System.out.println("表现层:查询所有账户》。。");
             //调用service层方法
             List list = accountService.findAll();
             model.addAttribute("list",list);
             return "list";
         }
     }
     
     //页面展示代码
     <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
     <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     
     
         Title
     
     
         

    查询所有账户...

    <%--${list}--%> ${account.name}

整合mybatis框架-事务管理

  1. 在applicationContext.xml中配置事务管理

     
     
     
         
     
     
     
         
             
             
         
     
     
     
         
     
     
     
     //测试 前端页面
     

    测试保存(事务管理)

    姓名:
    金额:

    //web层 @RequestMapping("/saveAccount") public void saveAccount(Account account, HttpServletRequest request, HttpServletResponse response) throws IOException { System.out.println("表现层:保存账户》。。"); //调用service层方法 accountService.saveAccount(account); response.sendRedirect(request.getContextPath()+"/account/findAll"); //重定向 return; }

你可能感兴趣的:(ssm整合)