0
点赞
收藏
分享

微信扫一扫

认识SpringMVC

目录

1. 什么是SpringMVC

2. SpringMVC运行流程

3. SpringMVC的搭建

4. 控制层注解

5. Ajax 转 Json


1. 什么是SpringMVC

SpringMVC是 Spring中的一个模块 , 是对 Servlet 进行了封装

     那这样就明白了, SpringMVC 原来是web框架啊 , 就跟 servlet 那些一样, 只不过更为简洁了, 下面就来介绍SpringMVC到底是怎样去做的

2. SpringMVC运行流程

先来看一幅图

 这就是 SpringMVC的运行流程, 刚看可能有些疑惑, 接着来一一解释
首先我们可以注意到, 上图中的DispatcherServlet , 几乎所有流程都和它紧密相连
我们的所有请求都会先到达DispatcherServlet , 最终也由它来把数据响应回去

接着我们来模拟上面的流程
1. 用户发送请求, 请求先到达DispatcherServlet
2. 请求从DispatcherServlet 出来后进入映射处理器

        此步骤主要检查请求有没有配置拦截器, 如果有拦截器就执行拦截器(拦截器后面会说到)
3 ,4. 请求这时会到达处理适配器(负责数据类型转换等),然后到达我们的控制层

       此步骤会根据我们 java 中的类或者其他类型来自动把数据给我们组装好

5. 控制层将处理后的数据返回
       现阶段我们可以直接通过控制层将数据返回 , 就不需要图中的5 ,6 步骤了
 

3. SpringMVC的搭建

  maven 先导入SpringMVC的核心依赖

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>5.2.2.RELEASE</version> 
</dependency>

在 web.xml 配置 DispatcherServlet 

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <!--启动时读取spring.xml配置文件-->
        <param-value>classpath:spring.xml</param-value>
    </init-param>
    <!--在服务器启动时创建Servlet-->
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <!--/表示所有请求都进入dispatcherServlet-->
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

创建SpringMVC 开启 SpringMVC注解

<mvc:annotation-driven></mvc:annotation-driven>

       这里我们需要设置不能让静态资源进入DispatcherServlet , 例如 . html , . css等文件 , 因为如果让这些文件进入DispatcherServlet的话 , 它们在DispatcherServlet并没有相应的执行流程 , 所以这些资源文件会被直接过滤掉 , 导致我们访问不到 , 所以这里我们需要设置

<mvc:default-servlet-handler/>

设置之后 , 静态资源文件就不会进入DispatcherServlet

       另外, 如果我们提交的数据里出现中文 , 那么也会出现乱码,所以这里需要在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>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

4. 控制层注解

      以下是一个 控制层 的代码示例

@RestController
@RequestMapping(value = "/login")
public class LoginController {

    @Autowired
    LoginService loginService;

    @PostMapping(value = "/login")
    public CommonResult adminLogin(Admin admin, HttpSession session){
        CommonResult commonResult;
        try {
            Admin admin1 = loginService.login(admin);
            if(admin1==null){
                commonResult=new CommonResult(201,"账号或密码错误",admin1);
            }else  {
                session.setAttribute("admin",admin1);
                commonResult=new CommonResult(200,"登录成功",admin1);
            }
        }catch (Exception e){
            commonResult=new CommonResult(500,"登录失败","");
        }
        return commonResult;
    }
}

@Controller 用于标记在一个类上,使用它标记的类就是一个 SpringMVC Controller 对象
 

这里使用的是 @RestController , 它是一个组合注解,包括以下注解
 


 

 @RequestMapping 注解是一个用来处理请求地址映射的注解,可用于类或方法上
也可以根据Get方式或者Post方式选择 @GetMapping 或者 @PostMapping

5. Ajax 转 Json

       首先需要在 maven 导入 转json需要的 jar

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId> 
    <version>2.9.1</version> 
</dependency>

这里我们需要这样一个注解标签 , @responseBody

 使用此注解标签 , 我们不用再手动转 json ,直接 return 我们要返回的数据即可, 如上述控制层例子
      因为我们之前使用的是@RestController , 它里面就包含了@responseBody, 所以这里也可以省略, 只需要一个@RestController 即可完成所有功能
 

举报

相关推荐

SpringMVC-->了解SpringMVC

SpringMVC笔记(1):SpringMVC

认识java

ElasticSearch认识

认识Servlet

认识 JSX

认识numpy

0 条评论