Spring MVC基础超级详细

Spring  MVC的简介

基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,来处理浏览器或者客户端发出的请求

M  表示model 模型层(dao接口  entity实体类  service层)

V 表示 view 视图层 用于把结果展示给用户(比如jsp页面 html页面)

C 表示 controller 控制器 相当我们jdbc的servlet

SpringMvc九大组件

HandlerMapping(处理器映射器)、

HandlerAdapter(处理器适配器)、

HandlerExceptionResolver(异常处理)、

ViewResolver(视图解析器)、

RequestToViewNameTranslator(请求在查找视图名称)

LocaleResolver(区域化解析,表示所在地)、ThemeResolver(主题解析)

MultipartResolver(多部件解析器文件上传处理)、FlashMapManager(flash属性管理组件 重定向参数传递)

Spring MVC的优点和缺点

优点

1.表示层,业务逻辑层,数据访问层 三层相互独立,是松耦合架构

2.多个视图可以共享一个模型,大大的提高了代码的可重用性

3.控制器(Controller)提高了应用程序的灵活性和可配性

4.更有利于软件工程化管理

缺点

1.增加了系统结构和实现的复杂性,不适合小型的规模项目

2.视图层(view)和模型层(model)之间需要控制器做中间的连接控制,所以效率更低

如何部署第一个Spring MVC程序

导jar包

第一步就是导入spring mvc所需要的jar包 如果是maven项目的话直接引入下面所提供的依赖就ok

 <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!--spring统一版本-->
        <spring-version>5.2.2.RELEASE</spring-version>
        <!--mybatis和spring的整合版本-->
        <mybatis-spring-version>2.0.3</mybatis-spring-version>
        <!--mybatis版本-->
        <mybatis-version>3.5.1</mybatis-version>
    </properties>


    <dependencies>
        <!--spring-webmvc框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!-- spring框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!--spring-jdbc框架  数据源 放到spring整合-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!--spring-oxm框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!-- AOP依赖-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.9</version>
        </dependency>

        <!--aopalliance依赖-->
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>

        <!--mybatis框架-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis-version}</version>
        </dependency>

        <!--mybatis-spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis-spring-version}</version>
        </dependency>

        <!-- mysql的驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>

        <!--dbcp的数据源-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

        <!--加载通用的日志-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- 加载log4j日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!--jstl的依赖-->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- standard依赖-->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

        <!--commons-fileupload依赖-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>

        <!--commons-io依赖-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <!-- fastjson依赖 阿里巴巴开源的json解析工具-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>

        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <version>2.0.2</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.1.2.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.3.2.Final</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml</groupId>
            <artifactId>classmate</artifactId>
            <version>1.3.4</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>

        <!--javax.servlet-api依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>

 编写spring mvc的配置文件 

 下面代码就是我们spring mvc完整的配置文件啦

    <mvc:annotation-driven/> 基于注解的处理器

此处的  <context:component-scan base-package="controller"/>  controller表示的是控制器的包名
=====================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd">
    
<!--扫描包  会自动扫描到@Component-->
    <context:component-scan base-package="controller"/>
    <!--自动注册defaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean  自动注册controller类中的映射器 适配器-->
    <mvc:annotation-driven/>

<!--2.配置视图-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/student/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

发布项目 部署tomcat

 

 开始发布tomcat

 接下来就是配置web.xml中的配置文件了

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--servlet  servletMapping-->

    <!--DispatcherServlet表示中央处理器-->
    <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:springmvc.xml</param-value>
        </init-param>
    </servlet>
   <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

   <!-- 加载ApplicationContext.xml文件-->
       <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath*:ApplicationContext.xml</param-value>
       </context-param>

    <!--加载spring的配置文件(监听器)-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

</web-app>

所有的配置都ok了开始代码展示 最后我们在运行的时候只要访问的路径就可以将结果输出在我们的控制台

@Controller:将该类注入到Spring容器并将其定义为一个控制器

@RequestMapping:通过请求URL进行映射

面试常问

1.Spring MVC框架是基于哪个核心的Servlet

DispatcherServlet 负责协调整个请求的处理流程,将请求映射到相应的处理器进行处理,并最终返回响应结果给用户。

2.Spring Web MVC工作流程

SpringMvc请求处理流程:

1. 前端用户发送请求到前端控制器DispatcherServlet

2. DispatcherServlet收到请求之后调用处理映射器HandlerMapping

3. 处理映射器根据url找到对应的后端控制器handler,生成处理器对象和处理器拦截器返回前端控制器

4. 前端控制器再去调用处理适配器HandlerAdapter去调用具体的后端控制器

5. 后端控制器执行完毕之后,把ModelAndView返回给处理适配器

6. 处理适配器把ModelAndView返回给前端控制器。

7. 前端控制器调用视图解析器ViewResolver进行解析,解析完毕返回视图view

8. 前端控制器进行视图渲染,就是数据填充

9. 前端控制器向用户响应结果

 3.Spring MVC体系结构

 Spring MVC框架特点

1.角色划分清晰

2.配置功能灵活

3.大量的控制器接口和实现类

4.可灵活选择view层的实现技术

5.支持国际化

6.面向接口编程

7.功能丰富

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring MVC是一种基于Java的Web开发框架,旨在简化Web应用程序的开发。它使用模型-视图-控制器(MVC)模式来处理Web请求和响应。 以下是Spring MVC基础开发步骤: 1.配置Web容器:首先需要选择一个Web容器(例如,Apache Tomcat),并将它配置到开发环境中。该容器为Web应用程序提供了运行环境。 2.引入Spring MVC库:Spring MVC库包含了许多类和接口,它们是开发Spring MVC应用程序所必需的。为了使用这些类和接口,需要将相应的库引入到项目中。 3.配置Spring MVCSpring MVC框架配置主要包括两个部分:一是配置DispatcherServlet,它是Spring MVC框架中的核心组件,用于处理所有的HTTP请求;二是配置Spring容器,它提供IOC(反转控制)和DI(依赖注入)功能。 4.定义控制器:控制器是Spring MVC应用程序中的核心组件,用于处理来自用户的HTTP请求,并返回相应的HTTP响应。在控制器中,需要定义处理请求的方法,并且指定对应的URL映射。 5.定义视图:视图是用户界面的表示形式。在Spring MVC中,可以使用多种模板引擎(例如,JSP,Velocity)来定义视图。 6.运行应用程序:最后,将应用程序部署到Web容器中,并启动它。用户可以通过浏览器访问应用程序,并使用定义的控制器和视图来处理请求和显示响应。 以上就是Spring MVC基础开发的步骤。在实际开发中,还需要注意一些细节,例如如何处理异常、如何进行数据绑定等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值