如何构建基于maven管理的spring web项目

一年前刚毕业的时候,Java对于我来说是一门挺陌生的语言,此前我一致专注在C/C++以及bash shell上。后来来到了现在的公司,C++用不上,于是“转行”干起了Java。一切都得重新来,根本不知道spring框架为何物,也不知道Maven是何方神圣,因为我只知道STL、POCO、makefile等,做的web项目也是C++(后台)加PHP(前台)。不会就上网找嘛,但是,很少有那种特别详细的、专门面向小白用户的博客,于是我决定站在一个小白的角度(本身就是小白,哈哈)写一篇构建基于maven管理的spring web项目的博客,如果这篇博客能帮助到后来的小白们,这也就是我做这件事的意义,如有理解错误或表述错误的地方也希望大家不吝赐教。

一、准备工作

1、安装Java JDK(Java 8);
2、安装eclipse,集成maven、spring等;
3、安装Apache tomcat(tomcat 8.5)。
以上内容能够在网上找到很多详细的资料,而且进阶到spring框架的朋友,我相信安装这些个东西已经不再话下了,这里我就不再赘述。

二、新建Maven工程

1、新建maven工程

一路的选择与next
eclipse中新建maven工程

选择mavenproject

选择工程位置,默认就是workspace目录下

选择mavenwebapp结构

输入工程名

maven webapp工程结构

这样工程就建好了, 目录结构如上图所示。

2、更改工程属性

接下来需要修改工程的属性,首先是Project Facets,修改java和Dynamic Web Module版本,如下图所示。Java版本需要与系统安装的java版本一致(本机安装的是java1.8);Dynamic Web Module需要更改到更高版本3.0,这个时候可能会出现无法修改的情况,这时我们就需要跳过图形接口,直接去修改它的配置文件。

这里写图片描述

首先,查看工程的路径,在Project Facets这一栏的最上方Resources 。进到找到该路径下的.settings文件夹,在.settings文件夹下有一个 org.eclipse.wst.common.project.facet.core.xml的文件,打开并修改jst.web对应的值,改为3.0,保存后刷新并clean该工程(project>>clean)。再次查看Project Facets会发现Dynamic Web Module已经被修改了。

这里写图片描述

这里写图片描述

这里需要提醒一下小白开发者们,Eclipse只是一个IDE,它提供的所有的图形都是用来修改工程配置文件(.settings)的一个便捷接口,因此跳过eclipse,直接更改配置文件也能到达同样的效果。希望你们可以认真看看.settings目录下的配置文件。

3、配置Deployment Assembly

通过增删配置成如下图所示。如果没有对应的文件夹,只需要在src目录下手动创建即可。

这里写图片描述

4、配置Java Build Path

Source和Library中配置分别如下图所示。分别通过右边的Add Folder和Add Library配置Source和Library。
这里写图片描述

这里写图片描述

5、配置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.yangfang</groupId>
    <artifactId>Maven-Spring-Web</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>Maven-Spring-Web Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>

        <!-- Generic properties -->
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Web -->
        <jsp.version>2.2</jsp.version>
        <jstl.version>1.2</jstl.version>
        <servlet.version>3.1.0</servlet.version>


        <!-- Spring -->
        <spring-framework.version>4.3.0.RELEASE</spring-framework.version>

        <!-- Hibernate / JPA -->
        <hibernate.version>4.2.1.Final</hibernate.version>

        <!-- Logging -->
        <logback.version>1.0.13</logback.version>
        <slf4j.version>1.7.5</slf4j.version>

        <!-- Test -->
        <junit.version>4.11</junit.version>

    </properties>

    <dependencies>

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

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

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

        <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <!-- Other Web dependencies -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Spring and Transactions -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

        <!-- Logging with SLF4J & LogBack -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>


        <!-- Test Artifacts -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.4</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>Maven-Spring-Web</finalName>
    </build>

</project>

6、配置web.xml

web.xml可以被视为web应用程序的main函数,即web程序的入口。

7、配置spring-config.xml

spring-config.xml主要用来告诉spring需要扫描哪些包(package)路径下的类,然后spring会将这些包路径中带有component注解的bean注入到容器,例如@Component、@Service等注解。

<?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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"
    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
            http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    <context:annotation-config />
    <context:component-scan base-package="com.yangfang" >
        <!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> -->
    </context:component-scan>
</beans>

8、配置spring-servlet.xml

spring-servlet.xml是用来配置spring mvc中视图解析器(view resolver)的。

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3.0.xsd
        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
        http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:annotation-config />
    <context:component-scan base-package="com.yangfang.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="3">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="contentType" value="text/html" />
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

9、编写controller类

配置spring mvc中c(controller),

/**
 * 
 */
package com.yangfang.controller;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.stereotype.Controller;

/**
 * @author francisyang
 *
 */
@Controller
public class MyController {

    private static Logger logger = LoggerFactory.getLogger(MyController.class);

    @RequestMapping("hello")
    public String getNewName(@RequestParam("userName") String userName, HttpServletRequest request) {

        logger.info("welcome to controller");
        String newUserName = "yangfang";

        request.setAttribute("newUserName", newUserName);

        return "hello";

    }

}

10、编写index.jsp和hello.jsp
index和hello就是model,spring mvc中最后一个m。
index.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>index</title>
</head>
<body>
    <form action="hello" method="post">

        请输入姓名:<input type="text" name="userName" /> <input type="submit"
            value="提交" /> <br />

    </form>

</body>
</html>

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><%=request.getAttribute("newUserName")%></h1>
</body>
</html>

12、完整的项目结构如下图所示

这里写图片描述
service部分可以暂时不考虑,只需要编写MyController就可以。

13、启动

一般使用tomcat启动web应用程序,将tomcat添加到eclipse后,右键工程Maven-Spring-Web -> Run as -> Run On Server
浏览器中输入localhost:8080就能看到这样的画面。输入任意值,提交即可
这里写图片描述

持续更新中。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值