Idea通过gradle搭建SpringMVC环境

2018-02-06 10:46:04

最近在学SpringMVC,此框架还是挺不错的,对于我大phper还是比较易于上手的

所谓万事开头难,本文将介绍使用idea搭建SpringMVC的全过程

  1. 首先点击File -> New -> Project -> Gradle 勾选Java及Web,然后点击Next,如图所示
  2. 下一个页面GroupID及ArtifactId自己定义一下,Version使用默认,如图所示,点击NEXT
  3. 勾选Use Local gradle distribution ,选择自行下载的Gradle home,本文使用Gradle-4.4.1构建,如图,点击Next
  4. 最后一步,核实信息,点击Finish

至此,目录结构大概就已经出来了,如图所示

接下来我们打开build.gradle文件,加入SpringMvc依赖,代码如下所示

  • build.gradle
group 'com.nosay.testMVC'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'org.springframework:spring-webmvc:4.3.6.RELEASE'
}

接下来进入Gradle projects,点击刷新按钮,下载过程还是比较快的,这样就把所依赖的Spring包全部加载了进来,接下来点击 Run -> Edit Configurations -> +
把tomcat添加进来,过程略,如图

需要注意一点的是,需要点击Depolyment,然后点击+号,把Artifacts,把所需的war包引入进来,如图

然后试运行一下,发现index.jsp文件是可以正常加载的。

接下来在src -> main -> java目录下,建立 com.nosay.controller包,在此包中建立nosayContrioller类文件,文件内容如下所示

package com.nosay.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value = "/hello", method = RequestMethod.GET)
class nosayController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)

    public String printHello(Model model)
    {
        model.addAttribute("msg","Hello world");
        model.addAttribute("name","nosay");
        return "hello";
    }

}

然后在webapp目录下新建WEB-INF文件夹以及views文件夹,在此文件夹在建立两个spring config文件,名称分别为web.xml和dispatcher-servlet.xml

其中web.xml内容为

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

dispatcher-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.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="com.nosay.controller" />
    <mvc:default-servlet-handler />
    <mvc:annotation-driven />
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

最终目录如图所示

试运行一下,报错

Message Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

打开build.gradle文件,添加一行,增加jstl拓展

compile 'jstl:jstl:1.2'

刷新build后,重新运行程序,报404错误,那是因为我们还没有生成相应的jsp文件,在webapp > WEB-INF > views文件中添加hello.jsp文件,内容为

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>${msg}</title>
</head>
<body>
<h1>${msg}</h1>
<span>${name}</span>
</body>
</html>

重新执行,正确显示,如图

至此,IDEA下,SpringMVC环境搭建成功。