spring mvc是当前最为流行的开发框架之一   有了它 我们可以高效方便的处理程序中的业务逻辑   因此在开发的时候 spring   mvc主要用于业务层  要进一步学习spring mvc  我们首先要知道  spring mvc的基本原理


一、基本原理

   spring mvc 中的  m  代表 模型  v  代表试图  c代表控制器     在这个框架中  有一个前端控制器  就是  DispatcherServlet

用来负责发送请求到合适的控制器  最后在渲染出视图来呈现给大家  下面 我们请看下图



首先是 第一步  用户浏览器发送了一个请求给  前置在控制器 

           第二步将请求传给处理映射器

           然后在第三步找到合适的控制器

         第四步 控制器返回模型及视图名称 传给前端控制器

         第五步 通过前端控制器在第六步找到视图解析器 最后第七步解析出视图并且进行响应


通过刚才的基本原理介绍 我们来看看在eclipse中如何搭建一个spring mvc程序吧?


工具: jdk1.7   eclipse  tomcat 7.0

所需jar包:



工程目录图:


   

         想要源码的可以加我QQ:1725576075  也可以加QQ群 464096313去群共享要


下面我们进行第一步  配置前置控制器  


打开web.xml  写入:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3/2001/XMLSchema-instance" xmlns="http://java.sun/xml/ns/javaee" xsi:schemaLocation="http://java.sun/xml/ns/javaee http://java.sun/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>spring</display-name>
   <servlet>
<servlet-name>springMvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    
    
  </servlet>

  <servlet-mapping>
    <servlet-name>springMvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

接着我们配置完前置控制器以后  我们要配置spring mvc  在springmvc.xml中写入(这里采用的是注解模式  因此该配置也是按照注解模式来配置bean)

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework/schema/beans"
        xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework/schema/context"
        xmlns:mvc="http://www.springframework/schema/mvc"
        xsi:schemaLocation="http://www.springframework/schema/beans http://www.springframework/schema/beans/spring-beans.xsd
        http://www.springframework/schema/context http://www.springframework/schema/context/spring-context-4.0.xsd
        http://www.springframework/schema/mvc http://www.springframework/schema/mvc/spring-mvc-4.0.xsd">
  <mvc:annotation-driven/> 
       <mvc:resources location="/WEB-INF/resources/images/" mapping="/images/**"/> 
        <mvc:resources location="/WEB-INF/resources/js/" mapping="/js/**"/>
   <mvc:default-servlet-handler/>
         <context:component-scan base-package="com.project.springmvc"/>
      
   
        <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图  根据控制器返回的字符串拼接成jsp路径:/WEB-INF/jsp/xx.jsp -->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name = "prefix" value="/WEB-INF/resources/"></property>
            <property name = "suffix" value = ".jsp"></property>
        </bean>
  
  
     <!--     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
               <property name = "prefix" value="/WEB-INF/resources/"></property>
                     
               <property name = "suffix" value = ".jsp"></property>
     
        </bean> -->
  
</beans>

请注意 在这里我配置了mvc标签  该标签是用来加载静态文件的  如果不加上这个标签  spring mvc默认会对除了jsp文件以外的文件进行拦截  因此就会出现图片  css  js之类的静态文件显示不出来的问题

其语法为:

  <mvc:annotation-driven/> 
       <mvc:resources location="静态文件路径" mapping="映射的路径 也就是说你在页面中要引用这个路径名才可以访问到静态文件"/> 
     
   <mvc:default-servlet-handler/>

控制器代码

package com.project.springmvc;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

import com.project.model.Shop;
import com.project.model.UserInfo;

@Controller
public class Index {
  @RequestMapping(value="")
  public String index(){
	
	 
	        return "index";
	}
	
}

	
	
	
}
@Controller:/*该注解代表该类为一个spring mvc控制器*/
@RequestMapping(value="")/*该注解为请求的路径名在value设置路径名  当浏览器请求路径名相同时 触发控制器*/

index.jsp代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>返回这里</title>

 
</head>

<body>
第一个jsp页面<img alt="" src="/images/BG_14.jpg">
</body>
</html>
注意  因为我们在前面mvc标签中设置的静态文件映射路径为  /images/  因此这里的src 路径也要写上 images



更多推荐

Spring mvc基础入门详解