SpringMVC及使用步骤


一、MVC

MVC,模型(Modle)、视图(View)、控制器(Controller)的简写,是一种设计规范。
MVC不是一种设计模式,而是一种架构模式。

企业级应用,前端与实体类的数据传输可能不是完全符合,例如用户实体有用户的姓名、年龄性别等,但是前端的登录页面不需要用户实体的所有信息。
因此,项目下会细分包,例如

前端:数据传输 、实体类
实体类:用户名、密码、生日、爱好… User
前端:用户名、密码 UserVo


pojo:实体类, User
vo:视图层对象, UserVo
dto:数据传输时的对象

二、SpringMVC

SpringMVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。底层还是servlet实现的。
执行流程:

1、DispatcherServlet,前置控制器,使整个SpringMVC的控制中心。用户发送请求,DispatcherServlet接受请求并拦截。

  • 假设url为:http://localhost:8080/demo/hello
  • http://localhost:8080 为服务器域名
  • demo是部署在服务器上的web站点
  • hello表示控制器
  • url表示为:请求位于服务器localhost:8080上的demo站点的hello控制器。

2、HandlerMapping,处理器映射器。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。(DispatcherServlet自己调用,无需操作)
3、HandlerExecution表示具体的Handler,主要作用是根据url查找控制器,1中url被查找的控制器为:hello (无需手动操作)
4、HandlerExecution将解析后的信息传递给DispatcherServlet,例如 解析控制器映射。(无需手动操作)
5、HandlerAdapter表示处理器适配器,按照特定规则去执行Handler。(无需手动操作)
6、Handler让具体的Controller执行。(无需手动操作)
7、Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。(无需手动操纵,Controller中具体的操作需要自己手动编写调用,如调用service)
8、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet 。(无需手动操作)
9、DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。(无需手动操作,在配置文件中编写视图解析器的规则)
10、视图解析器将解析的逻辑视图名传给DispatcherServlet。(无需手动操作)
11、DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。(无需手动操作)
12、视图最终呈现给用户。

三、使用步骤(IDEA版本)

1.创建页面

代码如下(示例):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>hello</title>
  </head>
  <body>
  ${msg}
  </body>
</html>

2.导入依赖

确保有SpringMVC的依赖:

<!-- Servlet核心依赖 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
	<scope>provided</scope>
</dependency>
<!-- JSTL标签库 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<!-- jsp -->
<dependency>
	<groupId>javax.servlet.jsp</groupId>
	<artifactId>jsp-api</artifactId>
	<version>2.2</version>
</dependency>
<!-- Spring依赖 -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-web</artifactId>
	<version>4.3.29.RELEASE</version>
</dependency>
<!-- SpringMVC依赖 -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>4.3.29.RELEASE</version>
</dependency>

确保Artifacts中也有相关的依赖

在这里插入图片描述

3.配置Servlet

1、在web.xml中,配置DispatcherServlet

<!-- 1、注册DispatcherServlet -->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<!-- 关联一个springmvc的配置文件:【servlet-name】-servlet.xml -->
	<init-param>
		<param-name>contextConfiglocation</param-name>
		<!-- classpath* 会到所有的包去找,不建议 -->
		<param-value>classpath:springmvc-servlet.xml</param-value>
	</init-param>
	<!-- 启动调用级别-1
		与服务器一起启动
	-->
	<load-on-startup>1</load-on-startup>
</servlet>

<!-- / 匹配所有的请求:(不包括.jsp) -->
<!-- /* 匹配所有的请求:(包括.jsp) -->
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

2、在resources目录下创建对应的spring配置文件springmvc-servlet.xml

4.编写spring配置文件

1、添加 处理器映射器

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

2、添加 处理器适配器

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

3、添加 视图解析器

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

5.创建Controller类

1、编写HelloController

public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();
        // 业务代码
        String result = "HelloSpingMVC!";
        //封装对象,放在ModelAndView中, Model
        mv.addObject("msg", result);
        //封装要跳转的视图,放在ModelAndView
        mv.setViewName("hello"); // /WEB-INF/jsp/hello.jsp
        return mv;
    }
}

2、由于添加的处理器映射器为BeanNameUrlHandlerMapping,该处理器需要通过bean的名字查找,则在配置文件中写bean

<!-- BeanNameUrlHandlerMapping 里的 bean -->
<bean id="/hello" class="com.demo.controller.HelloController"/>

总结

用户发出请求,第一步是寻找DispatcherServlet,DispatcherServlet绑定一个配置文件,因此找到了springmvc-servlet.xml;
第二步,读取配置文件,读取到处理器映射器,处理器映射器根据bean的name找到了相应的bean返回至相应的类Controller;
第三步,处理器适配器找到相应的Controller,Controller处理相关的业务(自己编写),处理完业务后Controller返回一个ModelAndView,交给视图解析器去处理;
第四步,视图解析器根据配置找到相关的页面返回给DispatcherServlet;
第五步,DispatcherServlet将视图返回给用户展示。


以上为博主根据学习所得经验,如有问题,欢迎各位大佬指出!

学习视频链接:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂
博主B站主页链接:遇见狂神说

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值