eclipse 创建一个 Spring MVC HelloWorld 工程

1. 建立一个空的Maven Javaweb工程

参考  http://my.oschina.net/kuangcaibao/blog/400506

2. 引入Spring MVC框架

在 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 这个仓库中去查找。

3. 配置 web.xml 文件

目的是让所有的请求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类。(没有验证)

4. 实现 HelloWorldController 这个 Controller 类

// 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上呢?

5. 配置 helloworld-servlet.xml 文件

这个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中的依赖是怎样的???

你可能感兴趣的:(eclipse,spring,maven,mvc,javaweb)