Spring MVC入门

一、回顾MVC

MVC是模型、视图、控制器的简写,是一种软件设计规范。
它是将业务逻辑、数据、以显示分离的方式来组织代码。作用是为了降低视图与业务逻辑间的耦合,利于业务系统的扩展性

MVC:模型(dao,service) 、视图(jsp)、控制器(Servlet)

  • Model(模型):提供要展示的数据,包含数据和行为(数据查询和模型数据状态更新等功能)
  • View(视图):负责进行模型的展示
  • Controller(控制器):接收用户请求,委托给模型进行处理,处理完毕后把返回的数据交给视图来展示。

二、回顾servlet

1.为何要回顾servlet?

Spring MVC是基于servlet功能实现的,通过实现Servlet接口的DispatcherServlet来封装其核心功能实现,通过将请求分派给处理程序。

而Servlet可以理解为:运行在web服务器端的程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容,它是作为中间层介于web浏览器和Http服务器上的数据以及应用程序。

2.Servlet生命周期

  1. 被创建:执行init()方法初始化Servlet(只执行一次)
  2. 提供服务:执行Service()方法,(根据请求方法不同调用doGet()doPost()或 其他方法)
  3. 被销毁:执行destory()方法

3.案例

编写Servlet页面

在web.xml文件中配置

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>Servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

配置Tomcat并启动

三、初识Spring MVC

1.何为Spring MVC?

Spring MVC是一个基于MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发

2.特点

  1. 高效,基于请求响应的MVC框架
  2. 与Spring兼容性好
  3. 清晰的角色分配:
    • 前端控制器(DispatcherServlet)
    • 处理器映射(HandlerMapping)
    • 处理器适配器(HandlerAdapter)
    • 视图解析器(ViewResolver)

3.第一个Spring MVC

①在web.xml中注册DispatcherServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<!--注册DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--关联一个springmvc的配置文件:【servet-name】-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动级别-1-->
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

②编写Spring MVC的配置文件!

名称springmvc-servlet.xml:[servletname]-servlet.xml

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

③添加处理映射器

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

④添加处理器适配器

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

⑤添加视图解析器

1
2
3
4
5
6
7
<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>

⑥编写要操作业务Controller

要么实现Controller接口,要么增加注解;需要返回一个ModelAndView装数据,封视图

1
2
3
4
5
6
7
8
9
10
11
12
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中
mv.addObject("msg","helloSpringMVC!");
// /WEB-INF/jsp/hello.jsp
mv.setViewName("hello");
return mv;
}
}

⑦将自己的类交给SpringIOC容器,注册bean

1
2
<!--Handler-->
<bean id="/hello" class="xyz.yolin.controller.HelloController"/>

⑧启动Tomcat

请我喝杯咖啡吧~

支付宝
微信