1、新建一个Gradle工程(Project)

在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo。

2、在该工程下新建一个 module,在弹出的窗口的左侧中选择 [Gradle],右侧勾选[Spring MVC],如下图所示:

并勾选[Application server],下方选择框中选择Tomcat7.0,如无该选项,则选中右边的 [ New... ] -- [ Tomcat Server ],

配置 Tomcat 。配置好后,请选择它。点击next,模块命名为springmvc。

3、项目结构及类包规划如下图:

类包以分层的方式进行组织,当项目规模较大时可为每个子系统创建一个模块,模块内再分层。

注意:如果src下无法创建Directory,需要手动修改springmvc.iml配置文件,如下:

<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>

4、测试

在进行下一步之前先验证一下以上配置的正确性,在IDE右上角的下拉框中选择Tomcat7.0,如图

点击绿色三角形启动,如果正常弹出index.jsp页面即表示正确。

5、用Gradle下载Spring MVC相关包

编辑build.gradle文件,代码如下:

apply plugin: 'idea'
apply plugin: 'java' repositories {
mavenCentral()
maven { url "http://repo.spring.io/release" }
} dependencies {
compile(
"org.springframework:spring-context:4.0.5.RELEASE",
"org.springframework:spring-web:4.0.5.RELEASE",
"org.springframework:spring-webmvc:4.0.5.RELEASE"
)
testCompile("org.springframework:spring-test:4.0.5.RELEASE")
runtime("jstl:jstl:1.2")
} task copyJars(type: Copy) {
from configurations.runtime
into 'lib' // 目标位置

在build.gradle文件所在目录下运行命令:gradle copyJars,gradle自动会分析jar其中依赖关系一并下载,lib目录下就是你需要的jar包

Gradle文件的语法请读者另找资料熟悉,如果还缺少其他包,自行在dependencies 中添加即可。

6、Spring MVC框架配置

首先需要对web.xml文件进行配置,以便Web容器启动时能够自动启动Spring容器,也可以通过代码配置Spring,

通过代码配置Spring请参考文章:http://makble.com/gradle-example-to-build-spring-mvc-application

通过web.xml文件配置的方式如下:

6.1先在resources文件夹下添加Spring Config类型的文件,命名为:applicationContext,

6.2在web.xml文件中添加如下代码:

  <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <servlet>
<servlet-name>spring-web</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>spring-web</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

通过以上配置文件创建了一个名为spring-web的Servlet,并对这个Servlet的URL路径映射进行了定义,让所有以.html为后缀

的URL都能被spring-web Servlet截获,进而转由Spring MVC框架进行处理。请求被Spring MVC截获后,首先根据请求的URL

查找到目标的处理控制器,并将请求参数封装成一个“命令对象”一起传给控制器处理,控制器调用Spring容器中的业务Bean完

成业务处理工作并返回结果视图。

6.3 在controller包下面创建一个类LoginController:

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @Controller
public class LoginController { @RequestMapping(value = "/login.html")
public String loginPage() {
return "login";
} @RequestMapping(value = "/loginCheck.html")
public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand) {
return new ModelAndView("main");
}
}

创建LoginCommand 类

public class LoginCommand {
private String userName; private String password; public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
}
}

6.4 在web-inf下创建一个与上一步定义的Servlet同名的Spring配置文件即spring-web-servlet.xml,代码如下:

<!-- 扫描web包,应用Spring的注解 -->
<context:component-scan base-package="controller"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>

6.5 web-inf下创建login.jsp和main.jsp页面,index页面代码如下:

<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>欢迎!</h1>
<a href="/login.html">进入登录页面</a>
</body>
</html>

login.jsp页面代码如下:

<html>
<head>
<title>登录</title>
</head>
<body>
<c:if test="${!empty error}">
<c:out value="${error}"/>
</c:if>
<form action="<c:url value="/loginCheck.html"/>" method="post">
用户名:
<input type="text" name="userName">
<br>
密 码:
<input type="password" name="password">
<br>
<input type="submit" value="登录"/>
</form>
</body>
</html>

7、测试

启动Tomcat7.0,弹出index页面,点击链接进入login页面,点击登录进入main页面。

  

Demo源码下载:VelocityDemo.zip,后续章节将会在该Demo基础上集成Velocity和MyBatis。

Spring学习(二)——使用Gradle构建一个简单的Spring MVC Web应用程序的更多相关文章

  1. 构建一个简单的Spring Boot项目

    11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...

  2. 构建一个简单的基于MVC模式的JavaWeb

    零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...

  3. struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb

    在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...

  4. Spring 学习二-----AOP的原理与简单实践

    一.Spring  AOP的原理 AOP全名Aspect-Oriented Programming,中文直译为面向切面(方面)编程.何为切面,就比如说我们系统中的权限管理,日志,事务等我们都可以将其看 ...

  5. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

  6. go语言实现一个简单的登录注册web小程序

    最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣.根据<go web编程>中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜 ...

  7. 【Android Developers Training】 3. 构建一个简单UI

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. tensorflow笔记(二)之构造一个简单的神经网络

    tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...

  9. 在eclipse中配置一个简单的spring入门项目

    spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性.可测试性和松耦合性的角度,任何java应用程序都可以利用这个思 ...

随机推荐

  1. 软件项目需求调研中的5W+1H定律案例分析

    转:http://www.educity.cn/se/620915.html 对于软件的需求调研活动,虽然曾经写过三篇相关的需求管理文章,出发角度是从整体的需求管理过程考虑:在引入CMM(二)需求管理 ...

  2. python pipenv 包管理

    原文链接:https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv 翻译者:Jiong 在thought ...

  3. Kibana(elasticsearch操作工具)的安装

    在安装完es集群的基础上 1.创建文件夹并赋权 # 使用root进行操作 mkdir -p /export/data/kibana mkdir -p /export/logs/kibana # 赋权给 ...

  4. cdoj916-方老师的分身 III 【拓扑排序】

    http://acm.uestc.edu.cn/#/problem/show/916 方老师的分身 III Time Limit: 3000/1000MS (Java/Others)     Memo ...

  5. 解剖Nginx·自动脚本篇(4)工具型脚本系列

    目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...

  6. 85. Maximal Rectangle 由1拼出的最大矩形

    [抄题]: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...

  7. Oracle表格字段采用sequence进行自增长时,采用Dbutils进行insert或update数据时的处理技巧

    // 定义插入记录的方法 public Teacher insert(String name, String gender, Double score) { // 获得连接 Connection co ...

  8. Openssl ecparam命令

    一.简介 椭圆曲线密钥参数生成及操作 二.语法 openssl ecparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out fi ...

  9. Windows多线程编程入门

    标签(空格分隔): Windows multithread programming 多线程 并发 编程 背景知识 在开始学习多线程编程之前,先来学习下进程和线程 进程 进程是指具有一定独立功能的程序在 ...

  10. strtotime()

    date('Y-m-d H:i:s',time()) //24小时 date('Y-m-d h:i:s',time()) //12小时