侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

SpringMVC(1)之入门

zze
zze
2017-11-30 / 0 评论 / 0 点赞 / 417 阅读 / 11281 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

介绍

SpringMVC 简介

  1. 和众多其他 Web 框架一样,它基于 MVC 设计理念,此外,它采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。
  2. Spring MVC 在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现
  3. Spring MVC 框架围绕 DispatcherServlet 这个核心展开,DispatcherServlet 是 Spring MVC 的总导演、总策划,它负责截获请求并将其分派给相应的处理器处理。

image.png

SpringMVC 和 Struts2 对比

SpringMVC 与 Struts2 的区别
对比项目SpringMVCStruts2优势
国内市场情况有大量用户,一般新项目启动都会选用 SpringMVC。有部分老用户,老项目组,由于习惯了,一直在使用。国内情况,SpringMVC 的使用率已经超过了 Struts2。
框架入口基于 Servlet。基于 Filter。本质上没有太大优势,只是配置方式不同。
框架设计思想控制器基于方法级别的拦截,处理器设计为单实例。控制器基于类级别的拦截,处理器设计为多实例。由于设计本身原因,造成了 Struts2 通常只能设计为多实例模式,相比于 SpringMVC 设计为单实例模式,Struts2 会消耗更多内存。
参数传递参数通过方法入参传递。参数通过类的成员变量传递。Struts2 通过成员变量传递参数,导致了参数的线程不安全,有可能引发并发问题。
与 Spring 整合与 Spring 属于同一家公司开发,可与 Spring 无缝整合。需要整合包。SpringMVC 可以与 Spring 更轻松的整合。

入门程序

1、使用 Maven 创建 Web 工程,依赖如下:

<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>

<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.zze.springmvc</groupId>
    <artifactId>springmvc_test1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!--使用 tomcat7:run-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2、创建 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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置控制器扫描-->
    <context:component-scan base-package="com.zze.springmvc.web.controller"/>

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

3、配置 SpringMVC 核心监听 Servlet 并加载核心配置文件:

<!-- WEB-INF/web.xml -->
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载 SpringMVC 核心配置文件-->
        <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>/</url-pattern>
    </servlet-mapping>
</web-app>

4、创建测试用的 POJO:

// com.zze.springmvc.pojo.User
import java.util.Date;

public class User {
    private Integer id;
    private String name;
    private Date birthday;
    private String address;

    public User(Integer id, String name, Date birthday, String address) {
        this.id = id;
        this.name = name;
        this.birthday = birthday;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

5、创建视图:

<!-- WEB-INF/jsp/userlist.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
    <title>list</title>
</head>
<body>

<table border="1">
    <thead>
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>Birthday</th>
        <th>Address</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach items="${list}" var="user">
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td><fmt:formatDate value="${user.birthday}" pattern="yyyy-MM-dd"/></td>
            <td>${user.address}</td>
        </tr>
    </c:forEach>
    </tbody>
</table>
</body>
</html>

6、创建控制器:

// com.zze.springmvc.web.controller.TestController
import com.zze.springmvc.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

@Controller
public class TestController {
    @RequestMapping("list")
    public ModelAndView list() throws ParseException {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "张三", new SimpleDateFormat("yyyy-MM-dd").parse("1997-1-12"), "湖南"));
        userList.add(new User(2, "李四", new SimpleDateFormat("yyyy-MM-dd").parse("1995-5-23"), "湖北"));
        userList.add(new User(3, "王五", new SimpleDateFormat("yyyy-MM-dd").parse("1993-2-23"), "常德"));
        userList.add(new User(4, "赵六", new SimpleDateFormat("yyyy-MM-dd").parse("1998-5-6"), "北京"));

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("list", userList);
        modelAndView.setViewName("/WEB-INF/jsp/userlist.jsp");
        return modelAndView;
    }
}

7、测试,浏览器输出如下:

image.png

8、至此,入门程序搭建完成。

0

评论区