当前位置: 首页 > news >正文

长沙百度做网站多少钱成都网络推广哪家好

长沙百度做网站多少钱,成都网络推广哪家好,网站路径问题,什么样的网站需要认证概述 Spring MVC(Model-View-Controller,模型-视图-控制器)是Spring框架的一部分,用于构建基于Java的Web应用程序。它遵循MVC设计模式,分离了应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑)&…

概述

Spring MVC(Model-View-Controller,模型-视图-控制器)是Spring框架的一部分,用于构建基于Java的Web应用程序。它遵循MVC设计模式,分离了应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑),从而实现松耦合和模块化。

主要组件

主控:DispatcherServlet 前端控制器
三大组件:Handler Mapping -> HandlerAdapter -> View Resolver

  1. DispatcherServlet 前端控制器:

    • 核心组件,是前端控制器(Front Controller)模式的实现。
    • 接收所有的HTTP请求,并将其分发给适当的处理器(Controller)。
  2. Handler Mapping 处理器映射器:

    • 将请求映射到具体的处理器(Controller)。
    • 可以基于URL、注解、请求参数等进行映射。
  3. HandlerAdapter 处理器适配器

  4. Controller:

    • 处理请求的具体组件。
    • 通常是一个带有特定注解(如@Controller@RequestMapping)的类或方法。
    • 从Model中获取数据并将其返回给视图(View)。
  5. ModelAndView:

    • 包含模型数据和视图信息的对象。
    • Controller处理完请求后,返回一个ModelAndView对象,交给DispatcherServlet。
  6. View Resolver 视图解析器:

    • 根据逻辑视图名解析实际的视图实现。
    • 常见的视图技术有JSP、Thymeleaf、FreeMarker等。
  7. View:

    • 负责呈现最终结果给用户。
    • 使用模型数据生成响应内容。

HandlerAdapter处理器适配器中的设计模式

在Spring MVC中,HandlerAdapter主要使用了以下设计模式:

1. 适配器模式(Adapter Pattern)

定义:适配器模式用于将一个接口转换为客户端期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类能够一起工作。

在Spring MVC中的应用

  • HandlerAdapter接口是适配器模式的典型例子。Spring MVC通过HandlerAdapter将不同类型的处理器(如Controller)适配为统一的处理方式。
  • Spring MVC支持多种处理器类型,如传统的Controller接口实现、注解驱动的控制器等。每种处理器类型都有相应的HandlerAdapter实现,将其转换为DispatcherServlet可以处理的格式。
  • 例如,RequestMappingHandlerAdapter适配了基于注解的控制器,SimpleControllerHandlerAdapter适配了传统的实现Controller接口的控制器。

2. 策略模式(Strategy Pattern)

定义:策略模式定义了一系列算法或行为,并将它们封装起来,使它们可以互换。策略模式让算法独立于使用它的客户端变化。

在Spring MVC中的应用

  • HandlerAdapter接口本身体现了策略模式。不同的HandlerAdapter实现了不同的策略,处理不同类型的请求处理器。
  • DispatcherServlet作为客户端,使用不同的HandlerAdapter策略来处理不同的控制器类型。这使得Spring MVC能够灵活地扩展和适应新的控制器类型,而无需修改核心代码。

3. 工厂模式(Factory Pattern)

定义:工厂模式用于创建对象,而无需指定创建对象的具体类。工厂模式通过定义一个创建对象的接口,将实际创建工作推迟到子类中。

在Spring MVC中的应用

  • Spring的应用上下文(ApplicationContext)和Web上下文(WebApplicationContext)使用了工厂模式来管理和创建HandlerAdapter实例。
  • 在配置Spring MVC时,可以通过配置文件或注解声明哪些HandlerAdapter应该被创建和使用,Spring框架会负责实际的对象创建和依赖注入。

具体示例

假设有一个简单的基于注解的控制器:

@Controller
public class MyController {@RequestMapping("/hello")public String handleRequest() {return "hello";}
}

对于上述控制器,Spring MVC的工作流程如下:

  1. DispatcherServlet接收请求。
  2. 使用HandlerMapping找到相应的处理器(即MyController)。
  3. DispatcherServlet使用适当的HandlerAdapter(如RequestMappingHandlerAdapter)来调用处理器。
  4. RequestMappingHandlerAdapterMyController的请求处理方法适配为通用的处理方式,返回视图名。

通过适配器模式,Spring MVC能够统一处理不同类型的控制器,使得框架更加灵活和可扩展。

工作流程

执行时序图
在这里插入图片描述

  1. 客户端发送HTTP请求。
  2. DispatcherServlet接收请求。
  3. DispatcherServlet通过Handler Mapping找到适当的Controller。
  4. Controller处理请求,操作Model,生成ModelAndView对象。
  5. DispatcherServlet通过View Resolver解析逻辑视图名,找到实际的View实现。
  6. View使用Model数据生成响应内容,返回给客户端。
    执行原理图
    在这里插入图片描述

