SpringMVCå¦ä¹ ä¸
å çSpringMVCçè§å¾è§£æ 以å æå½èªhttp://www.cnblogs.com/HigginCui/p/5856780.htmlçæ¶æ解æ
1.DisPatcherServletï¼å端æ§å¶å¨ï¼ä¸éè¦ç¨åºåå¼åï¼
ç¨æ·è¯·æ±å°è¾¾å端æ§å¶å¨ï¼å®ç¸å½äºMVC模å¼ä¸çCï¼Controllerï¼ï¼DispatcherServletæ¯æ´ä¸ªæµç¨æ§å¶çä¸å¿ï¼ç±å®è°ç¨å ¶å®ç»ä»¶å¤çç¨æ·ç请æ±ï¼DispatcherServletçåå¨éä½äºç»ä»¶ä¹é´çè¦åæ§ã
ä½ç¨ï¼ä½ä¸ºæ¥å请æ±ï¼ç¸åºç»æï¼ç¸å½äºè½¬åå¨ï¼ä¸å¤®å¤çå¨ï¼åå°å ¶ä»ç»ä»¶ä¹é´çè¦å度ã
2.HandlerMappingï¼å¤çå¨æ å°å¨ï¼ä¸éè¦ç¨åºåå¼åï¼
HandlerMappingè´è´£æ ¹æ®ç¨æ·è¯·æ±æ¾å°Handlerï¼å³ï¼å¤çå¨ï¼ï¼SpringMVCæä¾äºä¸åçæ å°å¨å®ç°å®ç°ä¸åçæ å°æ¹å¼ï¼ä¾å¦ï¼é ç½®æ件æ¹å¼ãå®ç°æ¥å£æ¹å¼ã注解æ¹å¼çã
ä½ç¨ï¼æ ¹æ®è¯·æ±çUrl æ¥æ¾Handler
3.HandLerï¼å¤çå¨ï¼éè¦ç¨åºåå¼åï¼
Handleræ¯ç»§DispatcherServletå端æ§å¶å¨çå端æ§å¶å¨ï¼å¨DispatcherServletçæ§å¶ä¸ï¼Handlerå¯¹å ·ä½çç¨æ·è¯·æ±è¿è¡å¤çã
ç±äºHandler设计å°å ·ä½çç¨æ·ä¸å¡è¯·æ±ï¼æ以ä¸è¬æ åµéè¦ç¨åºåæ ¹æ®ä¸å¡éæ±å¼åHandlerã
注æï¼ç¼åHandleræ¶æç §HandlerAdpterçè¦æ±å»åï¼è¿æ ·æå¯ä»¥å»æ£ç¡®æ§è¡Handlerã
4.HandlerAdapterï¼å¤çå¨éé å¨
éè¿HandlerAdapter对å¤çå¨è¿è¡æ§è¡ï¼è¿æ¯éé å¨æ¨¡å¼çåºç¨ï¼éè¿æ©å±éé å¨å¯ä»¥å¯¹æ´å¤ç±»åçå¤çå¨è¿è¡æ§è¡ã
ä½ç¨ï¼æç §ç¹å®çè§åï¼HandlerAdapterè¦æ±çè§åï¼å»æ§è¡Handler
5.ViewResolverï¼è§å¾è§£æå¨ï¼ä¸éè¦ç¨åºåå¼åï¼
ViewResolverè´è´£å°å¤çç»æçæViewè§å¾ï¼ViewResolveré¦å æ ¹æ®é»è¾è§å¾å解ææç©çè§å¾åï¼å³å ·ä½ç页é¢å°åï¼åçæViewè§å¾å¯¹è±¡ï¼æå对Viewè¿è¡æ¸²æå°å¤çç»æéè¿é¡µé¢çå±ç¤ºç»ç¨æ·ãSpringMVCæ¡æ¶æä¾äºå¾å¤Viewè§å¾ç±»åï¼å æ¬ï¼JSTLViewãfreemarkerViewãpdfViewçç.
ä½ç¨ï¼è¿è¡è§å¾è§£æï¼æ ¹æ®é»è¾è§å¾å解ææçæ£çè§å¾ï¼viewï¼ã
6.Viewè§å¾ ï¼éè¦ç¨åºåå¼å jspï¼
Viewæ¯ä¸ä¸ªæ¥å£ï¼å®ç°ç±»æ¯æä¸åçViewç±»åï¼jspãfreemarkerãpdfï¼
ä¸è¬æ åµä¸éè¦éè¿é¡µé¢æ ç¾æè 页é¢æ¨¡æ¿ææ¯å°æ¨¡åæ°æ®éè¿é¡µé¢å±ç¤ºç»ç¨æ·ï¼éè¦ç±ç¨åºåæ ¹æ®ä¸å¡éæ±å¼åå ·ä½ç页é¢ã
ãæµç¨å¾ã
ãæµç¨å¾è¯´æã
1.ç¨æ·åé请æ±è³ å端æ§å¶å¨DispatcherServletã
2.å端æ§å¶å¨DispatcherServletæ¶å°è¯·æ±åè°ç¨å¤çå¨æ å°å¨HandlerMappingã
3.å¤çå¨æ å°å¨HandlerMappingæ ¹æ®è¯·æ±çUrlæ¾å°å ·ä½çå¤çå¨ï¼çæå¤çå¨å¯¹è±¡Handleråå¤çå¨æ¦æªå¨HandlerIntercepterï¼å¦ææåçæï¼ä¸å¹¶è¿åç»å端æ§å¶å¨DispatcherServletã
4.å端æ§å¶å¨DispatcherServletéè¿å¤çå¨éé å¨HandlerAdapterè°ç¨å¤çå¨Controllerã
5.æ§è¡å¤çå¨ï¼Controllerï¼ä¹å«å端æ§å¶å¨ï¼
6.å¤çå¨Controlleræ§è¡å®åè¿åModelAnViewã
7.å¤çå¨æ å°å¨HandlerAdapterå°å¤çå¨Controlleræ§è¡è¿åçç»æModelAndViewè¿åç»å端æ§å¶å¨DispatcherServletã
8.å端æ§å¶å¨DispatcherServletå°ModelAnViewä¼ ç»è§å¾è§£æå¨ViewResolverã
9.è§å¾è§£æå¨ViewResolver解æåè¿åå ·ä½çè§å¾Viewã
10.å端æ§å¶å¨DispatcherServlet对è§å¾Viewè¿è¡æ¸²æè§å¾ï¼å³ï¼å°æ¨¡åæ°æ®å¡«å è³è§å¾ä¸ï¼
11.å端æ§å¶å¨DispatcherServletååºç¨æ·ã
ç®åçhelloworld 示è
é¦å æ ¹æ®å¾ æ们å¯ä»¥ç¥é DispatcherServlet æ¯æå ³é®çï¼æ以å è¿è¡é ç½®
<!--æ件åå为web.xml æ¾å¨WEB-INFæ件夹ä¸é¢ï¼æåå§çé ç½® --> <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_2_5.xsd" id="WebApp_ID" version="2.5"> <!--ä¸é¢ä¸ä¸ªæ¯æå®ä½ç½®è¯»åé ç½®æ件 --> <servlet> <servlet-name>MySpringMVC</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> <!--å¹é URL ä¹åå°±å¯ä»¥ç¨Controller注解è¿è¡å¹é url--> <servlet-mapping> <servlet-name>MySpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
springmvc.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: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-4.1.xsd"> <!-- èªå¨æ«æï¼å è½½Bean --> <context:component-scan base-package="com.springmvc"></context:component-scan> <!-- è¿æ¯ModelAndViewéé¢ç解æï¼ç±»çè¿å --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
package com.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller//åè¯å¤çå¨å°è¿ä¸ªController Beanå è½½
public class HelloWorldControler {
@RequestMapping("/hello")//å½urlè¾å
¥helloçæ¶ååçäºæ
public String hello(){
System.out.println("that is hallo");
return "hello";//å°±æ¯å°è¿ä¸ªè¿åï¼springmvc对è¿ä¸ªåå¤ç
}
}
viewï¼ jspæ件 ä¹å¯ä»¥æ¯åç§å ¶ä»æ件 ï¼æ¯å¦html
<%@ 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>Insert title here</title> </head> <body> <p>Hello World!</p> </body> </html>