【SSM框架系列】SpringMVC基本介绍

SpringMVC 是web层的框架

  • SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。

  • SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。

  • 它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。

web层主要干嘛的:接收请求参数,封装数据,调用service,响应给浏览器

但是在web层各种域之间存取数据、页面之间的跳转、数据写到响应体中等等这些操作还未进行优化。

Spring提供了spring-web实现Spring整合web开发,但是这种做法很难实现MVC思想,也就是不能简化我们的web开发。

这里要注意区分两个不同的概念:

1、软件三层:展示层、业务层、数据持久层。一个应用根据代码职责不同划分为软件三层。

展示层:负责与前台交互

业务层:负责业务逻辑处理

数据持久层:负责业务数据持久化与读取

2、MVC:为了模型和视图实现代码上的分离,将软件三层中的展示层中代码根据职能不同分为三部分:

模型——Model——M			:封装数据(企业数据和业务规则)

视图——View——V			:封装视图(用户可以看到的界面,通过HTML、jsp等技术实现)

控制——Controller——C		:负责同步M和V,一旦M改变,V应该同步更新。

Spring简化版工作流程

在这里插入图片描述
如上图所示,Servlet需要的做工作有:

  • 接收请求
  • 通过request对象获取请求参数
  • 将获取的请求参数封装成对象
  • 调用Service
  • 根据Service返回的结果,作出响应,响应可以是将数据写入各种域中,完成页面跳转,也可以把数据封装成json写到响应体中,然后直接响应

上述步骤中除了调用Service会根据不同的业务需求调用不同的service之外,其他的基本都是相对比较固定的。这些相对比较固定的步骤就是SpringMVC帮我们去实现的,通过前端控制器帮我们实现。

两个概念,JavaBean和POJO。

  • JavaBean 是指一个类按照指定的规范去编写
    • 这个类必须实现序列化接口
    • 这个类必须提供无参构造方法
    • 这个类必须私有化成员变量
    • 这个类必须提供成员变量的getter和setter
  • POJO —— Plain Ordinary Java Object —— 就是简单的java对象
    • 就是一个普通的java类
    • 没有任何实现和继承(Object除外)
    • 可以有自己的成员变量和成员方法
    • controller就是一个POJO

代码演示

导入Spring和SpringMVC的坐标、导入Servlet和Jsp的坐标

  	<!--Spring坐标-->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>5.0.5.RELEASE</version>
     </dependency>
     <!--SpringMVC坐标-->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>5.0.5.RELEASE</version>
     </dependency>
    <!--Servlet坐标-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
     <!--Jsp坐标-->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
    </dependency>

在web.xml配置SpringMVC的核心控制器

<!-- 配置SpringMVC前端控制器 -->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
	<!-- 
    	servlet初始化参数,用于指定SpringMVC配置文件位置
     	schema约束规定,该标签需要在load-on-startup上面
	-->
    <init-param>
    	<param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!-- 
    	0表示web容器启动时就加载该控制器DispatcherServlet
    	
    	当值为0或者大于0时,表示容器在应用启动时就加载这个servlet
    	正数的值越小,启动该servlet的优先级越高
    	设置重复也不会出现异常,服务器会自己决定初始化顺序。
    
    	当是一个负数时或者没有指定时,则指示容器在该servlet被使用时才加载
    -->
    <load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截规则 -->
<servlet-mapping>   
	<servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

编写Controller代码

    public class QuickController {
    	public String quickMethod(){
    		System.out.println("quickMethod running.....");
    		return "index";
    	}
    }

在webapp目录下编写视图页面index.jsp

<html>
<body>
    <h2>Hello SpringMVC!</h2>
</body>
</html>

使用注解装配Controller、配置方法的映射请求地址

	// 把当前类放入Spring容器
	@Controller
    public class QuickController {
    	// 给当前方法加访问路径
        @RequestMapping("/quick")
        public String quickMethod(){
            System.out.println("quickMethod running.....");
            // 如果是重定向 “redirect:/quick/index.jsp”
            // 如果是转发   “forward:/quick/index.jsp” 
            // 不写,默认转发
            return "index";
        }
    }

⑤ 编写spring-mvc.xml

       <!--配置SpringMVC的注解扫描,建议只扫描controller层-->
       <context:component-scan base-package="cs.wy.controller"/>
发布了34 篇原创文章 · 获赞 14 · 访问量 1568

猜你喜欢

转载自blog.csdn.net/Wan_Yuan/article/details/104573934