SpringMVC学习系列(一)------框架介绍及小Demo

前言

    SpringMVC是今年来各大公司中使用比较频繁的一个框架,虽说随着最近微服务和SpringBoot的兴起,它的使用率没有以前那么高,但是它还是值得我们去学习的一个框架。
                    Spring架构图

正文

    我们先来看看SpringMVC的处理流程。
            这里写图片描述
    可以看到,不管是SpringMVC还是Struts2,都是基于经典Web的请求和响应的模型来实现的。用户发送一个请求给服务器,这个请求被SpringMVC中一个叫前端控制器(DispatcherServlet)的东西拦截,这个前端控制器我们会在后面详细了解,这里不多做解释。前端控制器将请求交给处理器Handler来处理,最后将结果转发给jsp,渲染成html来返回给用户。这就是一个简单的SpringMVC中的请求响应过程。下面我们将使用Maven来构建一个简单的Demo熟悉一下SpringMVC的使用。
    如果你不使用Maven的话,可以直接在javeWeb工程中引入以下jar包来完成Demo:
这里写图片描述
下面是使用Maven构建Demo案例:
pom文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xiaojian.springmvc</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>  
   <spring.version>4.1.3.RELEASE</spring.version> 
  </properties>  
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-context-support</artifactId>  
      <version>${spring.version}</version>  
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
        <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-aspects</artifactId>  
      <version>${spring.version}</version>  
    </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-messaging</artifactId>
            <version>${spring.version}</version>
        </dependency>
                <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-jms</artifactId>  
            <version>${spring.version}</version>  
        </dependency> 
  </dependencies>
</project>

接着,我们在WEB-INF下面创建一个jsp目录,然后在web.xml里面配置DispatcherServlet,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>demo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- 配置前端控制器 -->
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>

在这里我们可以看到,所谓前端控制器,其实就是配置一个servlet,所以某个方面来说,SpringMVC其实也是对servlet的一种封装。
在这里,我们配置了url的拦截形式为.action,所有以.action结尾的请求都会被SpringMVC拦截。其次,我们还配置了springMVC的配置文件的路径,现在我们在类路径下创建一个springmvc.xml 作为配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    <!-- 配置包扫描,扫描指定包下面的类 加载到spring容器中 --> 
    <context:component-scan base-package="com.xiaojian.springmvc.controller"/>
</beans>

OK,准备工作差不多了,现在我们创建一个包,在里面创建好我们的controller,demo的大概路径如下:
这里写图片描述
在controller中我们定义一个访问方法,来使我们的请求被处理:

package com.xiaojian.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class LoginController {

    @RequestMapping("/login")
    public ModelAndView login(String username, String password) {
        ModelAndView model = new ModelAndView();
        model.addObject("data", "登录成功");
        model.setViewName("/WEB-INF/jsp/login.jsp");
        return model;
    }


}

代码中的注解和对象我们将在下一篇博文中详细讲解,好了,我们来测试一下我们的demo吧!
在浏览器中输入http://localhost:8080/项目名/login.action后页面发生跳转,跳转的目的地是一个简单的jsp页面,我在里面放入了两个input标签作为展示.
这里写图片描述

总结

OK,至此我们springmvc的小demo成功了,在下面的文章中将介绍springMVC的各个组件,以及注解,标签的作用和用法~~

猜你喜欢

转载自blog.csdn.net/xiaoyao2246/article/details/80735295