您的位置:首页 > 编程语言 > Java开发

maven + spring mvc 创建Java web项目

2016-11-27 17:02 323 查看
本篇文章,我们会教你通过maven和spring mvc创建一个Java web项目。关于maven如何创建普通的Java项目,上一篇文章已经作了说明。

开发环境:

1.jdk 1.7

2.Maven 3.3.9

3.Eclipse Mars.1

4.Spring 4.2.1.RELEASE

5.Logback 1.0.13

1.通过maven模板创建一个Java web项目

通过命令行进入eclipse所在的workspace文件夹,输入如下命令:

mvn archetype:generate -DgroupId=org.thinkingingis -DartifactId=MavenSpringWebApp -DarchetypeArtifactId=maven-archetype-webapp




-DgroupId 表示你的组织或企业的名称

-DartifactId 表示你本项目的名词

-DarchetypeArtifactId 表示maven所提供的模板,maven-archetype-webapp是maven所提供众多模板中创建webapp的模板。

一段时间以后,出现“BUILD SUCCESS”后,一个名为“MavenSpringWebApp”的Java Web的项目就构建好了。(这一步可能会出现一些问题,反复几次即可成功。)

2.项目的目录结构
通过maven构建的Java web项目,其目录结构如下:



maven自动生成的文件目录中,包括部署描述信息文件:web.xml, pom.xml 和 index.jsp

将web.xml文件中servelt 2.3 改为2.5,如下:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_5.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>


3.将该项目转换为eclipse工程
首先
cd MavenSpringWebApp 进入该项目文件夹下,输入mvn eclipse:eclipse -Dwtpversion=2.0-Dwtversion=2.0
是告诉Maven将该工程转换为一个eclipse web project(WAR),而不是JAR包。wtp表示 web tool platform
将项目导入到eclipse中:File-import-Existing Projects into Workspace



4.更新POM文件,添加项目所依赖的jar包
<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>org.thinkingingis</groupId>
<artifactId>MavenSpringWebApp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>MavenSpringWebApp Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
<jdk.version>1.7</jdk.version>
<spring.version>4.2.1.RELEASE</spring.version>
<jstl.version>1.2</jstl.version>
<junit.version>4.11</junit.version>
<logback.version>1.0.13</logback.version>
<jcl-over-slf4j.version>1.7.5</jcl-over-slf4j.version>
</properties>

<dependencies>
<!-- Junit Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>

<!-- Spring Core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl-over-slf4j.version}</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<!-- jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>

</dependencies>
<build>
<finalName>MavenSpringWebApp</finalName>

<plugins>
<!-- Eclipse project -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<!-- Always download and attach dependencies source code -->
<downloadSources>true</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
<!-- Avoid type mvn eclipse:eclipse -Dwtpversion=2.0 -->
<wtpversion>2.0</wtpversion>
</configuration>
</plugin>

<!-- Set JDK Compiler Level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>

</plugins>

</build>
</project>

5.完成务逻辑代码
5.1 最终的目录结构如下:





如果没有的文件夹, 如src/main/java需要手动创建。然后右击该文件夹选择 Build Path-Use as a source folder
5.2 BaseController.java 代码
package org.thinkingingis.controller;

import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class BaseController {

private static int counter = 0;
private static final String VIEW_INDEX = "index";
private final static org.slf4j.Logger logger = LoggerFactory.getLogger(BaseController.class);

@RequestMapping(value = "/", method = RequestMethod.GET)
public String welcome(ModelMap model) {

model.addAttribute("message", "Welcome");
model.addAttribute("counter", ++counter);
logger.debug("[welcome] counter : {}", counter);

// Spring uses InternalResourceViewResolver and return back index.jsp
return VIEW_INDEX;

}

@RequestMapping(value = "/{name}", method = RequestMethod.GET)
public String welcomeName(@PathVariable String name, ModelMap model) {

model.addAttribute("message", "Welcome " + name);
model.addAttribute("counter", ++counter);
logger.debug("[welcomeName] counter : {}", counter);
return VIEW_INDEX;

}

}

5.3 Spring配置文件 mvc-dispatcher-servlet.xml
<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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="org.thinkingingis.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>


5.4 部署描述文件 web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

<display-name>Spring webapp</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>


5.5 将index.jsp文件移动至webapp/WEB-INF/pages下,index.jsp
<html>
<body>
<html>
<body>
<h2>Hello World!</h2>
<h1>Maven + Spring MVC Web Project Example</h1>
<h2 style="color:#069">Message : ${message}</h2>
<h2>Counter : ${counter}</h2>
</body>
</html>
</body>
</html>

5.6 在src/main/resources下新建一个logback.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">

<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>

</layout>
</appender>

<logger name="org.thinkingingis.controller" level="debug"
additivity="false">
<appender-ref ref="STDOUT" />
</logger>

<root level="error">
<appender-ref ref="STDOUT" />
</root>

</configuration>


6.将项目打包,并部署
在MavenSpringWebApp文件夹下,通过命令行输入: mvn package
一个WAR包文件会出现在target下



将MavenSpringWebApp.war复制到你的tomcat根目录下的webapps文件夹下即可(我的是D:\apache-tomcat-7.0.69\webapps )

7. 启动tomcat
输入
http://localhost:8080/MavenSpringWebApp/
http://localhost:8080/MavenSpringWebApp/ThinkingInGIS

看看会发生什么吧...





至此,一个通过maven创建的java web程序就完成啦。

github地址:点击打开链接

(如遇到问题,请留言给作者,以便共同探讨gis知识。thinkingingis@qq.com)

微信公众号:ThinkingInGIS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: