spring mvc 基于maven的完整demo
来源:互联网 发布:成都管家婆软件 编辑:程序博客网 时间:2024/05/01 09:10
记录一下使用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,看到欢迎语!
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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://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;@RestControllerpublic 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
- 基于spring mvc的注解DEMO完整例子—带附件 .
- Intellij maven + spring mvc 的Demo创建
- 基于maven的Spring+ActiveMQ整合Demo
- 项目构建之maven篇:8.maven发布web工程及基于spring mvc,jetty实现的用户管理demo
- 基于maven的spring mvc项目
- 基于maven的spring mvc项目
- 基于maven的spring mvc框架引入
- spring mvc 基于注解demo
- mybatis+spring maven下 整合 完整demo
- IDEA创建Maven的Spring MVC项目Demo
- maven + spring + spring mvc + mybatis + cxf Demo
- 基于Maven的Spring + Spring MVC + Mybatis的环境搭建
- 基于Maven的Spring + Spring MVC + Mybatis的环境搭建
- spring起步 搭建基于Maven的Spring MVC工程
- 基于maven的Spring + Spring MVC + MyBatis 环境配置
- 基于maven的S2SH(Struts2+Spring+Hibernate)的框架DEMO
- 基于注解的maven+spring+hibernate+mysql简单demo
- 新GRE填空备考--双空PK三空--法
- 断言 IOS
- 图斑合并过程求边界
- C++对象内存模型---数据封装
- java实现各种排序算法及比较
- spring mvc 基于maven的完整demo
- PAT Rational Arithmetic (20)
- 九度OJ-题目1367:二叉搜索树的后序遍历序列
- CocoaPods使用说明
- 合并excel 宏文件
- SAT语法--介绍两大必考从句
- UML类图
- Python遍历文件
- 初到CSDN