zoukankan      html  css  js  c++  java
  • SpringMVC学习一

    Spring MVC

    Spring MVC是目前主流的MVC设计模式的企业级框架,是Spring的一个子模块,开发起来无需整合。

    MVC设计模式

    将应用程序分成Controller、Model、View ,Contrller接收客户端请求,调用Model生成业务数据,传递给View层展示。

    开发SpringMVC程序

    1、jar包

    spring-aop.jar
    spring-beans.jar
    spring-context-jar
    spring-expression.jar
    spring -core.jar
    spring -web.jar
    Commons-logging.jar
    spring-webmvc.jar
    

    第一个SpringMVC程序

    Servlet--->SpringMVC

    jsp -> Servlet(SpringMVC) ->Jsp

    普通的servlet流程 请求 url-pattern -----> 交给对应的servlet去处理

    如何让Springmvc介入程序

    通过配置一下web.xml,拦截所有请求,交给SpringMVC处理

         <servlet>
    		<servlet-name>springDispatcherServlet</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>  类加载器  加载springmvc.xml
    		</init-param>		
    		<load-on-startup>1</load-on-startup>		
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    
    

    配置springmvc.xml

         <!-- 扫描有注解的包 -->
         <context:component-scan base-package="com.xingwei.handler"></context:component-scan>
    
         <!-- 配置视图解析器(InternalResourceViewResolver) -->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="prefix" value="/views/"></property>
    	<property name="suffix" value=".jsp"></property>
         </bean>
    
    

    流程

    通过<a href="welcome">first  springmvc  -welcome</a>  ——>发出请求  ——>被@RequestMapping("welcome")拦截
    
    ——>返回一个success  ——>通过视图解析器的前缀后缀去拼接 <property name="prefix" value="/views/"></property>
    		                                   <property name="suffix" value=".jsp"></property>
    
    ——>/views/success.jsp
    

    完整的代码罗列

    <!--index.jsp-->
    <a href="welcome">first  springmvc  -welcome</a>
    
    
    <!--跳到Controller-->
    //接口     注解   配置  注解
    @Controller             //控制器
    public class SpringMVCHandler {
    	
    	@RequestMapping("welcome")
    	public String welcome() {
    		return "success" ; 
    	}
    }
    
    
    <!--返回success,通过视图解析器去拼接-->
    <!-- 配置视图解析器(InternalResourceViewResolver) -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/views/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    	
    <!--找到/views/success.jsp-->
     welcome to spring  mvc
    

    通过以下配置,让程序扫描springmvc.xml配置文件

    <init-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath:springmvc.xml</param-value>
    </init-param>		
    

    指定springmvc配置文件的路径 ,如果要省略 必须放到 默认路径:/WEB-INF/springDispatcherServlet-servlet.xml

    一般默认是放到类路径,不放这里,默认的名称springmvc.xml

    运行以上程序,可以发现

    映射 是去匹配@RequestMapping注解 可以和方法名、类名不一致 默认是使用了请求转发的方式

    通过method指定 请求方式(get post delete put)

    @RequestMapping(value = "welcome",method = RequestMethod.POST,params = {"name2=zs","age!=23"})
    
    name2="name2"
      
    name指的是前台表单输入框中是name引号里的name       age指的是前台表单输入框中name引号里的age
    
    age!=23   a.如果有name="age"   则值不能是23,b.没有age也可以
    

    Spring MVC 的核心组件

    • DispatcherServlet:前置控制器,是整个流程控制的核心,控制其他组件的执行,进行统一调度,降低组件之间的耦合性,相当于总指挥。

    • Handler:处理器,完成具体的业务逻辑,相当于 Servlet 或 Action。

    • HandlerMapping:DispatcherServlet 接收到请求之后,通过 HandlerMapping 将不同的请求映射到不同的 Handler。

    • HandlerInterceptor:处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。

    • HandlerExecutionChain:处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器)。

    • HandlerAdapter:处理器适配器,Handler 执行业务方法之前,需要进行一系列的操作,包括表单数据的验证、数据类型的转换、将表单数据封装到 JavaBean 等,这些操作都是由 HandlerApater 来完成,开发者只需将注意力集中业务逻辑的处理上,DispatcherServlet 通过 HandlerAdapter 执行不同的 Handler。

    • ModelAndView:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。

    • ViewResolver:视图解析器,DispatcheServlet 通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端。

    Spring MVC 的工作流程

    • 客户端请求被 DisptacherServlet 接收。

    • 根据 HandlerMapping 映射到 Handler。

    • 生成 Handler 和 HandlerInterceptor。

    • Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式一并返回给 DisptacherServlet。

    • DispatcherServlet 通过 HandlerAdapter 调用 Handler 的方法完成业务逻辑处理。

    • Handler 返回一个 ModelAndView 给 DispatcherServlet。

    • DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解析为物理视图 View。

    • ViewResovler 返回一个 View 给 DispatcherServlet。

    • DispatcherServlet 根据 View 进行视图渲染(将模型数据 Model 填充到视图 View 中)。

    • DispatcherServlet 将渲染后的结果响应给客户端。

    Spring MVC 流程非常复杂,实际开发中很简单,因为大部分的组件不需要开发者创建、管理,只需要通过配置文件的方式完成配置即可,真正需要开发者进行处理的只有 Handler 、View。

    做的不好,多多指教
  • 相关阅读:
    Atlas+Keepalived系列一:安装Atlas:
    MySQL查看当前的连接信息
    MySQL replicate-ignore-db详解
    MongoDB 进程控制系列二:结束进程
    MongoDB 进程控制系列一:查看当前正在执行的进程
    MySQL 大致测试更新时间
    MySQL SELECT 执行的具体步骤
    MongoDB副本集配置系列七:MongoDB oplog详解
    MySQL 分区
    微软BI 之SSIS 系列
  • 原文地址:https://www.cnblogs.com/xingStudy/p/14131910.html
Copyright © 2011-2022 走看看