iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringMVC有什么作用
  • 341
分享到

SpringMVC有什么作用

2023-06-26 20:06:03 341人浏览 独家记忆
摘要

这篇“springMVC有什么作用”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“springmvc有什么作用”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们

这篇“springMVC有什么作用”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“springmvc有什么作用”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。

1、SpringMVC 详细介绍

通过入门实例,我们大概知道 SpringMVC 的作用,那么它到底是什么呢?

Spring WEB MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常web开发的。

与之相反的是基于组件的、事件驱动的Web框架,如Tapestry、jsF等,在此就不介绍了。

Spring Web MVC也是服务到工作者模式的实现,但进行可优化前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

2、SpringMVC 处理请求流程

SpringMVC有什么作用

用户发送请求到前端控制器(DispatcherServlet)。

前端控制器请求 HandlerMapping 查找 Handler,可以根据 xml 配置、注解进行查找。

处理器映射器 HandlerMapping 向前端控制器返回 Handler

前端控制器调用处理器适配器去执行 Handler

处理器适配器执行 Handler

Handler 执行完成后给适配器返回ModelAndView

处理器适配器向前端控制器返回 ModelAndView

ModelAndViewSpringMVC 框架的一个底层对象,包括ModelView

前端控制器请求试图解析器去进行视图解析

根据逻辑视图名来解析真正的视图。

试图解析器向前端控制器返回 view

前端控制器进行视图渲染

就是将模型数据(在 ModelAndView 对象中)填充到 request

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

下面我们对上面出现的一些组件进行解释:

1、前端控制器DispatcherServlet(不需要程序员开发)。  作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。2、处理器映射器HandlerMapping(不需要程序员开发)。  作用:根据请求的url查找Handler。3、处理器适配器HandlerAdapter(不需要程序员开发)。  作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler。4、处理器Handler(需要程序员开发)。  注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler5、视图解析器ViewResolver(不需要程序员开发)。  作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)6、视图View(需要程序员开发jsp)。  注意:View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)ps:不需要程序员开发的,需要程序员自己做一下配置即可。

可以总结出:需要我们开发的工作只有处理器 Handler 的编写以及视图比如JSP页面的编写。可能你还对诸如前端控制器、处理器映射器等等名词不太理解,那么接下来我们对其进行详细的介绍。

3、配置前端控制器

在 web.xml 文件中进行如下配置:

<?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" id="WebApp_ID" version="3.0">  <display-name>SpringMVC_01</display-name>  <!-- 配置前端控制器DispatcherServlet -->  <servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <!--springmvc.xml 是自己创建的SpringMVC全局配置文件,用contextConfigLocation作为参数名来加载        如果不配置 contextConfigLocation,那么默认加载的是/WEB-INF/servlet名称-servlet.xml,在这里也就是 springmvc-servlet.xml      -->    <init-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:springmvc.xml</param-value>    </init-param>  </servlet>   <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <!--第一种配置:*.do,还可以写*.action等等,表示以.do结尾的或者以.action结尾的URL都由前端控制器DispatcherServlet来解析        第二种配置:/,所有访问的 URL 都由DispatcherServlet来解析,但是这里最好配置静态文件不由DispatcherServlet来解析        错误配置:/*,注意这里是不能这样配置的,应为如果这样写,最后转发到 jsp 页面的时候,仍然会由DispatcherServlet进行解析,                    而这时候会找不到对应的Handler,从而报错!!!      -->    <url-pattern>*.do</url-pattern>  </servlet-mapping></web-app>

4、配置处理器适配器

在 springmvc.xml 文件中配置。用来约束我们所需要编码的 Handler类。

第一种配置:编写 Handler 时必须要实现 Controller

<!-- 配置处理器适配器,所有适配器都得实现 HandlerAdapter接口 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

我们可以查看源码: 

SpringMVC有什么作用

第二种配置:编写 Handler 时必须要实现HttpRequestHandler

<!-- 配置处理器适配器第二种方法,所有适配器都得实现 HandlerAdapter接口 ,这样配置所有Handler都得实现 HttpRequestHandler接口--><bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />

