SpringMVC学习知识要点

Spring MVC的入口 DispatcherServlet,通过 ModelAndView 对象把模型和视图结合在一起。

访问路径流程

在这里插入图片描述

注解:

@Controller 表示该类是一个控制器,可以不再让类实现Controller接口
@RequestMapping(“/index”)请求页面在此进行处理,建立请求URL和请求处理方法之间对应
@PathVariable:用于绑定URL的占位符
@RequestParam:请求参数传入到指定的 形参赋值
@RequestBody:获取请求内容,将请求过来的Json数据转换成对象,get方法不使用,因为请求数据为url,不是Json数据,只允许Put和POST方法
@ResponseBody:获取相应内容,将返回的对象数据转换成Json数据格式返回给客户端,未配置时,默认返回为ModelAndView对象

new ModelAndView("redirect:/index")实现客户端跳转

中文乱码问题

<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> 
    </filter> 
    <filter-mapping> 
        <filter-name>CharacterEncodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>   

表单提交后页面跳转中文乱码解决:
提交form表单method=“post”,且在web.xml配置中文编码过滤器。(如上)

视图定位:
在SpringMVC的配置文件xml中添加以下代码

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix" value="/WEB-INF/page/" />
   <property name="suffix" value=".jsp" />
</bean>

ModelAndView mav = new ModelAndView("index");
则index后不需要加.jsp

异常处理

包括预期异常和运行时异常

系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理
在这里插入图片描述
异常处理

  • 使用 Spring MVC 提供的简单异常处理器
    SimpleMappingExceptionResolver。
  • 实现 Spring 的异常处理接口 HandlerExceptionResolver 自定义自己的异常处理器。
  • 使用 @ExceptionHandler 注解实现异常处理(常用

注意点

  • SpringMVC默认情况下是不安全的,因为是singleton单例模式,提高了性能,不用每次都创建Controller实例,一定程度上减少了时间和空间
  • Struts2默认是prototype多例模式,在每次请求上都重新创建一个对象,所以不存在线程安全问题
  • 当出现有状态bean、全局变量时,SpringMVC就会出现线程安全问题,有高并发隐患
  • 使用ThreadLocal、改为prototype多例模式、不使用全局变量可解决线程安全问题

其它

  • SpringMVC 实现:同步阻塞方式,基于 SpringMVC + Servlet + Tomcat
  • SpringWebflux 实现:异步非阻塞方式,基于 SpringWebflux + Reactor + Netty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序少年不秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值