• 搭建SSM框架之SpringMVC


    一、SpringWebMVC概述:

    SpringWebMVC简称SpringMVC
    SpringMVC就是Spring框架提供的一个模块,通过实现MVC模式来很好地将数据、业务与展现进行分离,SpringMVC框架的目的是要简化我们日常的Web开发。

    二、SpringMVC框架的核心组件:

    1.DispatcherServlet: 前端控制器,用来过滤客户端发送过来,想要进行逻辑处理的请求。

    2.Controller/Headler: 控制器/处理器。开发人员自定义,用来处理用户请求的,并且处理完成之后返回给用户指定视图的对象。

    3.HandlerMapping: 处理器映射器。DispatcherServlet接收到客户端请求的URL之后,根据一定的匹配规则,再把请求转发给对应的Handler,这个匹配规则由HandlerMapping决定。


    4.HandlerAdaptor:处理器适配器。处理器适配器用来适配每一个要执行的Handler对象。通过HandlerAdapter可以支持任意的类作为处理器。


    5.ViewResolver:视图解析器。Handler返回的是逻辑视图名,需要有一个解析器能够将逻辑视图名转换成实际的物理视图。而且Spring的可扩展性决定了视图可以由很多种,所以需要不同的视图解析器,解析不同的视图。但是一般由jsp充当视图的情况居多


    SpringMVC框架提供一个核心的Servlet对象(DispatcherServlet,前端控制器)来对服务器接收到的请求进行解析,当这个请求被DispatcherServlet获取到之后,DispatherServlet需要根据HandlerMapping对象的映射关系,将这个请求转交给真正能够处理客户端请求的Controller控制器(我们要写的就是这个东西,相当于之前的servlet)来处理。Controller处理完成后返回ModelAndView对象,也就是模型和视图的结合体。ViewResolver视图解析器根据ModelAndView中的逻辑视图名找到真正的物理视图,同时使用ModelAndView中模型里面的数据对视图进行渲染。最后把准备好的视图展现给用户

    3.SpringMVC框架在项目中的搭建
    第一步:构建Web项目
    第二步:导入所需jar包
    第三步:配置前端控制器DispatcherServlet
    第四步:编写Controller控制器(也称为Handler处理器)
    第五步:配置处理器映射器(可省去,有默认配置)
    第六步:配置处理器适配器(可省去,有默认配置)
    第七步:配置视图解析器(可省去,有默认配置,但是前缀和后缀都为"")
    第八步:配置控制器/处理器

    例子:

    所需要的jar包:

    配置前端控制器:

    <?xml version="1.0" encoding="UTF-8"?>
    <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_3_0.xsd"
    	version="3.0">
    	<display-name>springmvc</display-name>
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
    	
    	
    	<!-- springweb提供的编码过滤器 -->
    	<filter>
    		<filter-name>CharacterEncodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>UTF-8</param-value>
    		</init-param>
    		<init-param>
    			<param-name>forceEncoding</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>CharacterEncodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	
    	
    	<!-- 配置springmvc中的前端控制器 -->
    	<!-- 指定需要读取的springmvc配置文件 -->
    	<!-- 如果不指定,前端控制器也会自动读取一个固定位置、固定名字的配置文件: -->
    	<!-- /WEB-INF/[servlet-name]-servlet.xml -->
    	<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:spring-web-mvc.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>
    

      编写Controller控制器:

    package com.briup.web.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class HelloController implements Controller{
    
    	@Override
    	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    		
    		System.out.println("HelloController handleRequest()..");
    		
    		//和之前一样处理请求
    		
    		//最后就不是跳转页面了,而是返回一个ModelAndView对象
    		//ModelAndView对象中包含了模型中的数据,也包含了逻辑视图名
    		ModelAndView mv = new ModelAndView();
    		
    		//设置模板中的数据
    		mv.addObject("name", "tom");
    		//设置逻辑视图名
    		mv.setViewName("hello");
    		
    		return mv;
    	}
    
    }
    

    配置处理器映射器
    配置处理器适配器
    配置视图解析器
    配置控制器/处理器

    <?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:mvc="http://www.springframework.org/schema/mvc" 
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
            http://www.springframework.org/schema/context 
    		http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    	
    	
    	<!-- 配置映射器 -->
    	<!-- 作用:告诉前端控制器,什么样的url对应什么样的Controller -->
    	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    	
    	<!-- 配置适配器 -->
    	<!-- 作用:告诉前端控制器,需要调用Controller中的哪个方法 -->
    	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    	
    	
    	<!-- 配置视图解析器 -->
    	<!-- 作用:告诉前端控制器,怎样把逻辑视图名转换为具体的视图路径 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    		<!-- 设置视图中对jstl标签库的支持 -->
    		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
    		<!-- 设置逻辑视图名的前缀 -->
    		<property name="prefix" value="/WEB-INF/jsp/"/>  
    		<!-- 设置逻辑视图名的后缀 -->
    		<property name="suffix" value=".jsp"/>  
    	</bean> 
    	
    	
    	<!-- 配置控制器/处理器 -->
    	<bean name="/hello.action" class="com.briup.web.controller.HelloController"></bean>
    	
    </beans>
    

      

  • 相关阅读:
    MVVM模式下,ViewModel和View,Model有什么区别
    数据结构与算法JavaScript (三) 链表
    数据结构与算法JavaScript (二) 队列
    数据结构与算法JavaScript (一) 栈
    2014总结
    模拟jsonp的实现
    模拟ajax的 script请求
    四种常见的 POST 提交数据方式
    jQuery尺寸算法
    元素尺寸的获取
  • 原文地址:https://www.cnblogs.com/wsyblog/p/8157990.html
Copyright © 2020-2023  润新知