1、利用maven骨架直接建立基础工程
使用的软件为idea,首先file-new-project选择maven,使用archetype(骨架)建立一个简单的webapp工程,具体选择
Archetype是maven中的骨架/原型,可以理解为代码工程原型,通过maven-archetype-webapp就可以快速建立一个webapp工程,同理,通过maven-archetype-quickstart可以快速建立一个简单的java工程。点击next后填入工程坐标:
GroupId是机构号,一般形式如com.hanyu,artifactId是工程唯一id,用以区分不同工程,version是版本,开发版本用SNAPSHOT,发布版本用RELEASE。
然后进行maven基础配置,maven home directory是用于此工程的maven文件夹的bin文件夹所在目录:
Usersetting file是此工程用的setting.xml,setting.xml类似pom,但更像一个稳定用于多个工程的pom文件,所以其中的内容共用性多于独特性,settings.xml有全局版和用户版,用户版一般放在.m2文件夹中;local repository是本地仓库,也就是maven通过依赖下载的包的本地存储地址。
然后最后进行工程目录等设置,默认即可
finish后完成骨架构建。
每当新打开工程之后,或者加入依赖之后,会有此标志,代表下载更新,点击import changes即可
结束之后,第一步利用maven搭建项目骨架就完成了,非常简单。刚完成时工程结构如图
2、通过配置pom文件下载需要的包(例如SpringMvc等相关的包)以及完善工程文件组成结构
这里附上我的pom,按照这个来的话,不会有错(虽然不保证有没有冗余,等以后精通了再来清理)
<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>www.codefeather</groupId>
<artifactId>testMavenProject001</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>testMavenProject001 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<!--Spring Web + Spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<!--json支持-->
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.ezmorph/ezmorph -->
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.6</version>
</dependency>
<!--json serialize and deserialization-->
<!-- 引入fastjson依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.12</version>
</dependency>
<!-- 引入gson依赖 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
<!--NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config-->
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.4.6.v20170531</version>
</dependency>
</dependencies>
<build>
<finalName>testMavenProject001</finalName>
</build>
</project>
更新后,将文件目录标准化,因为maven就是一个约定优于配置的工具,我们约定了工程目录标准,如图,自己动手将不全的建立,但是要注意把相应的文件夹进行属性的设置:
其中java文件夹配置为source类型,test文件夹配置为test类型,此时会发现页面上工程目录颜色变化了,同时,如果尝试在设置为source类型的java文件夹中建立文件夹,发现只能建立package。
以下内容参考http://www.cnblogs.com/qixiaoyizhan/p/5819392.html,此楼主很热心
3、设置几个配置文件
开始建立配置文件,首先是web.xml,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!-- Spring MVC配置 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>-->
<!-- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法) -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
<!--<url-pattern>*.do</url-pattern>-->
</servlet-mapping>
<!-- Spring配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
spring-servlet.xml和classpath:applicationContext.xml标红是因为还没有建立相应文件,下面进行分别建立
在WEB-INF文件夹下面建立spring-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
<mvc:annotation-driven >
</mvc:annotation-driven>
<!-- 启动包扫描功能,以便注册带有@Controller、@service、@repository、@Component等注解的类成为spring的bean -->
<context:component-scan base-package="HelloSpringMvc.controller" />
<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"/> <!-- 前缀 -->
<property name="suffix" value=".jsp"/> <!-- 后缀 -->
</bean>
</beans>
然后在resources资源文件夹下建立applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
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.1.xsd">
<!-- 我们可以在其中添加我们所需要配置的bean,也可以添加相应的数据库连接和事务处理等等,方便后续拓展
-->
</beans>
4、写一个简单的控制器controller
好了,现在建立一个controller,如下,注意在java中建立包的时候可能会遇到“想建立同级文件夹却建立了下级”,这个时候通过建立文件夹的时候命名用全名的方式可以解决,比如想在java文件夹下面建立两级包:HelloSpringMvc-controller,这个时候输入HelloSpringMvc.controller即可,如果还想再HelloSpringMvc下建立一个model包,那么直接右键HelloSpringMvc可能不能借建立,这个时候右键java,建立输入HelloSpringMvc.model即可,如图:
package HelloSpringMvc.controller;
/**
* Created by yuhan.shen on 2017/10/25.
*/
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/Test/*") //访问的url地址前缀,可以不写,写了就必须在方法url前面先加上class url 进行区分控制器
public class TestController
{
//访问地址:http://localhost:8080/Test/returnSuccess
@RequestMapping(value = "returnSuccess") //实际访问的url地址
public String returnSuccess() {
return "/Views/success"; //返回Views文件夹下的success.jsp页面
}
}
由于returnSuccess方法返回的是Views文件夹下的success.jsp,.因此我们在webapp-Views下建立此jsp文件
<%--
Created by IntelliJ IDEA.
User: yuhan.shen
Date: 2017/10/25
Time: 10:18
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello!SpringMvc!
</body>
</html>
5、利用tomcat加载工程
步骤很简单:
然后运行,键入url,http://localhost:8080/Test/returnSuccess,到这里,一个最简单的javaweb工程就建立起来了。