位置: IT常识 - 正文

【SpringMVC】集成Web、MVC执行流程、数据响应、数据交互(spring集成xfire)

编辑:rootadmin
【SpringMVC】集成Web、MVC执行流程、数据响应、数据交互 文章目录前言一.Spring集成Web二.对于SpringMVC的理解三.MVC执行流程(🏳️‍🌈)1.组件解析2.RequestMapping四.SpringMVC数据响应页面跳转回写数据五.SpringMVC获得请求数据前言

推荐整理分享【SpringMVC】集成Web、MVC执行流程、数据响应、数据交互(spring集成xfire),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:springboot集成mvc,springboot集成mvc,spring集成jwt,spring集成web,spring集成web,spring集成xfire,springmvc集成springsecurity,spring 集成,内容如对您有帮助,希望把文章链接给更多的朋友!

SpringMVC确实很麻烦,零碎的点太多

一.Spring集成Web

在Spring的学习中,我们知道在IOC容器中获取Bean时要通过获取上下文的方式 (new ClasspathXmlApplicationContext),这样我想在不同的地方获取Bean我得重新加载配置文件,应用上下文的对象也被创建了多次,造成所谓的“硬编码”问题。 如何解决? 按照思维习惯,解决此问题的最好方法就是把我的配置文件作用域提高 在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了,从而实现数据共享。 如何实现? ①导入Spring集成Web坐标

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.5.RELEASE</version> </dependency>

②配置ContextLoaderListener监听器 Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>

③通过工具获得应用上下文对象

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = this.getServletContext(); ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext); UserService userService = app.getBean(UserService.class); }

补充:为了解决xml文件名称与代码产生的耦合,引入了设置全局变量这一操作,通过在web.xml里事先定义好后再由具体的的代码获得定义的参数名来读文件,极大降低了耦合性 这样的话以后要改配置文件我就可以直接在一处修改文件名即可

二.对于SpringMVC的理解

M——model进行业务逻辑的处理 V——view视图,负责数据的输出,画面的展示 C——controller 负责接收从视图发送过来的数据,同时控制model与view Spring MVC是是属于Spring Framework生态里面的一个模块,它是在Servlet基础上构建并且使用MVC模式设计的一个 Web框架,主要的目的是简化传统Servlet+JSP模式下的Web开发方式。其次,Spring MVC的整体架构设计对Java Web里面的MVC架构模式做了增强和扩展,主要有几个方面。把传统MVC框架里面的Controller控制器做了拆分,分成了前端控制器DispatcherServlet和后端控制器Controller,把 Model模型拆分成业务层Service和数据访问层Repository。 在视图层,可以支持不同的视图,比如 Freemark、velocity、JSP等等 所以,Spring MVC天生就是为了MVC模式而设计的,因此在开发MVC应用的时候会更加方便和灵活。

三.MVC执行流程(🏳️‍🌈)【SpringMVC】集成Web、MVC执行流程、数据响应、数据交互(spring集成xfire)

客户端与服务器端的一次会话代表着一次请求与响应,通过MVC的模式使其更加系统 具体执行流程如下所示: ①用户发送请求至前端控制器DispatcherServlet ②DispatcherServlet收到请求调用HandlerMapping处理器映射器 ③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet ④DispatcherServlet调用HandlerAdapter处理器适配器 ⑤HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器) ⑥Controller执行完成返回ModelAndView ⑦HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet ⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器 ⑨ViewReslover解析后返回具体View ⑩DispatcherServlet根据View进行渲染视图〈即将模型数据填充至视图中),DispatcherServlet响应用户

1.组件解析

1.前端控制器:DispatcherServlet 用户请求到达前端控制器,它就相当于MVC模式中的C,DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性 2.处理器映射器: HandlerMapping HandlerMapping负责根据用户请求找到Handler即处理器,SpringMVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等 3.处理器适配器: HandlerAdapter 通过 HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行 4.处理器:Handler 它就是我们开发中要编写的具体业务控制器。由DispatcherServlet把用户请求转发到Handler。由Handler对具体的用户请求进行处理 5.视图解析器:View Resolver View Resolver负责将处理结果生成View视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户 6.视图:View SpringMVC框架提供了很多的View视图类型的支持,包括: jstlView、freemarkerView.pdfView等。最常用的视图就是jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

2.RequestMapping

作用:用于建立请求URL和处理请求方法之间的对应关系 位置: 类上,请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录 方法上,请求URL的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径属性: value:用于指定请求的URL。它和path属性的作用是一样的method:用于指定请求的方式 params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样

四.SpringMVC数据响应页面跳转

