天天看点

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 地址,具体的使用放到下一章节中。