记录一下使用maven构建第一个spring mvc工程的经过。

环境:

eclipse Kepler Service Release 2

jdk 1.7

tomcat7.0.52

这里假定eclipse中maven已经正确配置。

流程:

第一步: 使用eclipse构建普通maven工程

第二步: 将此工程构造成基于maven的java web工程

第三步: 改造为简单的spring mvc工程

第四步: 引入jquery、传送json数据

下面是详细过程:

第一步:使用eclipse构建普通maven工程

File-->New-->Project...-->Maven Project :

Next-->,

勾选Crate a simple project....  Next-->

输入groupId 和ArtifactId, Version使用默认就可以,Packaging选war,其他可以不填 -->Finish

下图是刚建出来的maven工程的结构:

第二步: 将此工程构造成基于maven的java web工程

此时其实默认已经是java web工程,不过编译级别和web版本教低,我们修改一下。

首先确保你电脑安装了jdk1.7,并且正确设置,选择菜单:Window-->Preferences-->Java

Compiler里面修改为1.7

Installed JRE里面,选择一个jdk1.7的目录添加进去,记住要选择jdk,而不是jre,因为如果选成jre,在使用maven编译打包的时候会提示无法编译。

接下来,右击工程名,选择Properties

Java Build Path里面,Add Library,换成jdk1.7,删除原有的低版本jdk

Java Compiler里面,改为1.7

Apply-->OK

Project Facets里面,去掉Dynamic Web Module勾选,Java选项上版本改为1.7

Apply-->Ok

刚才去掉了Dynamic Web Module的勾选,是因为默认的web配置不能满足,我们要重新设置。所以,接下来,再次右击工程名,选择Properties-->Project Facets

勾上Dynamic Web Module,并把版本改为3.0,点击下面的Further configuration available...,看到如下对话框:

将Content directory改为webapp,并勾选生成web.xml选项,OK。

这时会看到,webapp目录下的结构发生了变化,工程以webapp作为web根目录

接下来,右击工程名,选择Maven-->Update Project..,执行完后,会发现工程名上面可能出现一个红叉,这是由于maven编译级别和eclipse中设置的级别不同导致,需要在pom.ml文件中添加编译的插件。

将以下代码加入pom.xml的<project>主节点下

<build><finalName>spring2</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins>
</build>

再次执行Maven-->Update Project..,红叉消失。

接下来,验证web工程。

在webapp目录下,创建welcome.jsp文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
你好,欢迎访问天街小雨!

但是文件报红,这时因为没有引入servlet和jsp的jar引起的,所以,往pom.xml里面加入这两个的依赖:

<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.4</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version></dependency>
</dependencies>

保存,并再次执行Maven-->Update Project.. 报红消失。

配置tomcat7.0.52,项目添加到tomcat中:

启动tomcat,浏览器中输入地址:http://localhost:8080/spring2/welcome.jsp,看到欢迎语!

第三步: 改造为简单的spring mvc工程

1.pom.xml中加入spring mvc的相关依赖:

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.6.RELEASE</version>
</dependency>

再次执行Maven-->Update Project..

2. 配置web.xml ,配置spring servlet和url映射:

web.xml:

<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" id="WebApp_ID" version="3.0"><servlet><servlet-name>spring2</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring2</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

<url-pattern>/</url-pattern> 代表根目录下的所有url都可以被spring转发。

3. 配置spring mvc的配置文件,配置文件的命名,是sevlet的名字加上-servlet.xml, 在这个工程里,web.xml里面配的servlet的名字是spring2,所以spring mvc的配置文件名是spring2-servlet.xml , 路径在WEB-INF下面,spring默认会找这个文件:

spring2-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-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><context:annotation-config/><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" /></bean></mvc:message-converters></mvc:annotation-driven><context:component-scan base-package="spring2.controller"/><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/templates/"/><property name="suffix" value=".jsp"/></bean>
</beans>

