SpringMVC原理分析 | 数据处理:ModelAndView

这篇具有很好参考价值的文章主要介绍了SpringMVC原理分析 | 数据处理:ModelAndView。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringMVC原理分析 | 数据处理:ModelAndView

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


重定向和转发

ModelAndView

设置ModelAndView对象,根据view的名称、视图解析器跳转到指定的页面

页面:{视图解析器前缀}+ viewName +{视图解析器后缀}

  • ​ springmvc-servlet.xml
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
  • Controller类
//实现了Controller类说明这就是控制器
public class ControllerTest1 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //创建模型和视图对象
        ModelAndView modelAndView = new ModelAndView();
        封装数据,向模型添加属性msg与值,可以在jsp页面取出、渲染
        modelAndView.addObject("msg","ControllerTest1");
        //视图跳转
        modelAndView.setViewName("test");

        //返回视图模型对象
        return modelAndView;
    }
}

ServletAPI

设置ServletAPI,不需要视图解析器

通过HttpServletResponse进行输出、重定向、转发

@Controller
public class ModelTest1 {

    @RequestMapping("/m1/t1")
    public String test(HttpServletRequest request, HttpServletResponse response){

        HttpSession session = request.getSession();
        System.out.println(session.getId());
        return "test";
    }
}

SpringMVC

通过SpringMVC实现转发和重定向,不需要视图解析器

  • 转发
@Controller
public class ModelTest1 {

    @RequestMapping("/m1/t1")
    public String test(Model model){
        //转发
        model.addAttribute("msg","ModelTest");
        return "/WEB-INF/jsp/test.jsp";
        //return "forward:/WEB-INF/jsp/test.jsp";
    }
}
  • 重定向
@Controller
public class ModelTest1 {

    @RequestMapping("/m1/t1")
    public String test(Model model){
        //重定向
        model.addAttribute("msg","ModelTest");
        return "redirect:/index.jsp";
    }
}

数据处理

接受请求参数及数据回显,处理提交数据

处理提交数据

  • 提交的域名称和处理方法的参数名一致
@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/t1")
    public String test(String name, Model model) {

        //接受前端参数
        System.out.println("接收到前端的参数为:" + name);

        //将放回结果传递给前端
        model.addAttribute("msg",name);

        //跳转视图
        return "test";
    }
}
  • 提交的域名称和处理方法的参数名不一致
@RequestParam("username")
@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/t1")
    public String test(@RequestParam("username") String name, Model model) {

        //接受前端参数
        System.out.println("接收到前端的参数为:" + name);

        //将放回结果传递给前端
        model.addAttribute("msg",name);

        //跳转视图
        return "test";
    }
}
  • 提交是一个对象(参数名和对象名需要一致,否则返回Null)
  • User类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}
  • UserController类
@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping("/t2")
    public String test2(User user){
        System.out.println(user);
        return "test";
    }
    
}
//输出结果:User(id=1, name=weishuo, age=18)

数据显示到前端

ModelAndView

//实现了Controller类说明这就是控制器
public class ControllerTest1 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //创建模型和视图对象
        ModelAndView modelAndView = new ModelAndView();
        封装数据,向模型添加属性msg与值,可以在jsp页面取出、渲染
        modelAndView.addObject("msg","ControllerTest1");
        //视图跳转
        modelAndView.setViewName("test");

        //返回视图模型对象
        return modelAndView;
    }
}

Model

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

    @GetMapping("/t1")
    public String test(@RequestParam("username") String name, Model model) {

        //接受前端参数
        System.out.println("接收到前端的参数为:" + name);

        //将放回结果传递给前端
        model.addAttribute("msg",name);

        //跳转视图
        return "test";
    }
}

ModelMap

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

    @RequestMapping("/t3")
    public String test3(ModelMap map){
        map.addAttribute("msg","HELLO ModelMap");
        return "test";
    }
    
}

总结

  • Model 只有寥宴几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解
  • ModelMap 继承了 LinkedMap,除了实现了自身的一些方法,同样的继承LinkedMap 的方法和特性
  • ModelAndview 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转

过滤器解决乱码

Javaweb过滤器

  • EncodingController类
@Controller
public class EncodingController {
    
    @GetMapping("/e/t1")
    public String test1(String name, Model model, HttpServletRequest request) throws UnsupportedEncodingException {
        request.setCharacterEncoding("utf-8");
        System.out.println(name);
        model.addAttribute("msg",name);
        return "test";
    }
}
  • EncodingFilter过滤器
public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}
  • web.xml配置过滤器
<filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.wei.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/</url-pattern>
</filter-mapping>

SpringMVC过滤器

SpringMVC中提供了过滤器,可以在web.xml中配置

  • EncodingController类
@Controller
public class EncodingController {

