天天看點

spring mvc(1):基礎入門

spring mvc(1):基礎入門

pom.xml ( maven )

<properties>

  <spring.version>3.0.5.RELEASE</spring.version>

</properties>

<dependencies>

  <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-core</artifactId>

    <version>${spring.version}</version>

  </dependency>

    <artifactId>spring-web</artifactId>

    <artifactId>spring-webmvc</artifactId>

</dependencies>

沒有使用 maven 的需手工導入包 ( 3.0.4 + 版本自由選擇 ) :

spring-core-3.0.5.RELEASE.jar

spring-asm-3.0.5.RELEASE.jar

spring-web-3.0.5.RELEASE.jar

spring-beans-3.0.5.RELEASE.jar

spring-context-3.0.5.RELEASE.jar

spring-aop-3.0.5.RELEASE.jar

spring-webmvc-3.0.5.RELEASE.jar

spring-context-support-3.0.5.RELEASE.jar

spring-expression-3.0.5.RELEASE.jar

aopalliance-1.0.jar

commons-logging-1.1.1.jar

為使用 Spring MVC,首先需要在 web.xml 中配置 DispatcherServlet。

它與 Struts 的過濾器作用類似,主要負責攔截請求并分發給對應的目标來處理。

web.xml

<servlet>

  <servlet-name>dispatcher</servlet-name>

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

  <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

  <url-pattern>/</url-pattern>

</servlet-mapping>

這種配置方式要求項目中必須存在 WEB-INF/[servlet-name]-servlet.xml 配置檔案 ( 如這裡的 dispatcher-servlet.xml )。

你也可以通過 <init-param> 來自定義指定配置檔案的路徑和名稱。

  <init-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:spring-mvc.xml</param-value>

  </init-param>

  <url-pattern>*.action</url-pattern>

<load-on-startup>1</load-on-startup>

load-on-startup 配置的是一個非負整數值,表示 Servlet 啟動的優先級别。數值越小,優先級别越高。

0 或 不配置,表示隻有當第一次使用該 Servlet 時,容器才會去啟動它 ( 包括加載、執行個體化、以及調用 init() 方法完成初始化 )。

1 或 > 1,表示 Servlet 将随運用程式的啟動而啟動。

<url-pattern>*.action</url-pattern>

表示攔截所有 .action 的請求,并交由 Spring MVC 來處理,非 .action 的請求,将不由 Spring MVC 處理。

多個值之間用英文的逗号 “,” 分隔,需要注意的是,值與值之間不能存在空格:<url-pattern>*.action,*.htm</url-pattern>

<url-pattern>/</url-pattern>

表示攔截所有請求,并全部交由 Spring MVC 來處理。

spring-mvc.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-3.0.xsd

  http://www.springframework.org/schema/mvc

  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

  http://www.springframework.org/schema/context 

  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <!-- 自動掃描的包 -->

  <context:component-scan base-package="org.lychie.tutorial.**.controller" />

  <!-- 開啟注解支援 -->

  <mvc:annotation-driven/>

  <!-- 視圖處理 -->

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <!-- 字首 -->

    <property name="prefix" value="/WEB-INF/pages/" />

    <!-- 字尾 -->

    <property name="suffix" value=".jsp" />

  </bean>

</beans>

HelloWorldController.java

package org.lychie.tutorial.controller;

import org.springframework.stereotype.Controller;

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

@Controller

public class HelloWorldController {

    @RequestMapping("/hello_world")

    public String execute(){

        return "hello_world_page";

    }

}通路方式:/hello_world.action

頁面結果:WEB-INF/pages/hello_world_page.jsp ( 與 spring-mvc.xml 配置檔案中的配置相關聯,具體是:字首 + 方法傳回值 + 字尾 )

辨別這是一個控制器,與 Struts 的 Action 作用相似。被辨別的類具有處理請求的能力。

@RequestMapping

映射方法通路的 URL 位址,具體的使用放到下一章節中。