第一章 SpringMVC之 基础知识及代码

一.SpringMVC概括

                   SpringMVC从字面上的意思可以理解成它在spring的基础上加了mvc的思想,让视图,控制,模型这三层分离SpringMVC其实可以看成是struts2+spring。比较官方的说法SpringMVC是是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。


二.Spring MVC工作流程           

      Spring MVC工作流程图

       SpringMVC的工作流程描叙

          1.用户向服务器发送请求,请求会被SpringMVC的前单控制器DispatcherServlet捕获。

          2.DispatcherServlet将捕获到的url进行解析,将解析结果交给HandlerMapping,HandlerMapping根据传过来的url解析结果来匹配相应的Handler(处理器)。

          3.DispatcherServlet将匹配的结果交给HandlerAdapter,由HandlerAdapter调用真正的处理器来进行处理用户的请求,处理完成后返回一个ModelAndView对象(视图加上数据模型)交给DispatcherServlet

          4.DispatcherServlet将ModelAndView对象交给ViewResolver处理,ViewResolver对ModelAndView对象进行解析,根据视图名产生一个view实例。

          5.DispatcherServlet将view对象和model交给View进行处理,View对视图渲染,最后将结果呈现给用户。


三.SpringMVC代码实例

   

1.web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <display-name></display-name>   
  8.   <welcome-file-list>  
  9.     <welcome-file>index.jsp</welcome-file>  
  10.   </welcome-file-list>  
  11.   <servlet>  
  12.   <!-- DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。 -->  
  13.               <servlet-name>springMVC</servlet-name>  
  14.               <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  15.               <init-param>  
  16.                       <param-name>contextConfigLocation</param-name>  
  17.                       <param-value>classpath*:springController.xml</param-value>  
  18.               </init-param>  
  19.   </servlet>  
  20.     
  21.   <servlet-mapping>  
  22.                 <servlet-name>springMVC</servlet-name>  
  23.                 <url-pattern>/</url-pattern>  
  24.   </servlet-mapping>  
  25.   <!--   
  26.   ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;  
  27.  <context-param>  
  28.                  <param-name>contextConfigLocation</param-name>  
  29.                  <param-value>classpath*:springController.xml</param-value>  
  30.   </context-param>   
  31.   
  32.   <listener>  
  33.                  <listener-class>  
  34.                        org.springframework.web.context.ContextLoaderListener  
  35.                  </listener-class>  
  36.   </listener>  
  37.  -->  
  38. </web-app>  
2.springController.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
  3.     xmlns="http://www.springframework.org/schema/beans"      
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"      
  5.     xmlns:context="http://www.springframework.org/schema/context"      
  6.     xmlns:aop="http://www.springframework.org/schema/aop"      
  7.     xmlns:tx="http://www.springframework.org/schema/tx"      
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans     
  9.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    
  10.         http://www.springframework.org/schema/mvc    
  11.         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd    
  12.         http://www.springframework.org/schema/context    
  13.         http://www.springframework.org/schema/context/spring-context-3.0.xsd     
  14.         http://www.springframework.org/schema/aop      
  15.         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd     
  16.         http://www.springframework.org/schema/tx     
  17.         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">   
  18.         <!-- handlerMapping -->  
  19.     <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  20.                  <property name="mappings">  
  21.                               <props>  
  22.                                      <prop key="springMVC.d">HelloWorld</prop>  
  23.                               </props>  
  24.                  </property>  
  25.     </bean>  
  26.       
  27.       
  28.     <bean id="HelloWorld" class="com.wangbiao.springMVC.HelloWorld">  
  29.       
  30.                  <property name="methodNameResolver">  
  31.                                <ref local="methodNameResolver"/>  
  32.                  </property>  
  33.     </bean>  
  34.     <!-- 在url中对应具体的方法,通过m后面带的参数来确定方法 -->  
  35.     <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">      
  36.                 <property name="paramName"><value>m</value></property>     
  37.                 <property name="defaultMethodName"><value>execute</value></property>  
  38.     </bean>  
  39.       
  40.       <!--视图解析器-->    
  41.         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    
  42.             <!-- webroot到一指定文件夹文件路径 -->    
  43.             <property name="prefix" value="/"/>    
  44.             <!-- 视图名称后缀  -->    
  45.             <property name="suffix" value=".jsp"/>    
  46.             </bean>  
  47.     </beans>  
3.HelloWorld.java
  1. package com.wangbiao.springMVC;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.springframework.web.servlet.ModelAndView;  
  7. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;  
  8.   
  9. public class HelloWorld extends  MultiActionController{  
  10.   
  11.     public ModelAndView sayHelloWorld(HttpServletRequest request, HttpServletResponse response) {  
  12.         String param = request.getParameter("param");  
  13.         System.out.println("springMVC测试:helloWorld;"+param);  
  14.         ModelAndView mv = new ModelAndView();  
  15.         mv.addObject("content""this is springMVC HelloWorld");  
  16.         mv.setViewName("springMVC/helloWorld");  
  17.         return mv;  
  18.     }  
  19.   
  20. }  
4.helloWorld.jsp
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.    ${requestScope.content }  
  12. </body>  
  13. </html>  
5.输出结果

在浏览器上输入:http://localhost:8000/SpringMVC/springMVC.d?m=sayHelloWorld&param=123

页面展示为:


整个的SpringMVC流程就是这样的,需要说明的是HelloWorld这样的处理器必须继承MultiActionController,HelloWorld中的sayHelloWorld方法的参数必须是HttpServletRequest 和HttpServletResponse,这里我不知道是什么原因啊,如果有知道的请告诉我一声,感激不尽。上面的代码在springController.xml中的methodNameResolver可以实现一个处理器对应多个方法,根据http://localhost:8000/SpringMVC/springMVC.d?m=sayHelloWorld&param=123中的“m=sayHelloWorld”来确定处理改请求的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值