码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC入门教程(一)

时间:2015-08-15 16:32:26      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:springmvc   框架   java   

直接干货

model 考虑给用户展示什么,关注支撑业务的信息构成,构建成模型;

control 调用业务逻辑产生合适的数据以及传递数据给视图用于呈献;

view 如何对数据进行布局,以一种优美的方式展示给用户;

  

MVC核心思想:业务数据抽取和业务数据呈献相分离。

 

 看看Spring MVC官网给的图:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

技术分享


          Spring’sweb MVC framework is, like many other web MVC frameworks, request-driven, designed around a central Servlet that dispatchesrequests to controllers and offers other functionality that facilitates thedevelopment of web applications. Spring’s DispatcherServlet however, doesmore than just that. It is completely integrated with the Spring IoC containerand as such allows you to use every other feature that Spring has.

         Therequest processing workflow of the Spring Web MVC DispatcherServlet isillustrated in the following diagram. Thepattern-savvy reader will recognize that the DispatcherServlet is an expressionof the "Front Controller" design pattern (this is a pattern thatSpring Web MVC shares with many other leading web frameworks).



简单理解就是:客户端发过来的请求,首先被交给叫做DispatcherServlet的前端控制器去处理,由它决定交给哪个Control去处理。处理完后,还会返回结果给Front controller,然后前端控制器再去和View交互,最后response给用户。是不是很其它MVC框架很像呢?比如Struts 2.0


其中大概设计到这些概念(看不懂没关系,后面文章会解释):先看个脸熟

DispatchServlet 

Controller

HandlerAdapter

HandlerInterceptor

HandlerMapping

HandlerExecutionChain

ModelAndView

ViewResolver

View

 

 

好了,是不是已经迫不及待了呢?下面给个快速入门的实例,很简单,只有一个java文件和两个配置文件:


首先是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" 
		xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
		id="WebApp_ID" version="3.0">
  <display-name>Spring MVC</display-name>
  
  <servlet>
  	<servlet-name>mvc-dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- DispatchServlet对应的上下文配置,默认为/WEB-INF/$servlet-name$-servlet.xml -->
      <init-param>
  		 <param-name>contextConfigLocation</param-name>
  		 <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
  	  </init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>mvc-dispatcher</servlet-name>
 	<!-- mvc-dispatcher拦截所有的请求 -->
 	<url-pattern>/</url-pattern>
  </servlet-mapping>
  
</web-app>

然后是: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"
	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/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">
		 
  <!--激活@Required @Autowired,JSP250'S @PostConstruct, @PreDestroy @Resource等标注 -->	 
  <context:annotation-config/>
		 
  <!--DispatcherServlet上下文,只搜索@Controller标注的类,不搜索其他搜索的类 -->	 
  <context:component-scan base-package="com.xidian.mvcdemo.controller">
  		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  </context:component-scan> 
  
  <!--启用HandlerMapping标签 -->
  <mvc:annotation-driven/>
  <!--ViewResovlver启用,视图解析器 -->
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
	  <!--存放jsp文件的文件夹位置 -->
	  <property name="prefix" value="/WEB-INF/jsps/"/> 
	  <property name="suffix" value=".jsp"/> 
  </bean>
</beans>
  
 

HelloMvcConntroller.java

package com.xidian.mvcdemo.controller;

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

@Controller
@RequestMapping("/hello")
//提示Spring MVC这是一个Controller,以及拦截根目录下的hello
public class HelloMvcConntroller {
	
	//host:port/hello/mvc
	@RequestMapping("/mvc")
	public String helloMvc(){
		return "home";  //返回home.jsp
	}
}

最后是一个home.jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'home.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
    Hello Spring MVC <br>
  </body>
</html>

可以这样理解程序之间的关系:首先在web.xml中我们用servlet拦截了所有请求交给Spring MVC的Dispatcher,然后它去找相应目录下的mvc-dispatcher-servlet.xml文件(也可以不设置,会在默认位置加载文件,代码中有说明,这里只是帮助养成良好的文件归档习惯)。我们在相应的HelloMvcConntroller.java中加上的@Controller 

@RequestMapping("/hello")  @RequestMapping("/mvc")注解,会告诉Spring MVC这里是Controller,当前端控制器发送来的请求符合这些要求时,就交给它处理。最后会返回home.jsp,哪里的home.jsp?

mvc-dispatcher-servlet.xml中的最后一部分,对视图解析器的配置。


你看会了吗?欢迎谈论 http://blog.csdn.net/code_7

















版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring MVC入门教程(一)

标签:springmvc   框架   java   

原文地址:http://blog.csdn.net/code_7/article/details/47682595

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!