以前一直使用的struts2框架,但是现在越来越多的公司选择使用springMVC框架。这几天也就开始学习了。
网上有很多SpringMVC的入门教程,但是我搜索了很多篇,按照上面的步骤多少都会出现问题。导致人非常的郁闷。
可能是我技术太菜的原因吧,对着好几篇教程都出现问题,Demo根本无法运行,今天起来认真思索了一下,终于搞定了这个入门Demo,现在分享一下我的步骤。
首先,我选择的spring版本为最新的spring3.2.0。springMVC这个框架包含在spring_framework框架下。
(开始我以为是单独的,可是在官网上没有这个单独项目,后来才知道是放在splring_framework框架下的)
spring-asm-3.2.0.M1.jar
spring-beans-3.2.0.M1.jar
spring-context-3.2.0.M1.jar
spring-core-3.2.0.M1.jar
spring-expression-3.2.0.M1.jar
spring-web-3.2.0.M1.jar
spring-webmvc-3.2.0.M1.jar
这里要说明下,以上jar如果做其他功能,可能还需要使用他的依赖包,这里我们需要以下依赖包:
com.springsource.org.apache.commons.logging-1.1.1.jar
依赖包可以在spring_framework框架官网下载页面中下载带有dependencies字样的框架包。里面包含了spring所有需要使用到的依赖包。
jar包就上面这些,如果需要使用别的功能,或者集成其他包,另外再加。
第二步,环境的搭建。
不得不说,用MyEclipse用惯了,用Eclipse做web项目,真不习惯。但是还是使用EclipseEE工具吧,毕竟是免费的。
使用EclipseEE创建“Dynamic Web project”项目(在web分支下)。一切默认即可。
将jar包Copy到WEB_INF目录下的lib文件夹下
配置web.xml。添加一个SpringMVC的ControllerServlet
<?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"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC_Test1</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> </web-app> |
DispatcherServlet是springMVC的总Controller。它负责拦截前台请求。
配置servletName-servlet.xml。servletName为web.xml中节点<servlet-name>中写的名称,
这个例子中为“springMVC-servlet.xml”,此文件位置与web.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.html">helloController</prop> </props> </property> </bean> <bean id="helloController" class="cn.fx.controller.HelloWordController"> </bean> </beans> |
这里需要说明下<beans>节点中的声明必须有,否则无法spring框架无法解析此xml文件,导致异常。
key、id这些属性都可以人为取名。
helloCotroller这个节点是springMVC的自定义的Controller。
可以编写完Controller再来配置这个节点。
编写Controller。
package cn.fx.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class HelloWordController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mad = new ModelAndView("hello.jsp"); mad.addObject("message", "这里SpringMVC的DEemo"); return mad; } } |
编写页面
1,index.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>Insert title here</title> </head> <body> <a href="hello.html">点击开启SrpingMVC的大门</a> </body> </html> |
2,hello.jsp。这个页面是点击index.jsp连接后,经过HelloWordController控制器后,调用的View。
<%@ 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>Insert title here</title> </head> <body> ${message} </body> </html> |
下面是一张项目结结构图:
Demo完毕。web.xml配置文件中的<servlet-mapping>下的<url-parttern>*.html</url-partern>是指拦截所有后缀为“html”的url连接。
这里可以修改的,可以根据实际需求修改。
springMVC-servlet.xml配置文件中的这个节点<prop key="/hello.html">helloController</prop>是指:
将url中的hello.html连接映射到ID为helloController的Controller中。
所以在springMVC-servlet.xml配置文件中最后又配置了一个<bean id="helloController" class="cn.fx.controller.HelloWordController"></bean>
作者:Alony
(菜鸟中的一只,希望一点点的成为一只老鸟。)