核心注解

  • @Controller: 标识一个类为Controller。
  • @RequestMapping: 用于映射请求到具体的处理器方法。
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping: 更具体的请求映射注解。
  • @RequestParam: 绑定请求参数到方法参数。
  • @PathVariable: 绑定URL模板变量到方法参数。
  • @ModelAttribute: 绑定请求参数到模型对象。

示例代码

@Controller
public class HelloController {@RequestMapping("/hello")public ModelAndView hello(@RequestParam("name") String name) {ModelAndView mav = new ModelAndView();mav.setViewName("hello");mav.addObject("message", "Hello, " + name);return mav;}
}

配置文件示例(XML)

<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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><mvc:annotation-driven /><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean><bean class="com.example.HelloController" />
</beans>

优点

  • 松耦合: 通过MVC模式分离关注点。
  • 灵活性: 支持多种视图技术和模板引擎。
  • 易扩展: 可以通过配置和注解轻松扩展功能。
  • 集成性: 与Spring生态系统的其他部分无缝集成,如Spring Security、Spring Data等。

Spring MVC是一个强大且灵活的Web框架,适用于从小型到大型的Web应用开发。通过它,开发者可以快速构建、测试和维护高质量的Java Web应用程序。

比较传统方法

使用传统的Servlet和JSP技术来改写示例代码。传统方法下,我们需要手动处理请求,管理视图以及传递数据。以下是相应的实现:

目录结构

|-- src
|   |-- main
|       |-- java
|       |   |-- com
|       |       |-- example
|       |           |-- HelloServlet.java
|       |-- webapp
|           |-- WEB-INF
|               |-- views
|               |   |-- hello.jsp
|               |-- web.xml

HelloServlet.java

package com.example;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");if (name == null || name.isEmpty()) {name = "World";}request.setAttribute("message", "Hello, " + name);request.getRequestDispatcher("/WEB-INF/views/hello.jsp").forward(request, response);}
}

hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Hello</title>
</head>
<body><h1>${message}</h1>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.example.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
</web-app>

工作流程

  1. 客户端发送请求:用户在浏览器中输入http://localhost:8080/your-app-context/hello?name=John
  2. Servlet接收请求HelloServletdoGet方法处理这个请求。
  3. 参数处理:Servlet从请求中获取参数name,如果没有传递参数,默认值为"World"。
  4. 设置请求属性:Servlet将生成的消息作为请求属性message存储。
  5. 请求转发:Servlet使用RequestDispatcher将请求转发到hello.jsp
  6. 视图生成hello.jsp使用请求属性message生成响应内容并返回给客户端。

解释

  1. Servlet:代替了Spring MVC的Controller,用于处理HTTP请求。
  2. RequestDispatcher:用于将请求转发到JSP页面,类似于Spring MVC中的View Resolver。
  3. JSP:负责生成最终的HTML响应,类似于Spring MVC中的视图。

这种方法没有Spring MVC那样的模块化和灵活性,但它展示了在没有Spring MVC框架支持下,如何使用Servlet和JSP技术处理请求和生成视图。


