用Maven创建Spring3 MVC项目(转)

一、环境

spring-framework-3.2.5.RELEASE

jdk1.7.0_11

Maven3.0.5

eclipse-jee-Luna Service Release 1 (4.4.1)

二、配置eclipse环境

1.配置jre,Window->Preferences->Java->Installed JREs->Add

2.配置Tomcat,Window->Preferences->Server>Runtime Environment->Add,填写名称,选择路径,选择上一步的jre


3.配置maven,Window->Preferences->Maven>User Setting->Global Settings,选择路径

例如:D:\Program Files\apache-maven-3.3.9\conf\settings.xml

三、创建Web项目

3.1.新建项目

File->New->Maven Project,

点击next

如图选择maven-archetype-webapp,点击Next,填写

Group Id:com.lei.demo
Artifact Id:spring3-mvc-demo

3.2项目配置

3.2.1

这时候index.jsp会报错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

解决方法:项目右键->Build Path->Configure Build Path->Libraries->Add Library->Server Runtime->Apache Tomcat v7.0

3.2.2 设定Libraries

项目右键->Build Path->ConfigureBuild Path->Libraries->JRE System Library->Edit,选择Workspace default JRE



3.2.3.添加Source Folder

Maven规定,必须创建以下几个Source Folder

src/main/resources

src/main/java

src/test/resources

src/test/java

添加以上的Source Folder

创建好后的目录如下:

2.配置Build Path

 

3.设定4个文件夹的输出Output folder,双击修改

分别修改输出路径为

src/main/resources  对应  target/classes

src/main/java  对应  target/classes

src/test/resources  对应  target/test-classes

src/test/java  对应  target/test-classes

4.修改后如下图

 

6.配置完Build Path后目录如下:

7.将项目转换成Dynamic Web Project

在项目上右键Properties

在左侧选择 Project Facets,单击右侧的 ”Convert faceted from “

 

8.修改Java为你当前项目的JDK,并添加Dynamic Web Module ,最后单击”Further Configuration available“ 链接:

不知道为啥我的Dynamic Web Module不能改版本,于是只改了java到1.7

 

9.修改Content directory 为 src/main/webapp ,单击OK:

 

10.设置完Content directory,ok后再次点击前一界面ok,完成转换成Dynamic Web Project项目

 

11.设置部署程序集(Web Deployment Assembly)

在项目上右键单击,选择Properties,在左侧选择Deployment Assembly

 

12.设置部署时的文件发布路径

  1,我们删除test的两项,因为test是测试使用,并不需要部署。
  2,设置将Maven的jar包发布到lib下。
    Add -> Java Build Path Entries -> Maven Dependencies -> Finish

设置完成后如图

 

ok后,web项目就创建完毕了,目录机构如图

运行后访问工程成功!

右键index.jsp,Debug As,应该能看到无spring mvc的简单界面

四、项目依赖,配置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的配置。

八、      演示

 先看下目录结构:

效果:

转自:http://www.cnblogs.com/leiOOlei/p/3414612.html

http://www.cnblogs.com/leiOOlei/p/3361633.html

参考:http://blog.csdn.net/jiushuai/article/details/7004855

http://blog.chinaunix.net/uid-26959955-id-3248053.html

http://bbs.csdn.net/topics/390669848?page=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值