上一篇文章详细介绍了下载gradle之后环境的配置,已经gradle仓库的基本配置,接下来我们聊聊实战,怎么用gradle搭建一个WEB项目。
环境:Windows10、JDK8
开发工具:Idea
框架:Spring、Gradle
打开idea,找到上篇文章我们一起新建的空白项目(没看上一篇的现在看也行,很短的)
现在它只是一个java项目,并不是javaweb项目,我们先给它注入web项目的灵魂:
在项目的main文件夹下创建一个叫webapp的文件夹,然后再在webapp下面创建一个叫WEB-INF的文件夹,别打错字啊。目录结构如下:
在刚才创建的WEB-INF下面创建一个文件:web.xml
这是web项目的主配置文件
加入以下内容:
<?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_4_0.xsd"
version="4.0">
</web-app>
这是一个空的配置文件,只有xml的根节点和约束头。此时你看你们的webapp文件夹是不是没有我截图的那个小蓝点,这是因为它还没被IDE识别为web文件夹,跟我操作:
找到项目中已经自动生成的build.gradle文件,这是gradle在项目中的配置文件,写这种配置文件所用的语言是Groovy,但是不要慌,这种语言很简单,只需要掌握常规用法就可以,感兴趣可以去稍微学习一下。
打开build.gradle,在里面加入一句话:apply plugin: ‘war’,让这个工程被识别为web工程。
plugins {
id 'java'
}
group 'com.term'
version '1.0-SNAPSHOT'
apply plugin:'java'
apply plugin: 'war'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
好了,现在回头看你的webapp文件夹,是不是多了一个蓝点,如果没有的请仔细检查自己哪一步是否做错了。
开始让gradle发挥真正的作用了,那就是导入项目依赖包。
在build.gradle配置中我们看到默认已经帮我们导入了junit的包,也就是这一句:
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.12’
我们接下来也按照它的形式,导入Spring web相关的包,下面以Spring5.2.2为例:
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
// https://mvnrepository.com/artifact/org.springframework/spring-context
compile group: 'org.springframework', name: 'spring-context', version: '5.2.2.RELEASE'
// https://mvnrepository.com/artifact/org.springframework/spring-web
compile group: 'org.springframework', name: 'spring-web', version: '5.2.2.RELEASE'
// https://mvnrepository.com/artifact/org.springframework/spring-webmvc
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.2.2.RELEASE'
// https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
}
以上导入的依赖包依次是
Junit
Spring-context
spring-web
spring-webmvc
servlet
jsp
因为我们新建项目的时候点了自动导包,当你写上去依赖包的全名,gradle应该已经在帮你自动下载依赖包了。它是从哪下载的呢?就是上一篇文章我们配置的远程仓库的地址。
等到全部的包都下载完毕,我们的项目需要一个spring的主配置文件
打开main/resources,新建Springmvc.xml
配置如下(有注解):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--配置组件扫描(这里需要一个存放Controller的包,以com.term.controller为例)-->
<context:component-scan base-package="com.term.controller"></context:component-scan>
<!--处理器映射器,处理器解析器-->
<mvc:annotation-driven/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 需要在WEB-INF下创建jsp文件夹存放视图 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:default-servlet-handler></mvc:default-servlet-handler>
</beans>
记得按照配置注释中的提示创建对应的目录和包名
打开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_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:Springmvc.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这里面指定了Spring主配置文件和核心servlet
Spring web的开发环境就已经搭建好了,我们新建一个Controller发布一个服务试一下:
在刚才新建的Controller包下新建一个HelloController类,简单写上一个服务如下:
package com.term.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping("/string")
public String returnString() {
return "string";
}
}
然后在WEB-INF文件夹下新建一个叫string.jsp的文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎来到这个页面!
</body>
</html>
最后在webapp目录下新建index.jsp文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:forward page="hello/string"></jsp:forward>
</body>
</html>
这样一来,只要项目启动有请求进入,就会访问index.jsp,然后就会forward到Controller,最后跳转到string.jsp页面,接下来将项目部署到tomcat然后浏览器访问
http://localhost:8080/项目名
就行了。