Spring MVC(1)- 入門案例

1 SpringMVC在三層架構的位置

在這裏插入圖片描述

1.1 優點

  1. 清晰的角色劃分:
  • 前端控制器(DispatcherServlet
  • 請求到處理器映射(HandlerMapping
  • 處理器適配器(HandlerAdapter
  • 視圖解析器(ViewResolver
  • 處理器或頁面控制器(Controller
  • 驗證器( Validator
  • 命令對象(Command 請求參數綁定到的對象就叫命令對象)
  • 表單對象(Form Object 提供給表單展示和提交到的對象就叫表單對象)。
  1. 分工明確,而且擴展點相當靈活,可以很容易擴展,雖然幾乎不需要。
  2. 由於命令對象就是一個POJO,無需繼承框架特定API,可以使用命令對象直接作爲業務對象。
  3. 和Spring 其他框架無縫集成,是其它Web框架所不具備的
  4. 可適配,通過HandlerAdapter可以支持任意的類作爲處理器。
  5. 可定製性,HandlerMapping、ViewResolver等能夠非常簡單的定製。
  6. 功能強大的數據驗證、格式化、綁定機制。
  7. 利用Spring提供的Mock對象能夠非常簡單的進行Web層單元測試。
  8. 本地化、主題的解析的支持,使我們更容易進行國際化和主題的切換。
  9. 強大的JSP標籤庫,使JSP編寫更容易。 ………………還有比如RESTful風格的支持、簡單的文件上傳、約定大於配置的契約式編程支持、基於註解的零配置支持等等。

1.2 SpringMVC和Struts2的優略分析

共同點:

  • 它們都是表現層框架,都是基於MVC模型編寫的。
  • 它們的底層都離不開原始ServletAPI。
  • 它們處理請求的機制都是一個核心控制器。

區別:

  • Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
  • Spring MVC 是基於方法設計的,而Struts2是基於類,Struts2每次執行都會創建一個動作類。所以Spring MVC 會稍微比 Struts2 快些。
  • Spring MVC 使用更加簡潔,同時還支持 JSR303, 處理 ajax 的請求更方便 (JSR303 是一套JavaBean參數校驗的標準,它定義了很多常用的校驗註解,我們可以直接將這些註解加在我們JavaBean的屬性上面,就可以在需要校驗的時候進行校驗了。)
  • Struts2 的OGNL 表達式使頁面的開發效率相比Spring MVC 更高些,但執行效率並沒有比JSTL提升,尤其是struts2的表單標籤,遠沒有html執行效率高。

2 環境搭建

在這裏插入圖片描述
在這裏插入圖片描述

  • pom
 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>5.0.2.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-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

2.1 配置前端控制器

  • 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>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

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

2.2 spring mvc 配置文件

在這裏插入圖片描述
在這裏插入圖片描述

2.3 部署服務器

在這裏插入圖片描述
在這裏插入圖片描述

3 入門案例

3.1 spring mvc 配置文件

在這裏插入圖片描述

  • springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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.tzb"></context:component-scan>

</beans>

3.2 web.xml 加載 spring mvc 配置文件

<!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>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!--加載 spring mvc 配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>

    <!--啓動服務器就創建 DispatcherServlet 對象-->
    <load-on-startup>1</load-on-startup>
    
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

3.3 配置視圖解析器,打開mvc 註解支持

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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.tzb"></context:component-scan>

    <!--視圖解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--開啓Spring MVC 框架註解的支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

</beans>

3.4 寫一個成功頁面

在這裏插入圖片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>成功頁面</title>
</head>
<body>
成功頁面
</body>
</html>

3.5 Controller

在這裏插入圖片描述

package com.tzb.controller;

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

@Controller
public class HelloController {

    @RequestMapping(path = "/hello")
    public String sayHello() {
        System.out.println("hello world!");
        return "success";
    }
}

3.6 index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>主頁</title>
</head>
<body>

<h3>入門程序</h3>
<a href="/hello">入門程序</a>

</body>
</html>


啓動服務器測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章