第一章 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

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	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_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  <!-- DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。 -->
              <servlet-name>springMVC</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                      <param-name>contextConfigLocation</param-name>
                      <param-value>classpath*:springController.xml</param-value>
              </init-param>
  </servlet>
  
  <servlet-mapping>
                <servlet-name>springMVC</servlet-name>
                <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 
  ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;
 <context-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath*:springController.xml</param-value>
  </context-param> 

  <listener>
                 <listener-class>
                       org.springframework.web.context.ContextLoaderListener
                 </listener-class>
  </listener>
 -->
</web-app>
2.springController.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
    xmlns="http://www.springframework.org/schema/beans"    
    xmlns:mvc="http://www.springframework.org/schema/mvc"    
    xmlns:context="http://www.springframework.org/schema/context"    
    xmlns:aop="http://www.springframework.org/schema/aop"    
    xmlns:tx="http://www.springframework.org/schema/tx"    
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc-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/aop    
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 
        <!-- handlerMapping -->
	<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	             <property name="mappings">
	                          <props>
	                                 <prop key="springMVC.d">HelloWorld</prop>
	                          </props>
	             </property>
	</bean>
	
	
	<bean id="HelloWorld" class="com.wangbiao.springMVC.HelloWorld">
	
	             <property name="methodNameResolver">
	                           <ref local="methodNameResolver"/>
	             </property>
	</bean>
	<!-- 在url中对应具体的方法,通过m后面带的参数来确定方法 -->
	<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">	
	            <property name="paramName"><value>m</value></property>   
		        <property name="defaultMethodName"><value>execute</value></property>
	</bean>
	
	  <!--视图解析器-->  
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <!-- webroot到一指定文件夹文件路径 -->  
            <property name="prefix" value="/"/>  
            <!-- 视图名称后缀  -->  
            <property name="suffix" value=".jsp"/>  
            </bean>
	</beans>
3.HelloWorld.java
package com.wangbiao.springMVC;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class HelloWorld extends  MultiActionController{

	public ModelAndView sayHelloWorld(HttpServletRequest request, HttpServletResponse response) {
		String param = request.getParameter("param");
		System.out.println("springMVC测试:helloWorld;"+param);
		ModelAndView mv = new ModelAndView();
		mv.addObject("content", "this is springMVC HelloWorld");
		mv.setViewName("springMVC/helloWorld");
		return mv;
	}

}
4.helloWorld.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!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>
   ${requestScope.content }
</body>
</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”来确定处理改请求的方法。

       写完这篇博客有一点感谢,上面的代码是早已写好的,但当写这篇博客的时候却发现迟迟不能动笔,写的字数虽然不多,但发现有到很多地方却遇到卡壳,在写的时候内心也在问自己你虽然知道SpringMVC的总体原理,但你对其中的某个细节知道是怎么处理的吗?发现自己给不了自己肯定的答案。有很多技术我们平时都在用,用起来甚至是乱熟于心,但让他说,却说不出个一二出来,即使说出了大体理解,但细节方面又有多少是吃透了的。后面我一定要写一个SpringMVC的系列博客


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值