还是写一个这样的博客吧.
Eclipse:4.3.2-jee.
tomcat:7
Maven:3-2-1
开始:
1 创建一个 Maven Project
2 选择一个工程路径
3 Maven插件带有很多的模板,这里选择 quickstart
4 输入Group Id,Artifact Id,Version .Maven会通过这几个预创建你的代码目录,所以注意下.
5 Maven项目到这里就创建好了,目录如下
6 从上图看见项目初始引入的jdk是1.5的,这里我们改成1.6的.
7 已经变为1.6了
8 quickstart为我们创建是非web项目,所以我们要在这里转换一下,
Project - properties - Project Facts - Convert to facted form.
9 勾选两项, Dynamic Web Module 3.0 ,Java 1.6 ,转换之.
10 转换后发现工程会自动创建WebContent目录.Maven工程里不需要这个目录.
我们将WebContent下的META-INF和WEB-INFO文件夹拷贝到src的main目录下(先复制过去,再删除原来的),
这是因为Maven会检测这个目录下的web.xml,如果不在这里会报错.
11 WEB-INFO目录结构如下,不够的补充之.
在添加两个xml文件和一个jsp文件.
web.xml:这个一会下面在详细解释(这个已经是我添加好之后了的.)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> 3 <display-name>dubbo-provider</display-name> 4 <context-param> 5 <param-name>contextConfigLocation</param-name> 6 <param-value> 7 /WEB-INF/springmvc-servlet.xml 8 </param-value> 9 </context-param> 10 <listener> 11 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 12 </listener> 13 <filter> 14 <filter-name>encodingFilter</filter-name> 15 <filter-class> 16 org.springframework.web.filter.CharacterEncodingFilter 17 </filter-class> 18 <init-param> 19 <param-name>encoding</param-name> 20 <param-value>UTF-8</param-value> 21 </init-param> 22 <init-param> 23 <param-name>forceEncoding</param-name> 24 <param-value>false</param-value> 25 </init-param> 26 </filter> 27 <filter-mapping> 28 <filter-name>encodingFilter</filter-name> 29 <url-pattern>/*</url-pattern> 30 </filter-mapping> 31 <servlet> 32 <servlet-name>springmvc</servlet-name> 33 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 34 <load-on-startup>1</load-on-startup> 35 </servlet> 36 <servlet-mapping> 37 <servlet-name>springmvc</servlet-name> 38 <url-pattern>/</url-pattern> 39 </servlet-mapping> 40 </web-app>
springmvc-servlet.xml:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 7 8 <context:component-scan base-package="com.demo.springmvc.controller"/> 9 10 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 11 <property name="prefix" value="/WEB-INF/pages/"/> 12 <property name="suffix" value=".jsp"/> 13 </bean> 14 15 </beans>
hello.jsp:
1 <html> 2 <body> 3 <h1>${msg}</h1> 4 </body> 5 </html>
这里我要特别强调一下:
springmvc对springmvc的配置文件命令有一个默认的规则,
会取web.xml文件里的DispatchperServlet的servletname 为前缀,在加上"-servlet.xml"结尾.
web.xml的内容比较简单,就是一个spring默认的监听器和一个springmvc的servlet.
再在com.demo.springmvc下创建controller的package.并创建一个HemoController.Java.
HomeController.java:
1 package com.demo.springmvc.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.ui.ModelMap; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RequestMethod; 7 8 @Controller 9 public class HelloController { 10 11 @RequestMapping(value = "/hello", method = RequestMethod.GET) 12 public String hello(ModelMap model) { 13 model.addAttribute("msg", "Hello world!"); 14 return "hello"; 15 } 16 }
我们在controller 只需配置为 /hello 即可.
这里说一下路径问题:
这里<property name="prefix" value="/WEB-INF/pages/"/>设置为/WEB-INF/pages/
springmvc访问时 将会自动将/WEB-INF/pages/插入到我们在浏览器上输入的UML.
比如我们要浏览hello.jsp页面,我们应该在浏览器输入 : http://localhost:8080/springmvc/hello ,
这个地址会被一分为二 ,
第一部分为http://localhost:8080/springmvc
第二部分为/hello ,这个为我们的jsp页面在tomcat下发布路径相对于/WEB-INF/pages/的路径.(hello.jsp的在tomcat下的发布路径是 /springmvc/WEB-INF/pages/hello.jsp)
其中第一部分 http://localhost:8080/springmvc 为 ip地址+端口+项目context ,
这时springmvc会在 http://localhost:8080/springmvc 后面自动加上/WEB-INF/pages/ ,然后在加上第二部分.
在jsp页面上:
如果我们要在jsp上用form表单提交到hello.jsp(加上从页面A提交过来).
这时页面A的form应为:
<form action="/springmvc/hello" method="post">
"/springmvc/hello" 这样的形式,即 项目的context + 页面在发布路径下相对 /WEB-INF/pages/ 的路径.
而
<form action="/springmvc/hello" method="post">提交对应的controller 路径注解对应 为@RequestMapping(value = "/hello", method = RequestMethod.POST)即可.
12 现在我们下载springmvc需要的依赖包.
打开中央库,输入spring.
13 找到 Spring Web MVC.
14 选择一个 ,我选的是最新的.
15 拷贝之.
16 再在pom.xml中加入如下代码,限定Maven的编译版本:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>${project.build.sourceEncoding} </encoding> </configuration> </plugin> </plugins> </build>
17 最后得到的pom.xml文件夹如下:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.demo</groupId> 6 <artifactId>springmvc</artifactId> 7 <version>0.0.1-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>springmvc</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <dependencies> 18 <dependency> 19 <groupId>org.springframework</groupId> 20 <artifactId>spring-webmvc</artifactId> 21 <version>4.1.0.RELEASE</version> 22 </dependency> 23 <dependency> 24 <groupId>junit</groupId> 25 <artifactId>junit</artifactId> 26 <version>3.8.1</version> 27 <scope>test</scope> 28 </dependency> 29 </dependencies> 30 <build> 31 <plugins> 32 <plugin> 33 <groupId>org.apache.maven.plugins</groupId> 34 <artifactId>maven-compiler-plugin</artifactId> 35 <version>2.0.2</version> 36 <configuration> 37 <source>1.6</source> 38 <target>1.6</target> 39 <encoding>${project.build.sourceEncoding}</encoding> 40 </configuration> 41 </plugin> 42 </plugins> 43 </build> 44 </project>
好了,现在就可以编译项目了. Project-run as -maven install, 编译成功.
18 现在来配置一下发布目录.添加webapp目录和Maven依赖包.
19 得到这样一个发布结构.
至此,就完成了.
20 .创建Server,将项目添加至tomcat,publish一下,可以去webapps或者相应目录看一下发布后的结构,这是合理的web包结构.
运行之.
打开浏览器输入:http://localhost:8080/springmvc/hello
成功,ok.
PS:今早8点30到公司,自己先花十分钟把边创建项目,边截图.一直搞到现在,比较匆忙, 可能不太细.
代码已经上传 下载