SpringMVC

SpringMVC,第1张

SpringMVC

文章目录
  • 前言
  • 一、SpringMVC 概述
    • 1.1 框架与设计模式
    • 1.2 MVC设计模式
    • 1.3 SpringMVC框架概述
    • 1.4 SpringMVC运行流程
  • 二、搭建SpringMVC
    • 2.1 导包
    • 2.2 DispatcherServlet
    • 2.3 开启 SpringMVC 注解
    • 2.4中文乱码处理
    • 2.5 控制器搭建
  • 三、接收请求
    • 3.1@RequestMapping
    • 3.2获取请求数据
  • 四、响应
    • 4.1@responseBody
    • 4.2使用步骤
  • 五、文件上传
  • 六、 拦截器
    • 5.1 实现HandlerInterceptor接口
    • 5.2注册拦截器
  • 总结


前言

作为Web前端框架的SpringMVC,是对Servlet的再封装,可以自动接收请求参数,提供了文件的上传与下载功能。作为SSM框架之一,SpringMVC封装了控制层,使前端与后端交互变得更为方便,提高了程序员的开发效率。


一、SpringMVC 概述 1.1 框架与设计模式

设计模式是对反复出现的问题的解决方案的描述,是一种思想
框架是已经用代码实现的,可以执行也可以复用
框架总是针对某一特定领域的,而设计模式则可以适用于各个应用


1.2 MVC设计模式

MVC设计模式是一种使用 Model View Controller( 模型-视图-控制器)设计创建 Web 应用程序的模式
1.Model(模型):
是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
2.View(视图):
是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
3.Controller(控制器):
是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

使用的MVC设计模式的目的:它将这些对象、显示、控制分离以提高软件的的灵活性和复用性


1.3 SpringMVC框架概述

springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整合。
springmvc 是一个基于 mvc 的 web 框架,方便前后端数据的传输
Spring MVC 拥有控制器,接收外部请求,解析参数传给服务层


1.4 SpringMVC运行流程


1. 用 户 向 服 务 器 发 送 请 求 , 请 求 被 Spring 前 端 控 制 Servelt DispatcherServlet 捕获;
2. 前端控制器DispatcherServlet接收请求后,调用处理器映射 HandlerMapping。 处理器映射器 HandlerMapping 根据请求的 url 找到处理该请求的处理器Handler(即Controller) , 将处理器Handler返回给前端控制器DispatcherServlet。
3. DispatcherServlet 根 据 获 得 的 Handler , 选 择 一 个 合 适 的 HandlerAdapter。
在填充 Handler 的入参过程中,根据你的配置,Spring 将 帮你做一些额外的工作:数据类型转换,数据封装
4.调用处理器相应的功能处理方法
5. Handler(自己的控制器)执行完成后,直接相应一个json格式的数据给用户(现在开发常用的做法)


二、搭建SpringMVC 2.1 导包
 
        
            org.springframework
            spring-webmvc
            5.2.2.RELEASE
        
2.2 DispatcherServlet
    
        application
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation 
            classpath:spring.xml
        
        0  
    
    
    
        application
        /
    

过滤静态资源文件:当 DispatcherServlet 的 url 配置为/时 需要添加此配置,能够访问静态资源
例如.jpg,.js,.css 带静态资源文件


2.3 开启 SpringMVC 注解
    
    
2.4中文乱码处理

我们发现在提交请求的时候,如果输入的是中文,处理器方法获取到之后是乱码。解决的方法就是添加一个过滤器,为 request 对象设置编码集,SpringMVC 中已经为我们提供了这 个过滤器,只需要在 web.xml 中配置好即可。

    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        characterEncodingFilter
        
@RequestMapping(value = "/login")
public class ControllerLogin {
    @Autowired
    LoginService loginService;
    @RequestMapping(value ="/login")
    public CommonMessage test(Manage manage, HttpSession httpSession) {
        try {
            Manage manageTemp = loginService.login(manage);

            if (manageTemp != null) {
                httpSession.setAttribute("manage", manageTemp);
                return new CommonMessage(200, "登录成功", manageTemp);
            } else {
                return new CommonMessage(300, "登录失败",(Manage)null);
            }
        } catch (Exception e) {
            return new CommonMessage(301, "登录失败", (Manage)null);
        }
    }
}

五、文件上传

1.导入上传下载所需 jar 文件

 
        
            commons-fileupload
            commons-fileupload
            1.3.3
        

2.文件解析器
在springMvc的配置文件中配置文件解析器

 
    
        
        
    

3.使用案例

 @RequestMapping(value ="/fileUpload")
    public CommonMessage fileUpLoad(@RequestParam("fileName") CommonsMultipartFile file,HttpSession httpSession){
       Manage manage = (Manage) httpSession.getAttribute("manage");

       File imagefile=new File("D:\iconimages\"+ manage.getAccount());
       if(!imagefile.exists()){
           imagefile.mkdir();
       }
       String newFileName=new StringUtil().newFileName(file.getOriginalFilename());
       File imageFile2=new File(imageSfile,newFileName);
       manage.setOldFileName(file.getOriginalFilename());
       manage.setNewFileName(newFileName);
        try {
            loginService.updateUser(manage);
            file.transferTo(imageFile2);
           return new CommonMessage(200, "上传成功", manage);
        } catch (IOException e) {
            e.printStackTrace();
            return new CommonMessage(300, "上传失败", (Manage) null);
        }
    }

后端提供了一个文件上传接口,当前端调用后端的接口上传文件时,先判断磁盘中中有没有该账号的文件夹,如果没有就创建一个,然后利用先前写好的StringUtil类,得到新文件名(当前时间加文件后缀名),把新文件名存入到数据库中,最后利file.transferTo(imageFile2) 把用户上传的文件存到文件夹中


六、 拦截器 5.1 实现HandlerInterceptor接口

SpringMVC 定义了拦截器接口 HandlerInterceptor 该接口中定义了三个方法,这三个方法的调用时在 SpringMVC 框架内部完成的, 调用这个三个方法的时候,其参数的值也是从框架内部传递进来的。

public class LoginInterceptor implements HandlerInterceptor {
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession httpSession=request.getSession();
        Manage manage = (Manage) httpSession.getAttribute("manage");
        if(manage !=null){
            return  true;
        }else{
            response.getWriter().println(203);
            return  false;
        }
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}
5.2注册拦截器
 
    
        
            
            
            
            
            
            
            
            
            
        
    

总结

本文主要介绍了SpringMVC的概述、运行流程、搭建以及接受请求和返回数据等内容。SpringMVC可以简化控制层的开发,使我们拜托手动获取请求参数的烦恼,极大的提高我们的开发效率。到此关于SSM三大框架的基本内容已经介绍完毕,在以后的学习中会把三个框架结合起来使用,使程序员可以专心于自己的业务代码。建议读者在练习中体会框架带来的便捷之处,同时深入学习框架的实现原理,加深理解。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5695721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存