Spring 配備構建Web 應用的全功能MVC框架。Spring能夠很便捷地和其餘MVC框架集成,如Struts,Spring 的MVC框架用控制反轉把業務對象和控制邏輯清晰地隔離。它也容許以聲明的方式把請求參數和業務對象綁定。html
spring mvc是一個基於mvc的web框架。spring mvc是spring框架的一個模塊,springmvc和spring無需經過中間整合層進行整合。前端
數據訪問接口:DAO層。 處理業務Service層。 數據實體:POJO 負責前端請求的接受並處理:Servlet 賦值前端頁面展現:JSPjava
當業務流程簡單的時候,能夠把控制器的功能交給視圖實現,這種模式稱爲JsPMondel1 以下圖:web
如圖所示:spring
經過上圖咱們能夠得知MVC處理過程:apache
(1)搜先視圖提供系統與用戶交互的界面,併發送用戶輸入給控制器編程
(2)控制器接受用戶的請求,並決定應該調用那個魔心來進行處理設計模式
(3)模型根據用戶請求進行相應的雨霧邏輯處理,並返回處理結果spring-mvc
(4)控制器根據返回的處理結果,調用相應的視圖格式化模型返回的數據,並經過視圖呈現給用戶結果架構
(1)下載jar文件並導入工程
spring-web-3.2.13.RELEASE.jar
spring-webmvc-3.2.13.RELEASE.jar
2.配置文件
在web.xml中配置Servlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!--配置Spring MVC的核心控制器DispatcherServlet--> <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-servlet.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>
3.建立Spring MVC的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="cn.smbms.controller"/> <mvc:annotation-driven/> <!--完成視圖的對應--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
4.建立Controller-處理請求的控制器
package cn.smbms.controller; import cn.smbms.pojo.User; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; public class IndexController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { System.out.println("hello,SpringMVC"); //在控制檯輸出日誌信息 return new ModelAndView("index"); }
5.建立View-JSP(此處使用jsp做爲視圖了)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>hello,SpringMVC!</h1>
</body>
</html>
部署運行
查看後臺日誌:控制檯也輸出了hello,Spring MVC
@Controller:標註一個普通的JavaBean成爲能夠處理請求的控制器
@RequestMapping:經過請求URL進行映射
一鍵式配置,經過註解的方式進行Spring MVC開發
DefaultAnnotationHandlerMapping
AnnotationMethodHandlerAdapter
核心組件
HandlerMapping(處理器映射)
BeanNameUrlHandlerMapping(默認)
將請求URL映射到同名的控制器Bean上
DefaultAnnotationHandlerMapping
將請求映射到標註@RequestMapping註解的控制器和處理方法上
RequestMappingHandlerMapping
HandlerAdapter(適配器)
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
ViewResolver(視圖解析器)
InternalResourceView
總結: