本文是spring mvc的基础入门,包括了spring mvc开发环境的搭建

Spring mvc

spring mvc工作原理图

图片来自网络
图片来自网络

Spring MVC介绍:

  • spring mvc官方文档

    引自维基百科介绍

    Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由Rod Johnson和Juergen Hoeller等开发。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

  • 和众多其他web框架一样,它基于MVC设计理念,此外,它采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性

  • Spring MVC在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现
  • Spring MVC框架围绕DispatherServlet这个和兴展开,DispatchServlet是SpringMVC的总导演、总策划。它负责截获请求并将其分派给相应的处理器处理

spring mvc的优点

  • 耦合性低
    重用性高
    生命周期成本低
    部署快
    可维护性高
    有利软件工程化管理

spring mvc缺点

  • 没有明确的定义
    不适合小型,中等规模的应用程序
    增加系统结构和实现的复杂性
    视图与控制器间的过于紧密的连接
    视图对模型数据的低效率访问
    一般高级的界面工具或构造器不支持模式

搭建SpringMVC开发环境

使用idea搭建一个Spring MVC的开发环境,使用maven构建的话非常方便简单,想想以前手动添加jar包依赖就觉得恐怖。。

  • 在idea new一个Model选择maven ->org.apache.maven.archetypes:maven-archetype-webapp
  • 在pom.xml添加依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <properties>
    <spring.version>4.3.5.RELEASE</spring.version>
    </properties>
    <!--spring mvc引入 -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <!-- 引入jstl支持-->
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
    <!-- jdk1.8,使用maven编译-->
    <build>
    <finalName>springmvc</finalName>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    </configuration>
    </plugin>
    </plugins>
    </build>
  • 配置web.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <!-- 添加一些必须的命名空间-->
    <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_3_1.xsd"
    version="3.1">
    <!-- DispatcherServlet -->
    <servlet>
    <servlet-name>springmvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>springmvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- 编码过滤器-->
    <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    </web-app>
  • 在src\main\java目录下创建一个package,用于存放contorller

    MVC框架有model、view、controller三部分组成。model一般为一些基本的Java Bean,view用于进行相应的页面显示,controller用于处理网站的请求

    我创建了一个package名为com.hello.controller,在这个package下创建一个controller类testController,并加入注解

    1
    2
    3
    4
    5
    6
    7
    @Controller
    public class testController {
    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String testMVC(){
    return "test";
    }
    }
  • 在web.xml同级目录下新建 springmvc-dispatcher-servlet.xml(-servlet前面是在servlet里面定义的servlet名)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--手动添加了 xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd指明 controller 所在包,并扫描其中的注解-->
    <!--指明 controller 所在包,并扫描其中的注解-->
    <context:component-scan base-package="com.imchen.controller"/>
    <!-- 静态资源(js、image等)的访问 -->
    <mvc:default-servlet-handler/>
    <!-- 开启注解 -->
    <mvc:annotation-driven/>
    <!--ViewResolver 视图解析器-->
    <!--用于支持Servlet、JSP视图解析-->
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    </bean>
    </beans>
  • 因为在springmvc-dispatcher-servlet.xml配置好了试图解析器,在controller类对应的方法return的“xxx”,会拼接成/WEB-INF/jsp/xxx.jsp

    在WEB-INF/jsp/test.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>test</title>
    </head>
    <body>
    <h1>hi testing Spring MVC !</h1>
    </body>
    </html>
  • 把Module部署到tomcat并运行

  • 在浏览器访问localhost:8080/test
    我的tomcat改过端口,所以访问的是localhost:8086/test,看到正确跳转到了你指定的jsp
    好了spring mvc已经成功配置了!

如有错误请批评指正,本小白虚心求学