spring mvc HelloWorld

spring mvc前端控制器是DispatcherServlet, 应用控制器分为处理器映射器(Handler Mapping)和视图解析器(View Resolver),页面控制器为Controller接口的实现。

  1. 用户发送请求,到达前端控制器,前端控制器根据请求信息决定选择哪一个页面控制器进行处理,并把请求委托给它
  2. 页面控制器接收到请求后,首先收集和绑定请求参数到一个对象,并进行验证,然后将对象委托给业务对象进行处理,处理完毕后返回ModelAndView
  3. 前端控制器收回控制权,根据返回的视图名,选择相应的视图进行渲染,并把模型数据传入
  4. 前端控制器再次收回控制权,将相应返回给用户

前置控制器

web.xml

<?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">

<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/forms/*</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>

web.xml定义了一个前端控制器,起名叫mvc-dispatcher,load-on-startup表示启动容器时初始化该Servlet,url-pattern表示有哪些请求要交给spring web mvc处理。在这里就是所有以/form/开头的请求会被mvc-dispatcher这个前端控制器处理。

mvc默认前端控制器加载WEB-INF/[dispatcherServletName]-servlet.xml配置文件。

视图解析器

mvc-dispatcher-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="com.libin.controller"/>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix">
<value>/WEB-INF/views/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

</beans>

component-scan 对类包进行扫描以实施注释驱动bean定义的功能。

ViewResolver是进行视图解析的,prefix是视图页面的前缀,suffix是视图页面的后缀,在这里也就是说,任何请求x的视图页面放在/WEB-INF/views/x.jsp。

页面控制器

package com.libin.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloWorldController {
@RequestMapping("/helloworld")
public ModelAndView helloWorld(){
String message="Hello world,Spring MVC 3!";
return new ModelAndView("helloworld","message",message);
}
}

@Controller注释是说这个类的角色是一个控制器,@RequestMapping注释是说将请求/helloworld映射到下面这个方法。它也可以指明采用的HTTP的方法还有参数,比如 @RequestMapping(value="/new", method = RequestMethod.GET)

接下来是页面部分

首先是最开始的页面index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Spring MVC Example</title>
</head>
<body>
<h1>Spring MVC</h1>
<ul>
<li><a href="forms/helloworld.html">Hello World</a></li>
</ul>
</body>
</html>

很简单,在开始页面里,点击Hello World链接到了forms/helloworld.html,因此向浏览器请求forms/helloworld.html。

首先经过前置控制器DispatcherController的过滤,发现正好符合mvc-dispatcher的要求,因此交给mvc-dispatcher处理。

它加载自己对应的配置文件,也就是mvc-dispatcher-serlvet.xml,得到两点,一是页面控制器在base-package下面,另一点是真正的页面文件的路径是/WEB-INF/views/helloworld.jsp。

经过页面控制器helloWorldController,将一个字符串message传递给页面。整个过程就是这样。

最后是helloworld.jsp,把参数message打出来:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Spring MVC HelloWorld</title>
</head>
<body>
${message}
</body>
</html>

参考资料: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html

附件下载:HelloWorldSpringMVC

posted @ 2012-12-19 16:14  cubika  阅读(565)  评论(0编辑  收藏  举报