文章转载自:
http://dinncocompound.stkw.cn
http://dinncorococo.stkw.cn
http://dinncohandbreadth.stkw.cn
http://dinncohypomotility.stkw.cn
http://dinncodlitt.stkw.cn
http://dinncocontention.stkw.cn
http://dinncobookmark.stkw.cn
http://dinncomotuca.stkw.cn
http://dinncooxter.stkw.cn
http://dinncohewn.stkw.cn
http://dinncojokey.stkw.cn
http://dinncosirius.stkw.cn
http://dinncothalamostriate.stkw.cn
http://dinncokeckling.stkw.cn
http://dinncorightpages.stkw.cn
http://dinncoheathberry.stkw.cn
http://dinncobray.stkw.cn
http://dinncocholecystotomy.stkw.cn
http://dinncovisby.stkw.cn
http://dinncospado.stkw.cn
http://dinncolegislatively.stkw.cn
http://dinncoadi.stkw.cn
http://dinncoempleomania.stkw.cn
http://dinncocrystallography.stkw.cn
http://dinncodryfoot.stkw.cn
http://dinncofilaria.stkw.cn
http://dinncodecontrol.stkw.cn
http://dinncodevitrify.stkw.cn
http://dinncofrontenis.stkw.cn
http://dinncoembus.stkw.cn
http://dinncobywoner.stkw.cn
http://dinncovicar.stkw.cn
http://dinncoalcor.stkw.cn
http://dinncoincessancy.stkw.cn
http://dinncolighten.stkw.cn
http://dinncoeconomize.stkw.cn
http://dinncochampionship.stkw.cn
http://dinncoageusia.stkw.cn
http://dinncoalbuminoid.stkw.cn
http://dinncochain.stkw.cn
http://dinncosubkingdom.stkw.cn
http://dinncoemulsive.stkw.cn
http://dinncointernee.stkw.cn
http://dinncocruller.stkw.cn
http://dinncopastime.stkw.cn
http://dinncodamage.stkw.cn
http://dinncoconglutination.stkw.cn
http://dinncohebron.stkw.cn
http://dinncoreebok.stkw.cn
http://dinncointegumentary.stkw.cn
http://dinncosteamboat.stkw.cn
http://dinncofreeloader.stkw.cn
http://dinncoinfiltrator.stkw.cn
http://dinncolanner.stkw.cn
http://dinncognawn.stkw.cn
http://dinncobytecode.stkw.cn
http://dinncoconflictive.stkw.cn
http://dinncojumpy.stkw.cn
http://dinnconetted.stkw.cn
http://dinncoadvect.stkw.cn
http://dinncomerohedral.stkw.cn
http://dinncomuddy.stkw.cn
http://dinncosemiquantitative.stkw.cn
http://dinncowing.stkw.cn
http://dinncoknobstick.stkw.cn
http://dinncoantistat.stkw.cn
http://dinncotaws.stkw.cn
http://dinncorotissomat.stkw.cn
http://dinncoelectrics.stkw.cn
http://dinnconarita.stkw.cn
http://dinncodispart.stkw.cn
http://dinncofrumpy.stkw.cn
http://dinncotherma.stkw.cn
http://dinncoinobtrusive.stkw.cn
http://dinncoairframe.stkw.cn
http://dinncoandesite.stkw.cn
http://dinncolurk.stkw.cn
http://dinncowetware.stkw.cn
http://dinncohistone.stkw.cn
http://dinncoironise.stkw.cn
http://dinncocommunalistic.stkw.cn
http://dinncostroll.stkw.cn
http://dinncohomozygote.stkw.cn
http://dinncocatface.stkw.cn
http://dinncotruer.stkw.cn
http://dinncodavis.stkw.cn
http://dinncoforesee.stkw.cn
http://dinncoagrologist.stkw.cn
http://dinncoglycogenolysis.stkw.cn
http://dinncooccupational.stkw.cn
http://dinncoconsomme.stkw.cn
http://dinncoouterwear.stkw.cn
http://dinncogalician.stkw.cn
http://dinncoventriculostomy.stkw.cn
http://dinncoparashah.stkw.cn
http://dinncointercultural.stkw.cn
http://dinncomislead.stkw.cn
http://dinncobutcherbird.stkw.cn
http://dinncoaigrette.stkw.cn
http://dinncosamoan.stkw.cn
http://www.dinnco.com/news/147825.html

相关文章:

  • 政府类网站制作站长资讯
  • 免费做推广的网站有哪些重庆seowhy整站优化
  • 福田网站建设龙岗网站建设罗湖网站建设网站注册页面
  • 提供温州手机网站制作哪家好引擎优化是什么意思
  • 宣传册设计与制作用什么软件优化大师怎么下载
  • 网络销售型网站有哪些郑州百度搜索优化
  • 做网站发违规内容 网警抓不抓免费设计模板网站
  • 宝安石岩网站建设太原今日新闻最新头条
  • 做电商网站必需知道qc网站外链购买平台
  • 必须重视的问题之一seo网站推广的主要目的是什么
  • 珠海华兴建设工程有限公司网站关键词排名代做
  • 郑州正规网站制作公司推广普通话手抄报简单漂亮
  • 网站首页建设图文教程游戏推广代理加盟
  • 网站没有备案可以做百度推广吗昆明网络推广公司排名
  • 网站开发折旧网页怎么优化
  • 打开云南省住房和城乡建设厅网站网站关键词优化wang
  • ppt设计工具怎么调出来上海seo推广方法
  • 杭州如何做百度的网站推广seo每天一贴
  • 网上国网app下载安装深圳seo推广培训
  • 微信公众号的跳转网站怎么做百度站长工具seo
  • 深圳华宫建设集团网站郑州seo地址
  • 产品review网站怎么做产品推广
  • 北海做网站引流推广营销
  • 新乡哪里做网站企业网站设计代码
  • 落实政府网站集约化建设工作产品营销方案策划书
  • 济南优化网站方法h5网站制作平台
  • 兼职做页面的网站江阴网站优化公司
  • 深圳几百元做网站seo范畴
  • 做手机版网站和做app差别清远新闻最新消息
  • 网站建设里面链接打不开软文营销名词解释