• JAVA学习6:用Maven创建Spring3 MVC项目


    一、      环境

    spring-framework-3.2.4.RELEASE

    jdk1.7.0_11

    Maven3.0.5

    eclipse-jee-juno-SR2-win32

    二、      创建Web项目

    Eclipse中创建Web项目,见前边日志

    三、      项目依赖,配置pom.xml文件

    pom.xml文件如下:

     
    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.lei.demo</groupId>
      <artifactId>spring3-mvc-demo</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>spring3-mvc-demo Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>spring3-mvc-demo</finalName>
      </build>
    </project>
     

    四、      Controller & Mapping

    在Spring3中,annotation的应用无处不在,以下创建一个Controller,命名为HelloController,请注意@RequestMapping的配置。

    HelloController.java

     
    package com.lei.demo.controller;
    
    import java.text.SimpleDateFormat;
    
    import javax.print.attribute.standard.DateTimeAtCompleted;
    import javax.xml.crypto.Data;
    
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("/welcome")
    public class HelloController {
        @RequestMapping(method = RequestMethod.GET)
        public String printWelcome(ModelMap model) {
     
            model.addAttribute("message", "Spring3 MVC 例子");
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
            model.addAttribute("date", dateFormat.format(new java.util.Date()));
            return "hello";
        }
    }
     

    五、      创建Jsp页面

    hello.jsp如下

     
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>hello</title>
    </head>
    <body>
        <h1>Message : ${message}</h1>
        <h2>当前时间:${date}</h2>
    </body>
    </html>
     

    六、      Spring 的配置文件

    在WEB-INF下,创建配置文件mvc-dispatcher-servlet.xml如下

     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-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="com.lei.demo.controller" />
        
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/WEB-INF/pages/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>    
     
    </beans>
     

     以上配置视图解析中,属性“prefix”和属性“suffix”负责组装呈现视图的前缀和后缀,再配合自己写的controller,此例是“HelloController.java”中的return ”hello“,那么对应关系就是如下:

    [prefix]+[controller return]+[stuffix]="/WEB-INF/pages/"+"hello"+".jsp"=/WEB-INF/pages/hello.jsp

    七、      Web配置文件和Spring配置文件的集成

    web.xml文件配置如下

     
    <web-app id="WebApp_ID" version="2.4"
        xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <display-name>Archetype Created Web Application</display-name>
      <servlet>
            <servlet-name>mvc-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>mvc-dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    </web-app>
     

    配置说明:

    使用Spring MVC,配置DispatcherServlet是第一步。DispatcherServlet是一个Servlet(这个Servlet从HttpServlet继承而来),所以可以配置多个DispatcherServlet。DispatcherServlet是前置控制器,配置在web.xml文件中的。负责拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据“某某规则”分发到目标Controller(我们写的Action)来处理。“某某规则”:是根据你使用了哪个HandlerMapping接口的实现类的不同而不同。

    <servlet-name> mvc-dispatcher</servlet-name>这个Servlet的名字是mvc-dispatcher,可以有多个DispatcherServlet,是通过名字来区分的。每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中。 

    上边的web.xml为例

    1.<servlet>定义了一个名字为mvc-dispatcher的servlet,其中<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servlet容器一起启动。

    2.<servlet-mapping>定义了哪个servlet应该处理什么样的url匹配,上例中定义mvc-dispatcher这个servlet来处理所有匹配“/”的url,

     <url-pattern>/</url-pattern>,会匹配到类似“/welcome”这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url”。

    3.<context-param>元素含有一对参数名和参数值,用作应用的ServletContext上下文初始化参数。参数名在整个Web应用中必须是惟一的。

    这里contextConfigLocation这个参数名,是被spring定义好的,会去加载spring的配置文件

    在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean,此处就会寻找mvc-dispatcher-servlet.xml文件来加载spring的配置。

    八、      演示

     先看下目录结构:

    效果:

  • 相关阅读:
    Redis Hashes 巧用sort排序
    Redis 压缩存储的配置
    计算
    关于时间大小判断的坑和网上工具类的看法
    Mysql中字段类型之时间戳大坑2
    Mysql中字段类型之时间戳大坑
    Spring和springmvc父子容器注解扫描问题详解
    JXL导出Excel工具类
    Maven学习
    MySQL之账户管理
  • 原文地址:https://www.cnblogs.com/jcomet/p/5570429.html
Copyright © 2020-2023  润新知