SpringMVC 基本概念+实操

175 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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多例模式、不使用全局变量可解决线程安全问题