参考 http://my.oschina.net/kuangcaibao/blog/400506
在 pom.xml 文件中添加依赖项,使其支持Spring MVC
... <dependencies> ... <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency> ... </dependencies>
这里的依赖版本可以在 search.maven.org 这个仓库中去查找。
目的是让所有的请求URL,能够转发到对应的 Controller 上去执行。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
这里将所有的URL请求都转发到 helloworld Servlet 上去处理,而这个名称为 helloworld 的 Servlet 对应的 class 是 Spring 框架自带的 DispatcherServlet 类。
load-on-startup 的值非0,表示在这个web程序启动的时候就初始化了这个Servlet类。(没有验证)
// HelloWorldController.java package 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 { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub ModelAndView mv = new ModelAndView(); mv.addObject("message", "hello world!"); mv.setViewName("hello"); return mv; } }
这里可以看到,我们的 HelloWorldController 需要实现 Controller 接口中的 handlerRequest 方法,返回一个 ModelAndView 类。初步看来这是一个模板类。到这里我们有了处理的Controller,那么怎样将这个Controller绑定到对应的URL上呢?
这个Servlet的配置文件的命名规则是 [servlet名称]-servlet.xml, 放置的地址为 /WEB-INF/
<?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.xsd"> <!-- 这部分定义的是我们的模板处理类,这里可以看到 ViewClass 是 JstlView preifx 定义了读取模板的前缀地址 suffix 定义了模板文件的后缀名 这里解析的是 jsp 文件 --> <bean 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> <!-- 这2个配置就是配置Spring框架的默认流程 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 处理器 这里就是配置 URL -- Controller 的地方 --> <bean name="/hello" class="controller.HelloWorldController" /> </beans>
上述完成后,在 eclipse 中 Maven install,后在 Tomcat 上运行。输入 127.0.0.1:8080/spring-helloworld/hello, 注意这里的 spring-helloworld 是我在 eclipse 中建立的工程名,在Tomcat中运行的时候,根地址默认是工程名。显示的结果
// hello.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello World</title> </head> <body> ${message } </body> </html>
可以看到模板解析失败了,这个问题需要解决,网上的说法是将 jstl.jar standard.jar 放到 WEB-INF/lib下,就行,但是试了不成功,不知道maven中的依赖是怎样的???