spring和spring MVC的概述

什么是spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件同时为 J2EE 应用程序开发提供集成的框架。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

优点

  1. 方便解耦,简化开发 (高内聚低耦合)

​ • Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理

​ • spring工厂是用于生成bean

  1. AOP编程的支持

​ • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

  1. 声明式事务的支持

​ • 只需要通过配置就可以完成对事务的管理,而无需手动编程

  1. 方便程序的测试

​ • Spring对Junit4支持,可以通过注解方便的测试Spring程序

  1. 方便集成各种优秀框架

​ • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持

  1. 降低JavaEE API的使用难度

​ • Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

什么是springMVC

Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。

​ spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

什么是IOC,为什么使用IOC?

IoC全称Iversion of Controller,控制反转。

这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

​ 它能指导我们如何设计出松耦合、更优良的程序。

什么是DI?

DI Dependency Injection ,依赖注入

​ isa :是一个,继承。

​ hasa:有一个,成员变量,依赖。

classB {

​ private A a; //B类依赖A类

}

​ 依赖:一个对象需要使用另一个对象

​ 注入:通过setter方法进行另一个对象实例设置。

什么是AOP,为什么使用AOP?

AOP全称:Aspect-Oriented Programming,面向切面编程。

​ AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理权限控制日志记录、性能统计等。

AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。

spring原理

内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。
​ Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
​ 要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式), Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring.

Spring MVC入门案例的流程总结

Spring MVC的组件

SpringMVC的请求流程

第一步:发起请求到前端控制器(DispatcherServlet)

​ 第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找

​ 第三步:处理器映射器HandlerMapping向前端控制器返回Handler

​ 第四步:前端控制器调用处理器适配器去执行Handler

​ 第五步:处理器适配器去执行Handler

​ 第六步:Handler执行完成给适配器返回ModelAndView

​ 第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view

​ 第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)

​ 第九步:视图解析器向前端控制器返回View

​ 第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域

​ 第十一步:前端控制器向用户响应结果

web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    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_3_0.xsd">
  <display-name></display-name> 
  
  <servlet>
    <servlet-name>aaa</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:appContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>aaa</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</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:p="http://www.springframework.org/schema/p"
    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.xsd">

    <context:component-scan base-package="com.rgh.controller"/>
    
    <!-- url接口          对应类方法字符串(urlStrMap)保存到 application 中        
    1.   /fff.do        com.senchen.controller.FirstController#f1
         /sss.do        com.senchen.controller.SecondController#s1  
         
        
    2.                  反射出类型保存在一个 spring容器Map中 application 中 
                        key(com.senchen.controller.FirstController) value( 实例  )            
    
    A.运行 Dispatcher 接到  .do请求
    B.截取出 /fff.do       
                    C.找 application中的 urlStrMap
                         取出 类型 字符串,和 方法 f1

                    D.找application 中的spring容器中 的类型字符串 对应的 实例 
                    
                    E.f1.invoke
    -->
    
    <!-- 试图解析器  springMVC管理的jsp文件位置应该在 /WEB-INF/meto/  -->
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/meto/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

jsp九大内置对象详解

JSP内置对象(9个内置对象):
1.PageContext javax.servlet.jsp.PageContext JSP的页面容器
2.request javax.servlet.http.HttpServletrequest 获取用户的请求信息
3.response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
4.session javax.servlet.http.HttpSession 用来保存每一个用户的信息
5.application javax.servlet.ServletContext 表示所有用户的共享信息
6.config javax.servlet.ServletConfig 服务器配置信息,可以取得初始化参数
7.out javax.servlet.jsp.jspWriter 页面输出
8.page java.lang.object)
9.exception java.lang.Throwable
四种属性范围:
page(pageContext):只在一个页面中保存属性。 跳转之后无效。
request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
session:再一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效

servlet生命周期

servlet 声明周期可以分四个阶段:

  • 类装载过程
  • init() 初始化过程
  • service() 服务过程,选择doGet \ doPost
  • destroy() 销毁过程

Firter生命周期

Filter过滤器用来设置整个应用的字符编码是一个不错的选择。Filter的生命周期同servlet的生命周期是一样的。它们都提供了init(FilterConfig arg0)和destroy()方法来控制。当web容器启动的时候,就会自动调用init(FilterConfig arg0)来对filter进行初始化,当关闭web容器,关机,或者reload整个应用时,都会调用destroy()来关闭filter。也就是说,当web容器启动时,filter就被加载到内存,并在destroy()调用之前都常驻内存。

Filter的生命周期

servlet详解

jsp详解链接

spring MVC和spring详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容