maven + spring mvc 创建Java web项目

本篇文章,我们会教你通过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 )

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

github地址:点击打开链接

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

微信公众号:ThinkingInGIS

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值