    @RequestMapping("/e/t1")
    public String test1(String name, Model model, HttpServletRequest request) throws UnsupportedEncodingException {
        request.setCharacterEncoding("utf-8");
        System.out.println(name);
        model.addAttribute("msg",name);
        return "test";
    }
}
  • web.xml配置SpringMVC乱码过滤器
<!--配置SpringMVC乱码过滤器-->
<filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


SpringMVC原理分析 | 数据处理:ModelAndView文章来源地址https://www.toymoban.com/news/detail-515303.html

到了这里,关于SpringMVC原理分析 | 数据处理:ModelAndView的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringMVC JSON数据处理见解6

    springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据: @RequestBody:作用是接收前端ajax传递给后端的json字符串,并将json格式的数据转为java对象 @ResponseBody:作用是将java对象转为json格式的数据传递给前台

    2024年01月18日
    浏览(34)
  • Hadoop3.0大数据处理学习3(MapReduce原理分析、日志归集、序列化机制、Yarn资源调度器)

    前言:如果想知道一堆牌中有多少张红桃,直接的方式是一张张的检查,并数出有多少张红桃。 而MapReduce的方法是,给所有的节点分配这堆牌,让每个节点计算自己手中有几张是红桃,然后将这个数汇总,得到结果。 官方介绍:MapReduce是一种分布式计算模型,由Google提出,

    2024年02月08日
    浏览(55)
  • 大数据技术原理与应用 概念、存储、处理、分析和应用(林子雨)——第三章 分布式文件系统HDFS

    大数据要解决数据存储问题,所以有了分布式文件系统(DFS),但可能不符合当时的一些应用需求,于是谷歌公司开发了GFS(Google file System)。GFS是闭源的,而HDFS是对GFS的开源实现。 1.GFS和DFS有什么区别? GFS(Google File System)和DFS(Distributed File System)都是分布式文件系统,

    2024年02月03日
    浏览(84)
  • SpringMVC之JSON数据返回与异常处理机制

    目录 一.SpringMVC的JSON数据返回 1.导入Maven依赖 2.配置spring-mvc.xml 3.@ResponseBody注解的使用 3.1案例演示 1.List集合转JSON  2.Map集合转JSON  3.返回指定格式String 4. @ResponseBody用法  5.Jackson 5.1介绍 5.2常用注解 二.异常处理机制  1.为什么要全局异常处理 2.异常处理思路 3.SpringMVC异常分类

    2024年02月08日
    浏览(41)
  • “深入理解SpringMVC的JSON数据返回和异常处理机制“

    在现代Web开发中,SpringMVC是一个广泛使用的框架,它提供了丰富的功能和灵活的配置选项。本文将深入探讨两个重要的主题:SpringMVC中的JSON数据返回和异常处理机制。我们将逐步介绍相关的配置和使用方法,并通过案例和综合实例来加深理解。 1.1 导入依赖 1.2 配置弹簧-MVC

    2024年02月08日
    浏览(33)
  • SpringMVC之JSON数据返回与异常处理机制---全方面讲解

         在Spring MVC中,当需要将数据 以JSON格式返回给客户端时 ,可以使用 @ResponseBody注解或@RestController注解将Controller方法的返回值直接转化为JSON格式并返回 。这使得开发者可以方便地将Java对象转换为JSON,并通过HTTP响应返回给客户端。Spring MVC框架会自动地处理这一转换过程

    2024年02月07日
    浏览(40)
  • 一种用于态势评估的安全数据处理系统(JSP+java+springmvc+mysql+MyBatis)

    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。   在复杂多变的安全环境中,对各种安全数据进行实时有效的态势评估对于保障国家安全、社会稳定和人民生命财产安全具有重要意义。然而,传统的安全数据处理系统往往存在

    2024年04月14日
    浏览(44)
  • 数据分析 — Pandas 数据处理

    Pandas (Python Data Analysis Library)是一个基于 NumPy 的 数据分析工具 ,专为解决数据分析任务而创建。它汇集了大量库和一些标准的数据模型,可以更高效地操作大型数据集。 数据结构: Pandas 提供了两种主要的数据结构,即 Series 和 DataFrame ,用于处理 一维和二维 数据。 标签

    2024年02月22日
    浏览(56)
  • 数据分析--数据预处理

    本文主要是个人的学习笔记总结,数据预处理的基本思路和方法,包括一些方法的使用示例和参数解释,具体的数据预处理案例case详见其他文章。如有错误之处还请指正! 目录 数据的质量评定 数据处理步骤 缺失值的处理 标记缺失值 删除 缺失值 填充 缺失值 重复值处理 异

    2024年02月04日
    浏览(58)
  • 共享单车数据处理与分析

    本案例来源不清楚,如果有作者,可以联系我,给加上对应链接 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。 共享单车(自行车)企业通过在校园、地铁站点、公交站点、居民区、商业

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包