首页 > 其他分享 >SSM中 的SpringMVC

SSM中 的SpringMVC

时间:2024-09-15 13:49:31浏览次数:12  
标签:---- 控制器 映射 SpringMVC 前端 SSM 地址 servlet

目录

前言

一、SpringMVC是什么?

二、所遇到的一些问题

1.中文乱码

2.路径跳转


前言

虽然说SSM框架这个技术已经很老了,但是我个人觉得学完之后还是有很多启发的,同时也是作为一个基础去学习后面更多的框架知识。


一、SpringMVC是什么?

 (B/S )web开发的轻量级框架。

工作原理

客户端发送一条请求到服务器
DispathcherServlet  前端控制器捕获
    前端控制器调用HandlerMapping 映射处理器 ,最后返回一个执行链对象(控制器,拦截器)
            HandlerMapping首先会在控制器映射表中查找
                 控制器映射表(映射地址,控制器,控制器中的实现方法)
                 拦截映射地址,处理方法
    前端控制器 调用 HandlerAdapter ,返回 一个 MAV(ModelAndView)
                    消息转换器(数据转换)等等,最终去到控制器执行请求

    前端控制器----调用---->视图解析器 ------- 返回VIEW
    前端控制器----调用-----> VIEW 调用  .render()  渲染模型 并将模型域数据转移请求域

    前端控制器交给Tomcat渲染jsp数据
    最终由Tomcat返回给客户端渲染后的视图

配置加载流程

Tomcat(Servlet容器) ----加载----->  部署应用  ----处理(加载解析)----->web.xml
---->web (IoC) 容器
 

二、所遇到的一些问题

1.中文乱码

视图中的乱码:可以使用字符转换过滤器解决

在web.xml中配置

<filter>
       <filter-name>characterEncodingFilter</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>
       <init-param>
           <param-name>forceEncoding</param-name>
           <param-value>true</param-value>
       </init-param>
   </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

但是@ResponeBody 或者是使用了@RestController 注解的 输出时是不经过tomcat的渲染,所以这个字符转换过滤器是没有办法解决这两个注解所输出的中文乱码问题。

解决方案有两个

        第一个设置每个Mapping的produces属性(数量多了比较麻烦,如果只有几个可以用)

@RequestMapping(value = "/get",produces = "text/html;charset=utf-8")

        第二个是配置一个消息转换器(springMVC 的配置文件中)

 <mvc:annotation-driven validator="validator" conversion-service="conversionFactoryBean">
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg name="defaultCharset" value="UTF-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

2.路径跳转

重定向与内部转发,我个人理解两者最大的区别就是 是否有携带跳转点的数据。

重定向:是回到服务器进行一次新的的请求,不会携带前面所有的(模型域中的)数据。

内部转发:是携带着模型域中的数据去到转发的映射地址进行操作,前后的视图是共享一个数据域

对映射地址进行重定向时,有 /  则表示从项目根路径开始,没有 /  则从当前父路径 开始

重定向到同个控制器下的映射地址时(使用这个时,不要有空格)

return "redirect:方法的映射地址";

 重定向到不同控制器的话,就需要全路径(并不会默认在上下文地址下的)

return "redirect:/设置的上下文地址/控制器映射地址/方法映射地址";

 上面两种都是方法返回的重定向

还有一种是使用 http 去进行重定向

resp.sendRedirect("/my-model/Login/show");//方法参数上HttpServletResponse resp

servlet 映射匹配规则
    当两个servlet 的映射相同时,项目(自定义的)servlet 会导致 Tomcat 全局servlet 失效
    资源竞争规则:两个servlet都符合匹配规则时,以路径精准优先
    servlet 映射地址 一定要有 "/" 开头
    自定义的servlet 的映射地址不能重复

访问流程 --- mvc的访问流程
    Tomcat 自带 DefaultServlet (专门处理静态),而DefaultServlet  的默认映射地址 是 '/'
    与前端控制器的映射地址相同,被前端控制器覆盖 导致失效

前端控制器

解决的方法

        重新为DefaultServlet配置映射地址

    方法2
    在springMVC 中 重新启动 DefaultServlet
    <mvc: default-servlet-handler/>
    这种方式 是当 前端控制器 找不到映射时 启用默认映射
映射地址的区别
    /:作为应用的默认Servlet,只处理那些没有被其他Servlet明确映射的请求。
    /*:拦截应用中所有的请求,无论这些请求是否已被其他Servlet映射

       

标签:----,控制器,映射,SpringMVC,前端,SSM,地址,servlet
From: https://blog.csdn.net/weixin_66442229/article/details/142267253

相关文章

  • 110java jsp SSM Springboot电子书图书小说阅读系统小程序(源码+文档+运行视频+讲解视
    项目技术:前端运行:微信开发者工具SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.......
  • 107java jsp SSM Springboot校园二手交易服务平台系统小程序(源码+文档+运行视频+讲解
    项目技术:前端运行:微信开发者工具SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.......
  • 计算机毕业设计必看必学!! 90030 SSM旅行社网站,原创定制程序, java、PHP、python、小
    摘 要旅游业是一个信息密集型产业,传统的旅游景点门票售卖受到技术和人力的限制,旅行社网站则可以建立景区与游客之间的有效通道,能更好的满足游客便捷旅游的需求。旅行社网站的设计是基于SSM框架、Mysql数据库、JSP技术、Ajax技术的方式设计,该系统实现了个人资料、公共管理(......
  • 计算机毕业设计必看必学!! 51842 ssm咖啡销售系统,原创定制程序, java、PHP、python、
    摘要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。现代社会越来越多的人追求便捷购物,购买各种各类的商品已经是人......
  • SSM教室管理系统 毕业设计-附源码75969
    摘 要随着教育信息化的发展,学校对于教室资源的合理利用和管理变得愈发重要。传统的教室管理方式存在许多问题,如信息不透明、资源浪费和预约冲突等。因此,开发一个教室管理系统具有重要的实际意义。该教室管理系统旨在通过信息化手段实现对教室资源的有效管理和利用。它包......
  • SSM华天计算机面试刷题系统-计算机毕业设计源码22543
    摘 要华天计算机面试刷题系统是一款基于SSM(Spring、SpringMVC、MyBatis)框架、利用Java编程语言和MySQL数据库,开发的在线学习和测试平台。系统利用SSM框架及前端开发技术,实现了模块化开发和管理,前后端交互以及数据库操作等功能。系统具备良好的扩展性、稳定性和可维护性。......
  • Spark-ShuffleWriter-BypassMergeSortShuffleWriter
    一、上下文《Spark-ShuffleWriter》中对ShuffleWriter的获取、分类和写入做了简单的分析,下面我们对其中的BypassMergeSortShuffleWriter做更详细的学习二、创建ShuffleMapOutputWriterShuffleMapOutputWritermapOutputWriter=shuffleExecutorComponents.createMapO......
  • 083java jsp SSM Springboot体育球队比赛赛事报名系统小程序(源码+文档+运行视频+讲解
     项目技术:前端运行:微信开发者工具SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可......
  • 084java jsp SSM Springboot大学生心理健康服务系统小程序(源码+文档+运行视频+讲解视
     项目技术:前端运行:微信开发者工具SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可......
  • SSM实验室管理系统
    101开发语言:Java数据库:MySQL5.7技术:SSM工具:IDEA/Ecilpse、Navicat、Maven需求分析1.1需求分析概述生活中的实验室管理系统很复杂,对安全性和完整性要求都很高。在此我运用数据库课上所学知识,结合自己平时的操作业务体验,认为一个合格的实验室管理系统至少应该具备以下几点要......