SSM框架(Spring+SpringMVC+Mybatis)

接上篇文章......

目录

接上篇文章......

1.SpringMVC开发步骤

2.SpringMVC的执行流程

3.SpringMVC注解解析

4.SpringMVC的XML配置解析

4.1视图解析器

5.SpringMVC的数据响应方式


1.SpringMVC开发步骤

  • 导入SpringMVC相关坐标
  • 配置SpringMVC核心控制器DispatcherServvlet
  • 创建Controller类和视图页面
  • 使用注解配置Controller类中业务方法的映射地址
  • 配置SpringMVC核心文件spring-mvc.xml
  • 客户端发起请求测试

上述步骤完成的业务需求是:客户端发起请求,执行逻辑并进行视图跳转。

2.SpringMVC的执行流程

  • 用户发送请求至前端控制器DispatcherServlet
  • DispatcherServlet收到请求调用HandlerMapping处理器映射器
  • 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
  • DispatcherServlet调用HandlerAdapter处理器适配器
  • HandlerAdapter经过适配器调用具体的处理器(Controller,也叫后端控制器)
  • Controller执行完成返回ModelAndView
  • HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  • DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  • ViewReslover解析后返回具体view
  • DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中),DispatcherServlet响应用户

3.SpringMVC注解解析

@RequestMapping

作用:用于建立请求URL和处理请求方法之间的对应关系

位置:

  • 类上,请求URL的第一级访问目录,此处不写的话,就相当于应用的根目录
  • 方法上,请求URL的第二级访问目录,与类上的使用@RequestMapping标注的一级目录一起组成访问虚拟路径

属性:

  • value:用于指定请求的URL。它和path属性的作用是一样的
  • method:用于指定请求的方式
  • params:用于指定限制请求参数的条件。它支持简单的表达式,要求请求参数的key和value必须和配置的一模一样
  • 例如:params={"accountName"},表示请求的参数必须有accountName

4.SpringMVC的XML配置解析

4.1视图解析器

SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,如下:

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

翻看该解析器源码,可以看到该解析器的默认设置,如下:

REDIRECT_URL_PREFIX="redirect:"--重定向前缀
FORWARD_URL_PREFIX="forward"--转发前缀(默认值)
prefix="";--视图名称前缀
suffix="";--视图名称后缀

5.SpringMVC的数据响应方式

1)页面跳转

  • 直接返回字符串
  • 通过ModelAndView对象返回

2)回写数据

  • 直接返回字符串
  1. 通过SpringMVC框架注入的response对象,使用response.getWriter().print("hello world")回写数据,此时不需要视图跳转,业务方法返回值为void。
@RequestMapping("/quick3")
public void save3(HttpServletResponse response) throws IOException {
     response.getWriter().print("hello world!");
}
  1. 将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回。
@RequestMapping("/quick4")
@ResponseBody // 告知SpringMVC框架,不进行视图跳转,直接进行数据响应
public String save4() throws IOException {
    return "Hello Quick4!";
}
  • 返回对象或集合

通过SpringMVC帮助我们对对象或集合进行json字符串的转换并回写,为处理器适配器配置消息转换参数,指定使用jackson进行对象或集合的转换,因此需要在springMVC.xml中进行配置:

<!-- 配置处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation
.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json
                        .MappingJackson2HttpMessageConverter">
            </bean>
        </list>
    </property>
</bean>

在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上述配置:

<beans xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- mvc的注解驱动 -->
    <mvc:annotation-driven/>
</beans>

在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在Spring-xml.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。

同时使用<mvc:annotation-driven>默认底层就会集成Jackson进行对象或集合的json格式字符串的转换。

问题:关于jsp文件无法获取${}表达式的值?解决方法如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Caoyy686868

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

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

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

打赏作者

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

抵扣说明:

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

余额充值