1.直接返回字符串,本质是在配置文件里写好头和尾,在具体的代码中返回文件名后跳转 2.返回ModelAndView对象

public ModelAndView back(){// Model:模型 作用封装数据,View:视图 作用展示数据 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("username","itcast"); //设置模型数据 modelAndView.setViewName("hello"); //设置视图名称 return modelAndView; }

页面跳转的方式还有,比如向request域存储数据后返回对象

回写数据

1.直接输出字符串

public void back(HttpServletResponse response) throws IOException { response.getWriter().print("Hello Java"); }

2.写注解直接返回字符串

@ResponseBody //告知SpringMVC框架 不进行视图跳转 直接进行数据响应 public String back() throws IOException { return "hello java"; }

3.返回对象或者集合 事先要配置SpringMVC注解驱动<mvc:annotation-driven/>默认底层就会集成Jackson进行对象集合与json格式字符串的转换

@ResponseBody public Sheep back() throws IOException { Sheep sheep = new Sheep(); sheep.setUsername("懒羊羊"); sheep.setAge(2); return sheep; //SpringMVC自动将Sheep转换成json格式的字符串 }五.SpringMVC获得请求数据

1.获得基本数据类型,形如:

@RequestMapping(value="/resp") @ResponseBody public void save11(String username,int age) throws IOException { System.out.println(username); System.out.println(age); }

然后我在URL中输入相应的路径,传入相应的参数即可获得请求的数据 http://localhost:yu7daily/demo1?username=lyy&age=2 2.获得POJO类型参数

@RequestMapping(value="/demo2") @ResponseBody public void back(User user) throws IOException { System.out.println(user); }

同样在URL传入路径,即可获得数据 http://localhost:yu7daily/demo2?username=lyy&age=2

本文链接地址:https://www.jiuchutong.com/zhishi/299057.html 转载请保留说明!

上一篇:Torchtext快速入门(一)——Vocab(torchaudio教程)

下一篇:全网最新的vue.js下载和安装的3种方法(2023年)(全网最新的暗号)

  • 剪映怎么让每张图片都为1秒(剪映怎么让每张背景文字不一致呢)

    剪映怎么让每张图片都为1秒(剪映怎么让每张背景文字不一致呢)

  • 为什么抖音里的美化功能少了(为什么抖音里的草稿箱突然全没了要怎么找回来)

    为什么抖音里的美化功能少了(为什么抖音里的草稿箱突然全没了要怎么找回来)

  • 华为型号SEA-AL10什么意思(华为型号大全对照表)

    华为型号SEA-AL10什么意思(华为型号大全对照表)

  • trt-al00a是什么型号(trt al00a什么型号)

    trt-al00a是什么型号(trt al00a什么型号)

  • iphonese2支持无线充电吗(苹果se2可以无线)

    iphonese2支持无线充电吗(苹果se2可以无线)

  • h310可以装win7吗(h310m-k能装win7吗)

    h310可以装win7吗(h310m-k能装win7吗)

  • 微信怎么看对方是否静音(微信怎么看对方是否删除自己)

    微信怎么看对方是否静音(微信怎么看对方是否删除自己)

  • 华为录屏快捷键怎么弄出来(华为录屏快捷键怎么设置)

    华为录屏快捷键怎么弄出来(华为录屏快捷键怎么设置)

  • 通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

    通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

  • x分身软件打不开怎么办(分身应用 无法打开)

    x分身软件打不开怎么办(分身应用 无法打开)

  • 苹果平板插卡版和wifi版有什么区别(苹果平板插卡版可以用wifi吗)

    苹果平板插卡版和wifi版有什么区别(苹果平板插卡版可以用wifi吗)

  • 应用还原是什么意思(应用还原是什么意思 应用还原的解释)

    应用还原是什么意思(应用还原是什么意思 应用还原的解释)

  • 三星电视每隔几分钟屏保(三星电视使用)

    三星电视每隔几分钟屏保(三星电视使用)

  • 玩机技巧是干什么用的(玩机技巧app下载)

    玩机技巧是干什么用的(玩机技巧app下载)

  • win7怎么修改兼容模式(口干舌燥吃牛黄解毒片有用吗)

    win7怎么修改兼容模式(口干舌燥吃牛黄解毒片有用吗)

  • vivo手机可以开空调吗(vivo手机可以开机,但是黑屏怎么办)

    vivo手机可以开空调吗(vivo手机可以开机,但是黑屏怎么办)

  • word文档不允许修改(word文档不允许修改怎么设置)

    word文档不允许修改(word文档不允许修改怎么设置)

  • 戴尔g7 风扇能设置吗(戴尔g7 风扇能设置转速吗)

    戴尔g7 风扇能设置吗(戴尔g7 风扇能设置转速吗)

  • 苹果型号a开头代表什么(苹果型号a开头在哪看)

    苹果型号a开头代表什么(苹果型号a开头在哪看)

  • 抖音输液爱心图怎么做(抖音里面输液输进去钱的特效)

    抖音输液爱心图怎么做(抖音里面输液输进去钱的特效)

  • 拼多多取钱链接在哪里(拼多多提现的链接怎么找到复制)

    拼多多取钱链接在哪里(拼多多提现的链接怎么找到复制)

  • 无线网密码怎么设置(无线网密码怎么破解啊)

    无线网密码怎么设置(无线网密码怎么破解啊)

  • vivos1的手电筒在哪里

    vivos1的手电筒在哪里

  • 手机建站如何满足用户需求(手机 建站)

    手机建站如何满足用户需求(手机 建站)

  • 2023新版ChatGPT3.5付费问答 AI聊天机器人小程序源码 带流量主 多开 带分销全开源 thinkphp6后台源码(2023新版拳击航母)

    2023新版ChatGPT3.5付费问答 AI聊天机器人小程序源码 带流量主 多开 带分销全开源 thinkphp6后台源码(2023新版拳击航母)

  • Vue3父子组件间传参通信(vue父组件子组件)

    Vue3父子组件间传参通信(vue父组件子组件)

  • 房产契税是怎样计算的
  • 什么是银行税贷产品
  • 个税手续费返还比例
  • 个人所得税租房专项扣除标准
  • 资产负债表怎么下载
  • 增值税发票税号0和O
  • 月报和季度报的区别
  • 银行存款可以红字吗
  • 住宅小区共用部位有哪些
  • 增值税发票丢了怎么补开
  • 装饰行业可否用石灰代替
  • 计提贷款损失准备金遵循以下原则
  • 收到借户过账资金的短信
  • 出口退税进项发票稽核
  • 自营工程领用原材料
  • 三证合一后新老税号不符合
  • 零税率购房发票
  • 广告费用的增值税税率
  • 学校应该缴纳的税
  • 建筑行业包含哪些项目
  • 中小五金企业如何进行成本核算
  • 员工工牌的作用
  • 企业应付账款管理优化方案设计
  • 理财公司收到客户投资款怎么处理
  • ps4运行windows
  • 个体工商户应申报套餐无增值税吗
  • win7系统电脑开机密码忘记了怎么办
  • PHP:ftp_ssl_connect()的用法_FTP函数
  • 销售不动产分期收款怎么确认收入
  • 安置残疾人就业单位城镇土地使用税
  • dcc是什么文件
  • edge浏览器百度网盘插件
  • 企业亏损注销税务会不会来查账
  • 发票开烟酒
  • 都有哪些收据可以抵税
  • 售后回购方式销售商品如何确认收入
  • php字符串在另一个字符串出现
  • 工程分包合同
  • 合伙企业利润分配原则
  • fold命令 限制文件列宽
  • 劳务外经证预缴税款
  • 中小企业估值
  • 民非企业是否可以做酒
  • SqlServer 2005 T-SQL Query 学习笔记(4)
  • 主营业务收入和营业外收入均属于收入
  • 生育津贴到公司了公司什么时候发给个人
  • 小型数据库软件有哪些
  • 政府补助的分类包括
  • 预付款被退回分录
  • 增值税专用发票电子版
  • 我国消费现状分析
  • 新准则公允价值变动科目余额为负数
  • 公司发放给员工的福利又要回
  • 各单位都需设置的是
  • mysql5717安装及配置超详细教程
  • bios是什么怎么设置
  • windows7开始菜单不见了
  • linux安全工具
  • win8.1核心版密钥
  • linux内核编程指南
  • gridview获取列数据
  • js 高级技巧
  • python根据ip获取主机名
  • Node.js中的construct
  • 简略说明本岗位最高风险的防范措施和现场处置方案
  • nodejs 异步任务队列
  • javascript的sort
  • 通过制作日晷我们可以探索发现一天之中
  • javascript获取css
  • js实现带搜索功能的下拉菜单
  • javascript new fun的执行过程
  • python popt
  • android设置音量
  • 重庆电子税务局app下载
  • 赣州市民中心上班时间电话号码
  • 上海地铁和公交乘车码
  • 个体户定额纳税
  • 会计报表错误
  • 南通地税电话号码
  • 租房税费怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设