做了很久的java项目,写了不少的业务逻辑,但是java框架的基础及深入学习才是重中之重,所以重新复习下SpringMvc。废话不多说,各个社区里有很多SpringMvc的教程,写的都很好,按照其中的步骤学习,收货颇丰。学习实践的过程较为简单,毕竟学习后能分享出来的东西才是真正被消化吸收的知识。言归正传,对于SpringMvc的介绍就不多说了,网上很多,还是从第一个程序开始说起。
工具:
Eclipse:3.6.2H
Tomcat:6.0
jdk:1.7
SpringMvc:4.0.4 Release
我们工程的总体结构如下图,下面就开始一步一步实践:
1.新建项目:
New > Other > Web > Dynamic Web Project
填写项目名称"SpringMvcTest"后,Next到完成即可。
2.导入SpringMvc所需要的jar包:
spring-aop-4.0.4.RELEASE.jar
spring-beans-4.0.4.RELEASE.jar
spring-context-4.0.4.RELEASE.jar
spring-core-4.0.4.RELEASE.jar
spring-expression-4.0.4.RELEASE.jar
spring-web-4.0.4.RELEASE.jar
spring-webmvc-4.0.4.RELEASE.jar
commons-logging-1.1.1.jar
拷贝以上jar包到 WEB-INF/lib 文件夹内。
3.WEB-INF目录下创建配置文件 web.xml 文件
写入如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <? xml version = "1.0" encoding = "UTF-8" ?> < 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_2_5.xsd" id = "WebApp_ID" version = "2.5" > <!-- 配置DispatchcerServlet --> < servlet > <!-- 配置DispatcherServlet --> < servlet-name >springDispatcherServlet</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > <!-- 配置Spring mvc下的配置文件的位置和名称,说明会新建一个springmvc.xml的配置文件 --> < init-param > < param-name >contextConfigLocation</ param-name > < param-value >classpath:springmvc.xml</ param-value > </ init-param > <!-- <load-on-startup>1</load-on-startup> --> </ servlet > < servlet-mapping > < servlet-name >springDispatcherServlet</ servlet-name > < url-pattern >/</ url-pattern > </ servlet-mapping > <!-- 增加对静态资源的支持 --> < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.css</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.gif</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.jpg</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.js</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.html</ url-pattern > </ servlet-mapping > </ web-app > |
注:1. 也可以不新建springmvc.xml, 那么默认的配置文件格式为/WEB-INF/[servlet-name]-servlet.xml,对应这里的就是springDispatcherServlet-servlet.xml
2. servlet-mapping表示拦截的模式,“/”,表示对于所有的请求的拦截,包括静态资源如html, js, jpg等。如果不添加下面对静态资源的配置,那么对于静态资源的访问就会报404的错误。
3. 静态资源单独写了servlet-mapping的配置。
4.在src目录下增加配置文件springmvc.xml
配置代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd" > <!-- 配置自动扫描的包 --> < context:component-scan base-package = "com.springmvc" ></ context:component-scan > <!-- don't handle the static resource --> < mvc:default-servlet-handler /> <!-- if you use annotation you must configure following setting --> < mvc:annotation-driven /> <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 --> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "prefix" value = "/jsp/" ></ property > < property name = "suffix" value = ".jsp" ></ property > </ bean > </ beans > |
注:1.自动扫描的包表示spring监听的范围,这里是在com.springmvc下。
2.视图解析器,用于把在控制器中的结构解析为实际的物理视图。
3.mvc:default-servlet-handler 会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中, 把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回。
4.mvc:annotation-driven 相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter, 即解决了@Controller注解的使用前配置。
5.增加控制器代码
在src/com/springmvc 目录下增加控制器HelloWorld.java, 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorld { /** * 1. 使用RequestMapping注解来映射请求的URL * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析 * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作 * "/WEB-INF/views/success.jsp" * @return */ @RequestMapping ( "/helloworld" ) public String hello(){ System.out.println( "hello world" ); return "success" ; } } |
注:1.@Controller是注解,表示是一个控制器,其中有方法hello。
2.@RequestMapping("") 用于匹配请求的路径
3.return 返回的“success”,是视图的名称。springmvc.xml中配置的视图解析器即是将return解析到success.jsp上作为响应输出。那么按照如上的配置,我们后面需要在WebContent目录下新建文件夹jsp,其中需要包含success.jsp文件。
6.给HelloWorld增加入口
在WebContent/jsp/目录下新增index.jsp文件:
1 2 3 4 5 6 7 8 9 10 11 | <%@ 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 >Hello World</ title > </ head > < body > < a href = "helloworld" >Hello World</ a > </ body > </ html > |
注:当项目启动后,输入http://localhost:8080/SpringMvcTest/ 即可看到index.jsp当中的内容。
7.增加视图页面 success.jsp
1 2 3 4 5 6 7 8 9 10 11 | <%@ 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=ISO-8859-1" > < title >Hello World Success</ title > </ head > < body > < h1 >Hello World Success</ h1 > </ body > </ html > |
OK, HelloWorld我们基本上已经实现了,下面就来说说发布。
8.启动项目
这里我的eclipse当中集成了tomcat的插件,我们直接通过配置小猫来启动:
工程SpringMvcTest上右键 > Properties > Tomcat 选项卡。
a. 勾选 "Is a Tomcat Project"
b. "Context name" 填写 "/SpringMvcTest"
c. "Web application root" 填写 "WebContent"
d. "DevLoader Classpath" 选项卡中,勾选 "Activate DevLoader", 并且选中"/SpringMvcTest/build/classes"后, 点击Apply, OK。
e. 点击eclipse中的 "Start Tomcat" 按钮,启动Tomcat。
当启动完成以后,我们访问 http://localhost:8080/SpringMvcTest/ 可以看到 hello world的链接,点击进入后显示Success视图。
至此,我们的Hello World就已经完成了。