出于最近开发需求,需要使用SpringMvc框架,遂配置了一把,整个过程很方便,记录下来仅供需要的人参考。
1.下载SpringMvc,下载地址:http://www.springsource.org/download/community?project=Spring%2520Framework。选择最新最稳定的3.2.4.RELEASE版本。(使用SpringMvc需同时下载dist包和依赖包,但自从spring-framework-3.0.2后spring已经不提供依赖包下载了,实际上真正部署的时候,dist包就够了,spring只依赖很少的几个jar包,而spring老版本之前提供的依赖包有100多M,里面各种实现,90%的包我们都用不到,我们手动下载jar即可)
2.下载SpringMvc的依赖包,jstl.jar,standard.jar,commons-logging.jar。前面两个是JSTL表达式需要的(如果不使用JSTL,可以不下载),后面一个是日志需要的。也就是说,实际上SpringMVC只依赖一个包。都可以在MVN的仓库里找到。
3.Eclipse EE里新建一个Dynamic Web project,项目名输入“Springmvc”,其它的你懂的;
4.把jar包拷贝到lib文件夹,把第一步下载的dist包里lib下的jar和第二步下载来的三个依赖jar包都拷贝到此工程的lib目录下(当然了,建议用build path管理更规范,这里只是方便了事)。注意:拷贝dist下的jar时,只需要拷贝二进制jar包,不要拷贝javadoc和source包,当然如果你明白自己在做什么并且需要的话,也可以拷贝来。里面那么多jar包,拷哪些呢?偷懒的话就全部拷贝,有点追求的的话,拷贝下面几个就够了:
spring-aop-3.2.4.RELEASE.jar
spring-aspects-3.2.4.RELEASE.jar
spring-beans-3.2.4.RELEASE.jar
spring-context-3.2.4.RELEASE.jar
spring-core-3.2.4.RELEASE.jar
spring-expression-3.2.4.RELEASE.jar
spring-jdbc-3.2.4.RELEASE.jar
spring-tx-3.2.4.RELEASE.jar
spring-web-3.2.4.RELEASE.jar
spring-webmvc-3.2.4.RELEASE.jar
有些包,可能现在用不上,但后期可能有用,10个包也不多,就留着吧。早一点的版本的话,有洁癖的话,只需要拷贝两个jar包即可,但后期又麻烦了。加上之前的三个依赖jar包,总共13个包,也就5M左右。
5.新建web.xml,这个是所有J2EE的标配,不再细说。
<?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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Springmvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
6.配置springmvc-servlet.xml(此处springmvc-servlet这个名字是因为上面web.xml中<servlet-name>标签配的值为springmvc(<servlet-name>springmvc</servlet-name>),再加上“-servlet”后缀而形成的springmvc-servlet.xml文件名,如果改为springMVC,对应的文件名则为springMVC-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:p="http://www.springframework.org/schema/p" 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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<bean name="/hello_world.do" class="com.zhurou.controller.HelloWorldController"/>
<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/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
在这个文件里,<bean name="/hello_world.do" class="com.zhurou.controller.HelloWorldController"/>配置的就是url和controller的映射关系。viewResolver里配置是视图的路径和映射关系。
7.编写前端控制器,com.zhurou.controller.HelloWorldController类如下:
package com.zhurou.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 HelloWorldController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { String aMessage = "Hello World MVC!"; ModelAndView modelAndView = new ModelAndView("hello_world"); modelAndView.addObject("message", aMessage); return modelAndView; }
}
8.编写视图文件,在jsp目录下建立hello_world.jsp,这个文件名是和controller里的new ModelAndView("hello_world")对应的。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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 mvc demo</title> </head> <body> <p>This is my message: ${message}</p> </body> </html>
9.访问地址: http://localhost:8080/Springmvc/hello_world.do,在tomcat里的配置就不说了。
其实整个过程很简单,也就不到10分钟而已。很多黑Java的人都说Java EE部署困难,这些都是没追求的低级黑而已。之所以这么配置buildpath,tomcat,只是因为有追求而已。如果你没有追求的话,也可以直接扔到tomcat 的webapps目录下,一分钟即部署完毕,就像PHP那样,直接一扔某个目录。有追求的Java/PHP程序员都会配置tomcat,apache,nginx,而不是简单一扔了事。 还有一点需要说明的是,springMVC的特色是注解,但我这里用的是XML的方法,用注解更简单。
(1)在springmvc-servlet.xml里增加下面的两行:
<!-- 自动检测注解 -->
<context:component-scan base-package="com.zhurou.controller" />
<mvc:annotation-driven />
(2)写一个使用注解的控制器
package com.zhurou.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;@Controller @RequestMapping("/hello") public class AnnoController { @RequestMapping("/say") public ModelAndView hello() { ModelAndView model = new ModelAndView("hello_world"); // 将参数带回页面 model.addObject("message", "AnnoController"); return model; } }
访问下面的地址即可:http://localhost:8080/Springmvc/hello/say.do