SpringMVC(1) SSM框架整合以及SpringMVC搭建细节

一.SSM框架整合步骤

1.新建maven-webapp工程,并引入坐标依赖

 
    
      org.springframework
      spring-beans
      4.3.18.RELEASE
    
    
    
      org.springframework
      spring-context
      4.3.18.RELEASE
    
    
    
      org.springframework
      spring-webmvc
      4.3.18.RELEASE
    
    
    
      org.mybatis
      mybatis
      3.4.6
    
    
    
      org.mybatis
      mybatis-spring
      1.3.2
    
    
    
      mysql
      mysql-connector-java
      5.1.38
    
    
    
      com.alibaba
      druid
      1.1.10
    
    
    
      org.springframework
      spring-jdbc
      4.3.18.RELEASE
    
    
    
      org.springframework
      spring-tx
      4.3.18.RELEASE
    

2.在web.xml中引入springMvc的前端控制器以及乱码的过滤器,并初始化spring的配置文件

注意:web.xml文件在项目启动时会自动加载




  Archetype Created Web Application
  
  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      utf-8
    
  
  
    characterEncodingFilter
    /*
  
  
  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      
      classpath:applicationConfig.xml
    
  
  
    dispatcherServlet
    
    /
  

3.配置Spring的配置文件,把相关的对象交给spring管理



    
    
        
    
    
    
    
    
        
        
        
        
    
    
    
        
        
        
        
        
        
    
    
    
        
        
        
        
    
    
    
        
    
    
   

4.配置SpringMVC的配置文件,把相关的对象交给spring管理

  • 静态资源请求问题:

             因为在web.xml中将前端控制器的映射请求设置为了"/",这样一来Spring MVC 将接收到的所有请求都看作是一个普通的请求,包括对于静态资源的请求。所有对于静态资源的请求都会被看作是一个普通的后台控制器请求,导致请求找不到而报 404 异常错误。

  • Spring MVC 在配置文件中提供了两种解决办法

                (1)使用标签配置过滤哪些具体静态资源类型,需要一个个配置,比较麻烦

                (2)使用标签。在 WEB 容器启动的时候会在上下文中定义一个 DefaultServletHttpRequestHandler,它会对DispatcherServlet的请求进行处理,过滤所有的静态资源,但是这样配置,所有的请求也会被当作静态资源过滤掉,因此我们需要配合使用开启注解配置。

  • SpringMVC的重要组件 

      (1)处理器映射器HandlerMapping:根据请求url查找匹配相应的handler处理器,可以有效防止请求被当作                   静态资源而过滤

      (2)处理器适配器HandlerAdapter:通过适配器调用执行相应的handler处理请求

      (3)视图解析器ViewResolver:解析返回结果,返回相应的view

  • 配置细节

      (1)传统方式:我们需要手动配置三大组件,交给spring来管理

      (2)开发方式:只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,注解驱动中自动帮我们配置了处理器映射器和处理器适配器,而省去了大段的xml配置。

  • 视图解析器:

 视图解析器可以配置也可以不配置,springmvc已经帮我们开启了一个默认的视图解析器
(1)当Action返回的是一个真实路径的时候("/success.html"),视图解析器可不进行配置
(2)当Action返回的是逻辑路径的时候("success"),我们必须要在配置文件中注册视图解析器并为该逻辑路径添加前缀和后缀




    
    
    
    


    
    

    
    

    
    

    
    

    
    

    

5.配置myBatis的配置文件




    
    
        
    

    
        
        
    

6.编写dao层接口和相应的mapper配置文件

@Repository
public interface IUserDao {
    /**
     * 查找所有用户
     * @return
     */
    public List findAll();

    /**
     * 根据用户名查找用户
     * @param uname
     * @return
     */
    public User findUserByName(String uname);

    /**
     * 保存用户
     * @param user
     */
    public void saveUser(User user);
}



    
    
        
        
        
    
    
    

    

    
        insert into user (uname,pwd) values (#{userName},#{passWord});
    

7.编写Service层接口和实现类

@Service
@Transactional
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Override
    public List showAllUsers() {
        return userDao.findAll();
    }

    @Override
    public User login(User user) {
        User loginuser =  userDao.findUserByName(user.getUserName());
        if(loginuser==null || !loginuser.getPassWord().equals(user.getPassWord())){
            return null;
        }else{
            return loginuser;
        }
    }

    @Override
    public void register(User user) {
         userDao.saveUser(user);
    }
}

8.编写Controller层,接收前端请求

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private IUserService userService;

    @RequestMapping("/show")
    public List showAllUsers(){
        return userService.showAllUsers();
    }

    @RequestMapping("/login")
    public String login(User user){
        User loginuser = userService.login(user);
        System.out.println(loginuser);
        if(loginuser==null)return "/fail.html";
        else return "/success.html";
    }

    @RequestMapping("/register")
    public String register(User user){
        userService.register(user);
        return "/success.html";
    }
}

开发方式搭配:

    (1)RequestBody注解+json转换+vue前端异步请求+纯html = 前端主动请求的异步开发

    (2) 不加返回视图modelAndView + session + jsp + jstl + jQuery

你可能感兴趣的:(-----SSM框架-----)