<context:component-scan base-package="spring2.controller"/>这句表示 程序会扫描spring2.controller这个包,那么这个包下面的类,如果有spring的注解,都会被相应处理,我们创建这个包,并创建controller类,如果没有这句,controller类不会被扫描到,也就不会被当做controller来运行。这里我们创建的controller叫做MainController

MainController.java:

package spring2.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;@RestController
public class MainController {@RequestMapping(value = "home", method = RequestMethod.GET)public ModelAndView taskReleaseCon() {ModelAndView mv = new ModelAndView();mv.setViewName("home");return mv;}}

@RestController这个注解表示他是一个controller,value=“home”,表示如果url是根目录/home,就会跳转到这个方法里面来处理。mv.setViewName("home");这句表示,这个请求会被最终转发到WEB-INF/templates/home.jsp,我们创建WEB-INF/templates/home.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>spring home page</title>
</head>
<body>天街小雨欢迎你来到spring mvc
</body>
</html>

这时候还需要加入jstl依赖,pom.xml:

<dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version>
</dependency>

重启tomcat,浏览器地址中输入:http://localhost:8080/spring2/home,页面看到欢迎语。

第四步: 引入jquery、传送json数据

我们在webapp目录下创建js目录,将jquery-2.0.3.min.js拷到这个目录下,当然放在别处也可以,在home.jsp中引入这个文件:

<script type="text/javascript" src="jquery-2.0.3.min.js"></script>,为了确保这样的写法能够被spring mvc找到,我们需要在spring2-servlet.xml中加入资源的配置

spring2-servlet.xml:

<mvc:resources mapping="/**" location="/js/"/>

意思是将/js/目录下的资源,映射到根目录下,不知道表达的清楚不,可以自己先不加这句试试效果,对比一下。

这样,引入了jquery,写个ajax测试一下,home.jsp:

<script type="text/javascript">$.ajax({type: 'get',url: 'test',dataType: "text",success: function (data) {alert(data)}});</script>

ajax的地址为test,我们需要配置映射test的controler,还是在MainControler里面,添加一个方法:

@RequestMapping(value = "test", method = RequestMethod.GET)
public String test() {return "hello";
}

现在流程变成这样,我们访问home的时候,跳转到home.jsp, 在home.jsp,有一个ajax请求,访问test,test返回一个字符串“hello”,浏览器接收到hello并弹出来。

重启tomcat,再次访问http://localhost:8080/spring2/home,页面弹出hello

接下来,要让controller对test请求返回json数据,浏览器接收并处理json

首先需要添加json处理的maven依赖,pom.xml:

        <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-core</artifactId>  <version>2.5.3</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-databind</artifactId>  <version>2.5.2</version>  </dependency>  <dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-annotations</artifactId>  <version>2.5.3</version>  </dependency>

然后,创建一个bean,spring2.domain.User,实现序列化接口

User.java:

package spring2.domain;import java.io.Serializable;public class User implements Serializable {String name;String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(String name, String password) {super();this.name = name;this.password = password;}}

在controller里面,将返回值改为User类型,返回一个User对象,MainController.java:

@RequestMapping(value = "test", method = RequestMethod.GET)
public User test() {return new User("xiaoyu","123456");
}

在客户端,修改一下ajax的结果处理方式,home.jsp

$.ajax({type: 'get',url: 'test',dataType: "json",success: function (data) {alert(data.name)}
});

再次访问http://localhost:8080/spring2/home:

如果需要打包项目,单独放到tomcat运行,步奏如下:

右击工程名-->Run As-->Maven Install, 就会在工程target目录下生成spring2.war, 将war包扔到tomcat的webapps目录下,启动tomcat就可以。

如需要我的完整的工程,请到这里下载:

http://download.csdn.net/download/valenon/8784705