SpringMVC有什么作用

5、编写 Handler

在 springmvc.xml 文件中配置。通俗来讲,就是请求的 URL 到我们这里所编写的 Handler 类的某个方法进行一些业务逻辑处理。

我们在上面讲解了两个处理器适配器来约束 Handler,那么我们就通过上面两种配置分别编写两个 Handler

第一种:实现Controller 接口

package com.ys.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 {        ModelAndView modelView = new ModelAndView();        //类似于 request.setAttribute()        modelView.addObject("name","张三");        modelView.setViewName("/WEB-INF/view/index.jsp");        return modelView;    } }

第二种:实现HttpRequestHandler 接口

package com.ys.controller; import java.io.IOException; import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler; public class HelloController2 implements HttpRequestHandler{     @Override    public void handleRequest(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setAttribute("name", "张三");        request.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(request, response);    } }

总结:通常我们使用第一种方式来编写 Handler ,但是第二种没有返回值,我们可以通过 response 修改相应内容,比如返回 JSON 数据。

response.setCharacterEncoding("utf-8");response.setContentType("application/json;charset=utf-8");response.getWriter().write("json字符串");

所以具体使用哪一种根据实际情况来判断。

5、配置处理器映射器

在 springmvc.xml 文件中配置。通俗来讲就是请求的 URL 怎么能被 SpringMVC 识别,从而去执行我们上一步所编写好的 Handler

第一种方法:

<!-- 配置Handler -->   <bean name="/hello.do" class="com.ys.controller.HelloController2" /> <!-- 配置处理器映射器    将bean的name作为url进行查找,需要在配置Handler时指定bean name(就是url)--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

这样配置的话,那么请求的 URL,必须为 http://localhost:8080/项目名/hello.do  

第二种方法:

<!-- 配置Handler -->   <bean id="hello1" class="com.ys.controller.HelloController" /><bean id="hello2" class="com.ys.controller.HelloController" /><!-- 第二种方法:简单URL配置处理器映射器 --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    <property name="mappings">        <props>            <prop key="/hello1.do">hello1</prop>            <prop key="/hello2.do">hello2</prop>        </props>    </property></bean>

这种配置请求的 URL可以为 http://localhost:8080/项目名/hello1.do,或者http://localhost:8080/项目名/hello2.do

总结:上面两种处理器映射器配置可以并存,前端控制器会正确的去判断 url 用哪个 Handler 去处理。

6、配置视图解析器

第一种配置:

<!-- 配置视图解析器    进行jsp解析,默认使用jstl标签,classpath下得有jstl的包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />

如果这样配,那么在 Handler 中返回的必须是路径+jsp页面名称+".jsp" 

第二种配置:

<!--配置视图解析器  -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <!-- 返回视图页面的前缀 -->        <property name="prefix" value="/WEB-INF/view"></property>        <!-- 返回页面的后缀 -->        <property name="suffix" value=".jsp"></property>    </bean>

如果这样配,那么在 Handler 中只需要返回在 view 文件夹下的jsp 页面名就可以了。

7、DispatcherServlet.properties

上面我们讲解了各种配置,可能有人会问这么多配置,万一少配置了一样,那不就不能运行了,那我们能不能不配置呢?答案是肯定的,SpringMVC 给我们提供了一个DispatcherServlet.properties 文件。系统会首先加载这里面的配置,如果我们没有配置,那么就默认使用这个文件的配置;如果我们配置了,那么就优先使用我们手动配置的。  

SpringMVC有什么作用

在 SpringMVC 运行之前,会首先加载DispatcherServlet.properties 文件里面的内容,那么我们来看看这里面都是什么。

我们可以从上面得出,如果我们不手动进行各种配置,那么也有会默认的

①、处理器适配器默认:org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter

②、处理器映射器默认:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

③、视图解析器默认:org.springframework.web.servlet.view.InternalResourceViewResolver

感谢您的阅读,希望您对“SpringMVC有什么作用”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注编程网精选频道!

--结束END--

本文标题: SpringMVC有什么作用

本文链接: https://www.lsjlt.com/news/308947.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringMVC有什么作用
    这篇“SpringMVC有什么作用”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“SpringMVC有什么作用”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-26
  • SpringMVC @RequestMapping注解有什么作用
    本篇内容介绍了“SpringMVC @RequestMapping注解有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、...
    99+
    2023-07-05
  • SpringMVC之@requestBody的作用是什么
    这篇文章主要介绍“SpringMVC之@requestBody的作用是什么”,在日常操作中,相信很多人在SpringMVC之@requestBody的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S...
    99+
    2023-07-06
  • springmvc中CharacterEncodingFilter的作用是什么
    CharacterEncodingFilter的作用是设置请求和响应的字符编码。在Spring MVC中,CharacterEnco...
    99+
    2023-09-06
    springmvc
  • SpringMVC中ModelAndView的作用是什么
    ModelAndView在Spring MVC中用于封装控制器处理方法的返回结果。它包含两部分内容:1. Model:用于存储处理方...
    99+
    2023-10-12
    SpringMVC
  • springmvc核心类的作用是什么
    Spring MVC核心类的作用是处理请求和响应的流程,将请求映射到相应的处理方法并返回响应。它提供了一个基于模型-视图-控制器(M...
    99+
    2023-08-18
    springmvc
  • DispatcherServlet在springmvc中的作用是什么
    本篇文章给大家分享的是有关DispatcherServlet在springmvc中的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、程序(一)web.xml文件中的...
    99+
    2023-05-31
    springmvc dispatcherservlet
  • SpringMVC拦截器的作用是什么
    本篇内容主要讲解“SpringMVC拦截器的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC拦截器的作用是什么”吧!目录web.xml文件springMVC配置文件:c...
    99+
    2023-06-20
  • SpringMVC工作原理是什么
    这篇“SpringMVC工作原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spr...
    99+
    2024-04-02
  • springmvc注解驱动的作用是什么
    Spring MVC注解驱动的作用是简化和加速开发过程,提高代码的可读性和可维护性。通过使用注解,可以避免繁琐的配置文件,减少开发人...
    99+
    2024-02-29
    springmvc
  • springmvc框架的主要作用是什么
    Spring MVC框架的主要作用是帮助开发人员快速、高效地构建Web应用程序。它提供了一种基于模型-视图-控制器(MVC)架构的开...
    99+
    2023-10-23
    springmvc
  • springmvc的工作流程是什么
    Spring MVC的工作流程如下:1. 客户端发送HTTP请求到DispatcherServlet。2. DispatcherSe...
    99+
    2023-08-18
    springmvc
  • SpringMVC MethodArgumentResolver的作用与实现方法是什么
    这篇文章主要介绍“SpringMVC MethodArgumentResolver的作用与实现方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC Meth...
    99+
    2023-07-06
  • SpringMVC适配器模式作用范围是什么
    这篇文章主要介绍“SpringMVC适配器模式作用范围是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC适配器模式作用范围是什么”文章能帮助大家解决问题。HandlerAdapt...
    99+
    2023-07-06
  • SpringMVC是什么
    这篇文章主要为大家展示了“SpringMVC是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringMVC是什么”这篇文章吧。一、SpringMvc概述SpringMVC是一个基于MVC...
    99+
    2023-06-26
  • SpringMVC视图作用详解
    目录一、ThymeleafView二、转发视图三、重定向视图四、视图控制器view-controllerSpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model...
    99+
    2022-11-13
    SpringMVC视图 SpringMVC视图渲染
  • HTML有什么作用
    这篇文章主要介绍了HTML有什么作用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。HTML介绍   HTML 是用来描述网页的一种...
    99+
    2024-04-02
  • JSON有什么作用
    这篇文章主要介绍“JSON有什么作用”,在日常操作中,相信很多人在JSON有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JSON有什么作用”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • Spring有什么作用
    本篇内容介绍了“Spring有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring是什么Spring是一个开源的轻量级Java...
    99+
    2023-06-02
  • vps有什么作用
    本篇内容介绍了“vps有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vps是什么vps又称为虚拟专用服务器,是指利用虚拟服务器软件...
    99+
    2023-06-07
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作