spring mvc 基于maven的完整demo相关推荐

  1. SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+MySQL

    1.前言 本文主要对SSM框架整合的过程进行记录,作为之后参考的依据. 1.1.参考文章 Spring代码实例系列-绪论 Spring MVC代码实例系列-绪论 MyBatis代码实例系列-绪论 1. ...

  2. Spring MVC + Hibernate + Maven:CRUD操作示例

    在本文中,我想研究一个Spring MVC + Hibernate + Maven用法的示例. 这套技术暗含领域领域的基础知识. 因此,我将尝试详细解释所有重要时刻. 其他没有主题的内容将提供指向更多 ...

  3. Spring MVC 基于URL的拦截和映射规则

    转载自 Spring MVC 基于URL的映射规则(注解版) url-pattern 如果看过前一篇入门的帖子,应该了解到spring mvc在启动前必须要在web.xml中配置servlet,这样才 ...

  4. 【Spring MVC】 maven pom.xml 错误: Cannot upgrade/downgrade to Dynamic Web Module 3.0 facet.

    2019独角兽企业重金招聘Python工程师标准>>> web.xml <?xml version="1.0" encoding="UTF-8&q ...

  5. spring mvc 基于表单的认证过程及cookie应用和session管理

    我们日常生活中都会接触到各种登录过程,基于表单的认证一般是将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的.这个过程我们都很清楚,不过HTTP协议是无状态协议,不能保存用户登陆的状 ...

  6. Spring MVC 原理 - DispatcherServlet调用完整过程

    本篇主要讲解了Spring mvc的调用过程,通过这个过程来了解Spring的原理. 进入web.xml中配置的Spring拦截(调度)器: 调用堆栈信息: 开始拦截,这一步主要是根据request获 ...

  7. Spring MVC 基于注解的class文件打成jar包后注入失败

    异常信息: Spring MVC Autowired – No qualifying bean of type [] found for dependency: expected at least 1 ...

  8. Spring MVC 基于Method的映射规则(注解版)

    在Restful风格的web开发中,根据不同的请求方法使用相应的控制器处理逻辑成为核心需求,下面就看看如何在Spring MVC中识别不同的请求方法. 请求方法 在Http中,请求的方法有很多种,最常 ...

  9. Spring mvc基于注解自定义servlet

    在spring mvc中,有一个servlet实现:DispatcherServlet,也是spring mvc的核心部分,拦截所有请求(/*),并分发给不同的处理器,进行处理. 需求 在一个spri ...

最新文章

  1. 有人做出了中文版GPT-2,可用于写小说、诗歌、新闻等;15亿参数版GPT-2被两名研究生复现...
  2. win7电脑0x000007b蓝屏怎么办
  3. Ansible初级应用
  4. pm2 多个线程输出一个日志_PM2 源码分析
  5. tornado + supervisor + nginx + linux 亲身体验
  6. ASP.NET中防止页面多次提交的代码实现
  7. java中的上传下载----ajaxFileUpload+struts2
  8. 基于Qt的Littlevgl移植(Windos10)
  9. SAP ABAP MOVE-CORRESPONDING ... TO ...的使用
  10. 小何的第一篇博客+GitHub的基本设置
  11. /usr/bin/ld: cannot find -lxxx的错误
  12. linux下的go富集分析,GO富集分析
  13. opencv-python DIS光流
  14. 开源python-向tensorflow-addons学习
  15. 日常运维1w、vmstat、
  16. 单用户登录记录互踢下线思路
  17. 【20221119】【每日一题】解数独
  18. 春节没有年味?今年就去这些年味浓的地方过年吧!
  19. AMBA AHB面试题连载(二)
  20. 若依集成JimuReport积木报表进行token传递

热门文章

  1. startswith 和 endswith
  2. 授人以渔不如授人以鱼
  3. 奇酷学院-数据采集及其可视化(三)
  4. 基于 Logistic 混沌映射和 Arnold 变换 的变换域水印改进算法【高级网络与信息安全技术-信息隐藏期末课程论文】
  5. NNDL 实验六 卷积神经网络(3)LeNet实现MNIST 手动算子部分
  6. ​程序员离职后收到原公司 2400 元,被告违反竞业协议赔 18 万
  7. oracle 三步运算符,ORA-01476: 除数为 0
  8. LAN8720A移植笔记
  9. html状态码206,详解浏览器 206 状态码206 Partial Content
  10. dropbear配置_SSH安全配置实践,如何手动编译Dropbear实现SSH协议。