游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

阿里云一面详解下SpringMVC框架

  一、SpringMVC是什么
  SpringMVC全称SpringWebMVC是一个基于ServletAPI构建的原始Web框架,从一开始就包含在Spring框架中Web框架
  在之前学习Servlet的时候就已经接触到Web。所谓的Web框架,就是当用户输入一个URL地址后,将URL地址和程序进行映射,然后通过程序获取到用户的请求,经过请求的处理后,服务器发送的响应能够返回到客户端,将结果展示给用户ServletAPI
  有关ServletAPI的介绍文章MVC含义
  MVC是一种软件工程中的一种软件架构模式,将软件系统分成了模型、视图、控制器三部分
  M(Model):指的是模型,用于处理应用程序数据逻辑部分
  V(View):指的是视图,用于处理数据显示部分
  C(Controller):指的是控制器,用于处理用户交互的部分
  解释
  用户通过浏览器去访问程序的时候,请求会先到Controller(控制层),控制层验证参数的合法性,如果没有问题的话,就会将请求转发给Model(模型)进行业务的处理,然后将结果(业务数据)响应给控制层,然后控制层再将数据发送给View(视图),视图最后做合并和整理工作,组装成了一个HTML页面,最后将页面响应给用户
  总的来说,MVC就是一种思想,SpringMVC就是对MVC这是一种思想的具体实现二、SpringMVC具体使用2。1SpringMVC创建
  SpringMVC使用SpringBoot的方式创建的,创建的SpringBoot项目过程中有勾选依赖这一环节,勾选的SpringWeb框架就是SpringMVC框架,将该依赖给勾选上了,其余的就是正常的创建SpringBoot项目的步骤
  2。2SpringMVC连接
  SpringMVC连接即将用户和Java程序进行连接,用户通过一个地址就可以调用到Spring程序RequestMapping注解
  在SpringMVC中常常使用RequestMapping注解实现路由映射
  路由映射就是用户访问URL时,能够将用户的请求和程序中的某个类中的某个方法对应起来RestControllerRequestMapping(index)publicclassUserController{RequestMapping(hello)publicStringfunc(){returnh1HelloSpringMVCh1;}}解释当启动项目后,访问地址http:127。0。0。1:8080indexhello就能获取到返回的内容HelloSpringMVCRestController注解是Controller和ResponseBody这两个注解的合体。添加Controller注解是为了项目启动后,该类放在了Spring容器中,被加载,方才能被访问到。添加RequestBody注解是因为默认情况下会返回一个静态页面,但是此时只是返回一个数据,因此需要添加RequestMapping注解是可以修饰类,也可以修饰方法,一定要在方法上添加注解,类上面不一定需要默认情况下,RequestMapping接收GET方式的请求,但是也可以接受POST方式的请求显示指定方法RestControllerRequestMapping(index)publicclassUserController{RequestMapping(valuehello,methodRequestMethod。POST)publicStringfunc(){returnh1HelloSpringMVCh1;}}
  通过method参数内容就可以指定具体的接收方法,此时该方法只能接收POST请求GetMapping和PostMapping
  除了在RequestMapping注解中指定接收的方法之外,也可以直接使用GetMapping和PostMapping注解,前者使得方法只能接收GET请求,后者使得方法只能接受POST请求2。3如何获取参数2。3。1通过URL传递参数
  例如URL:http:127。0。0。1:8080indexgetUser?userNamepeterpassWord123
  想要获取userName和passWord对应的内容,可以直接使用方法中的参数来实现传参代码展示RestControllerRequestMapping(index)publicclassUserController{RequestMapping(getUser)publicStringgetUser(StringuserName,StringpassWord){returnuserNameuserNamepassWordpassWord;}}结果显示
  注意
  2。3。2通过表单传递参数
  通过表单进行参数的传递方法也是和上面差不多的
  代码同上面的代码展示,通过PostMan进行提交form表单,也需要注意参数的对应结果展示
  2。3。3传递对象
  在参数较少的情况下,会使用直接传参的方式,如果参数较多时,使用对象进行传参会更好代码展示DatapublicclassUser{privateStringuserName;privateStringpassWord;}RestControllerRequestMapping(index)publicclassUserController{RequestMapping(getUser1)publicStringgerUser1(Useruser){Stringnameuser。getUserName();Stringworduser。getPassWord();return对象中的userName:name对象中的passWord:word;}}结果显示
  代码参数是一个User对象,说明待会需要接收的就是一个对象,然后就会拿着这个对象中的所有属性,在请求中匹配参数2。3。4补充后端参数的重命名
  后端参数名未必一定要和前端参数名一模一样,可以通过RequestParam注解来重命名前后端的参数值RequestMapping(getUser)publicStringgetUser(RequestParam(userName)Stringname,StringpassWord){returnuserNamenamepassWordpassWord;}
  前端的参数key是userName和passWord,后端的参数key是name和passWord设置参数必传非必传
  同样是上面的代码,如果参数中只传了userName参数会怎样,只传了passWord参数会怎样结果显示
  如果没有传递passWord参数,影响不大
  如果没有传递userName参数,就会报400错误
  原因就是RequestParam中的required参数默认值为true,表示为必传参数
  如果有参数需要使用RequestParam注解且该参数是非必传参数,就需要将required参数值设置为falseRequestMapping(getUser)publicStringgetUser(RequestParam(valueuserName,requiredfalse)Stringname,StringpassWord){returnuserNamenamepassWordpassWord;}2。3。5接收JSON对象
  使用RequestBody来接收JSON对象代码展示RestControllerRequestMapping(index)publicclassUserController{RequestMapping(loginByJson)publicStringloginByJson(RequestBodyUseruser){returnuserName:user。getUserName()passWord:user。getPassWord();}}结果显示
  2。3。6获取URL中的参数
  一般来说,获取URL中的参数一般是指获取queryString中的参数值,但还有一种特殊的,就是从URL的PATH中获取参数
  需要通过PathVariable注解代码展示RestControllerRequestMapping(index)publicclassUserController{RequestMapping(loginByPath{userName}{passWord})publicStringloginByPath(PathVariable(userName)Stringname,PathVariableStringpassWord){returnuserName:namepassWord:passWord;}}注意路径中的参数需要用花括号包裹PathVariable中传入参数也可以实现重命名注意参数名的一一对应(不可少参数)
  结果显示
  2。3。7文件上传
  使用RequestPart注解上传图片代码展示RestControllerRequestMapping(index)publicclassUserController{RequestMapping(upLoad)publicStringupLoadFile(StringuserName,RequestPart(picture)MultipartFilefile)throwsIOException{获取文件后缀Stringsuffixfile。getOriginalFilename()。substring(file。getOriginalFilename()。lastIndexOf(。));文件路径StringfilePathSystem。getProperty(user。dir)srcmainresourcespictureUUID。randomUUID()。toString();拼接路径StringfinallyPathfilePathsuffix;file。transferTo(newFile(finallyPath));returnuserName上传了一张图片;}}注意RequestPart注解里对应的是上传图片的参数名通过file。getOriginalFilename()方法获取图片的完整名,然后通过查找最后一个。,来截取出后缀名System。getProperty(user。dir)为获取当前工程目录拼接完路径后,file。transferTo(newFile(finallyPath)),创建文件实例并保存为了生成独一无二的文件名,这里使用了UUID结果显示
  2。3。8获取CookieSessionheader获取Cookie
  通过CookieValue注解RequestMapping(getCookie)publicStringgetCookie(CookieValue(newCookie)Stringvalue){returncookie:value;}
  最一开始访问该方法时结果为404,因为此时没有key为newCookie这样的Cookie
  通过浏览器端模拟该Cookie后,就可以获取到Cookie的值
  获取Header
  通过RequestHeader注解RequestMapping(getHeader)publicStringgetHeader(RequestHeader(UserAgent)Stringcontent){returnUserAgent:content;}
  获取Session
  通过SessionAttribute注解
  按照以前的方法来创建SessionRequestMapping(setSession)publicStringsetSession(HttpServletRequestreq){HttpSessionsessionreq。getSession(true);if(session!null){session。setAttribute(userName,SpringMVC);}returnsession设置完成;}
  获取Session对象中的key为userName的值RequestMapping(getSession)publicStringgetSession(SessionAttribute(valueuserName,requiredfalse)StringuserName){returnuserName:userName;}
  2。4如何返回参数2。4。1返回静态页面
  默认请求下,SpringBoot返回的是静态页面代码展示ControllerRequestMapping(index)publicclassUserController{RequestMapping(getView)publicStringgetView(){returnindex。html;}}
  index。html中主要内容为h1stylecolor:red;HelloSpringMVCh1
  2。4。2返回texthtml
  在之前的各种例子中都是返回texthtml类型,当方法返回值为String时,并且有加上ResponseBody注解,返回的就是texthtml类型实例:计算机加法实现前端代码展示!DOCTYPEhtmlhtmllangenheadmetacharsetUTF8metahttpequivXUACompatiblecontentIEedgemetanameviewportcontentwidthdevicewidth,initialscale1。0title计算机titleheadbody数字1:inputtypetextidone数字2:inputtypetextidtwoinputtypebuttonvalue提交onclicksubmit()bodyhtml后端代码展示RestControllerpublicclassCalcController{RequestMapping(calc)publicStringcalc(Integerone,Integertwo){if(onenulltwonull)return不可为空;returnString。format(d加上d等于d,one,two,onetwo);}}结果显示
  2。4。3返回JSON
  通过HashMap返回数据或者返回一个对象,返回的数据类型就是JSON代码展示(Map)RestControllerRequestMapping(index)publicclassUserController{RequestMapping(getUserByJson)publicHashMapString,StringgetUserByJson(StringuserName,StringpassWord){HashMapString,StringmapnewHashMap();map。put(userName,userName);map。put(passWord,passWord);returnmap;}}结果显示(Map)
  代码展示(对象)RestControllerRequestMapping(index)publicclassUserController{RequestMapping(getUserByJson1)publicUsergetUserByJson1(StringuserName,StringpassWord){UserusernewUser();user。setUserName(userName);user。setPassWord(passWord);returnuser;}}结果显示(对象)
  实例:实现登录操作
  要求:用户提交数据为json类型,返回结果为json类型指定用户名为Json,用户密码为123为登录成功前端代码展示!DOCTYPEhtmlhtmllangenheadmetacharsetUTF8metahttpequivXUACompatiblecontentIEedgemetanameviewportcontentwidthdevicewidth,initialscale1。0title用户登录titleheadbodyh1stylepaddingleft:120px;登录h1用户姓名:inputtypetextiduserNamep用户密码:inputtypepasswordidpassWordpinputtypebuttonvalue提交onclickmysubmit()styleheight:30px;width:80px;bodyhtml后端代码展示RestControllerpublicclassLoginController{RequestMapping(login)publicHashMapString,Objectlogin(RequestBodyUseruser){HashMapString,ObjectmapnewHashMap();Stringmessage;用户名和密码判断,不得为null或if(StringUtils。hasLength(user。getUserName())StringUtils。hasLength(user。getPassWord())){if(user。getUserName()。equals(Json)user。getPassWord()。equals(123)){message;}else{message用户名或者密码有误,登录失败;}}else{message请将信息填写完整;}map。put(succ,200);map。put(message,message);returnmap;}}结果展示
  2。4。4请求转发请求重定向forward(请求转发)服务器进行转发;请求转发地址不会发生变化;请求转发由于是服务器转发的原来的外部资源可能访问不到redirect(请求重定向)请求重新定位到资源;请求的地址发生变化;请求重定向和直接访问新地址效果是一样的,原来的外部资源可以顺利访问到代码展示前端代码展示!DOCTYPEhtmlhtmllangenheadmetacharsetUTF8metahttpequivXUACompatiblecontentIEedgemetanameviewportcontentwidthdevicewidth,initialscale1。0titleDocumenttitlelinkrelstylesheethrefcsslogin。cssheadbodyh1HelloSpringMVCh1bodyhtmlCSS代码展示h1{color:red;}后端代码展示ControllerpublicclassUserController{请求转发RequestMapping(forward)publicStringforward(){returnforward:index。html;}请求重定向RequestMapping(redirect)publicStringredirect(){returnredirect:index。html;}}结果显示
  可以看出转发的URL是不变的,重定向的URL是会变的
  如果在类上也添加路由映射会发现请求转发获取不到资源了后端代码展示ControllerRequestMapping(index)publicclassUserController{请求转发RequestMapping(forward)publicStringforward(){returnforward:index。html;}请求重定向RequestMapping(redirect)publicStringredirect(){returnredirect:index。html;}}结果展示
  此时转发的页面路径多了index,和资源没有在同一级目录下,导致资源获取的失败
  原文https:blog。csdn。netweixin46103589articledetails125430579

育儿功臣头号解忧馆小女儿是家里排行最小的孩子,又是我们夫妻四十多岁才生的孩子。加上她出生时家庭经济情况转好,使得她比她的姐姐哥哥更能随心所欲地得到她想要的东西。这种惯养无形……阿昔洛韦软膏的功效与作用用法价格说明书最近有一点皮肤病,之前家里买了阿昔洛韦软膏,老妈说可以用这个治疗。请问阿昔洛韦软膏的功效与作用有哪些?下面小编为你提供阿昔洛韦软膏说明书。产品介绍【通用名】阿昔洛韦软膏……在崇明这间工作室里,土布变得很潮在新河镇井亭村,有一家芦菲花工作室,以瀛洲井布为品牌,将崇明传统土布与现代元素完美结合,让手工土布制品呈现出鲜活的时尚气息。一走进芦菲花土布工作室,一件精致的土布旗袍便映……宇宙天体大爆炸发生了,威力大到什么程度?最近宇宙中发生了一场巨大的爆炸,与原子弹的力量相比是无法比拟的。这是恒星在距离地球19亿光年的她方爆炸,并观测和分析发射的光的结果。这种现象,称为加马射线爆发,于1967……用暖宝宝暖小腹好吗用暖宝宝暖肚子有什么好处到了秋冬季之后,温度开始急速下降,大家手里都少不了备上暖手宝,尤其是一些体质比较畏寒的朋友更是必不可少,通过将暖宝宝贴在身体的各个关节、小肚子、小腹等重要部位达到保暖的作用,那……端午节为什么要佩戴香囊?端午节香囊的做法我们知道端午节的习俗很多,比如吃粽子、赛龙舟、佩香囊。其实这些无不包含着深厚的文化底蕴。端午节为什么要佩戴香囊?端午节香囊的做法端午节为什么要佩戴香囊佩香囊传说香囊……猫咪不高兴的表现有哪些?主人应该怎么办发现家中爱猫不开心?失去活力又没有食慾,甚至还会咬自己的毛吗?宠物忧郁躁郁症可能的原因有相当多,主人必须一步步帮助猫咪,让宠物猫能活得更开心、快乐!动物的身体也会比较健康喔。快……科沃斯朵朵s怎么样?科沃斯朵朵s说明书科沃斯朵朵s很多人初听到还以为是啥玩具之灯的,这么萌的名称肯定很可爱,其实科沃斯朵朵s是一款智能扫地机器人,可以快速安静干净的帮你打扫家中的卫生,让你的爱人、亲人不用再每天辛苦……清明节可以洗衣服吗?清明节能不能洗衣服?清明节前后,都有很多需要注意的事情,特别是扫墓的时候。不少人困惑,清明节可以洗衣服吗?关于,清明节可以洗衣服吗?清明节能不能洗衣服?5号网小编来为您一一解答!清明节可以洗衣服吗……清明节要荡秋千吗?清明节为什么要荡秋千?清明节有不少传统习俗,很多人这一天都会踏青、祭祖、荡秋千。不少人困惑,清明节为什么要荡秋千呢?关于,清明节要荡秋千吗?清明节为什么要荡秋千?5号网小编来为您一一解答!清明节要荡……藿香正气液可以带上飞机吗?藿香正气液能预防中暑吗三伏天的高温天气需要人们注意预防防暑,而一些药物就有防暑功效。那么,藿香正气液可以带上飞机吗?藿香正气液能预防中暑吗?藿香正气液可以带上飞机吗要是液体就不能带上飞机,这是……藿香正气液什么时候喝最好?藿香正气液可以空腹喝吗藿香正气口服液是一种中成药,常用于夏季暑湿引起的感冒等症状。那么,藿香正气液什么时候喝最好?藿香正气液可以空腹喝吗?藿香正气液什么时候喝最好藿香正气口服液解表化湿,理气和……
半夜咳嗽是什么原因?半夜咳嗽如何快速止咳一般这种情况出现在宝宝身上比较多,宝宝半夜咳嗽对父母来说是相当难受的,那么半夜咳嗽的话到底是什么原因呢?半夜咳嗽的话如何快速止咳呢?下面来介绍下吧!半夜咳嗽是什么原因……2017年春节哪几天算加班?2017年春节加班怎么算?春节是一年中最重要的一个节日,是在外工作一年后家人团聚相处的日子。因此,假期也是最长的。但是有的公司春节期间可能会涉及到加班问题。那么,2017年几班是哪几天呢?加班工资怎么算……正能量励志语录,相信自己,阔步向前,精彩无限一、不要用别人对你的看法来评判你自己。记住:你就是你所想的。Dontjudgeyourselfbywhatothersthinkaboutyou。remember:……我患糖尿病47年,总结了6个可以有效降低血糖的方法,分享给大有些糖尿病患者血糖总是降不下来,问我该怎么办?我把我总结导致血糖升高的因素和处理方法毫无保留地告诉了他们,他们按照我的方法做,血糖都乖乖地降下来了。在此将我的经验与……美瞳戴反了会怎么样美瞳戴反了的感觉美瞳是我们平时的日常生活中非常常见的一种眼睛装饰产品,很多人为了美观而戴美瞳,但是美瞳是直接接触我们眼球的物品,要很注意,那么美瞳戴反了会怎么样?美瞳戴反了的感觉。美瞳戴反了会……喜欢旗袍的妈妈,这几款舒适优雅的印花真丝连衣裙,让你美美的真丝旗袍连衣裙,端然雅致。修身版型,塑造宽松轮廓,勾勒出时尚的风范。时尚旗袍领口,盘扣装饰,气质减龄。隐形拉链设计,真丝面料,复古印花,遮肉显瘦。侧开叉裙摆,清新印花设计,个性……宝宝可以用电蚊香吗?电蚊香对宝宝有害吗?现在防蚊的手段越来越多,电蚊香作为一种环保耐用方便的驱蚊产品,走进了我们的生活。宝宝可以用电蚊香吗?电蚊香对宝宝有害吗?宝宝可以用电蚊香吗电蚊香对宝宝有影响。……从月牙看健康状况如何从月牙看出你的体质?现在我们特别注意身体保养,很容易受到别人的影响,他人吃什么好,我们就吃什么,这样在盲目的情况下,很容易破坏身体平衡,那下面我们一起来看看从月牙来看出你自己的体质,然后在做具体的……烤瓷牙和全瓷牙有什么区别?烤瓷牙和全瓷牙的区别关于牙齿的美容,真的有太多不同的方式了,而且名字还差不过,有很多人会弄混全瓷牙和烤瓷牙的区别,小编觉得是要给你们普及一下知识点了,注意听讲吧。烤瓷牙和全瓷牙区别外观不同……OD体育盘点王者荣耀2021年最具有电竞影响力的职业选手OD体育:王者荣耀这款游戏作为全民游戏,可以说中国的青年以及青少年乃至中年人,90以上的人都玩儿过这个游戏,这个游戏可以说不仅弘扬中华文化的优良文化,也传承了大家对于文化的理解……北京仅2家!这条gai帮朝阳又捧回一项国家级奖项!被誉为北京时尚潮流地标首店收割机的三里屯太古里又捧回了一项国家级奖项日前,文化和旅游部公示首批国家级旅游休闲街区名单经评审,全国55条街区入……林内热水器怎么样?林内热水器好用吗?热水器,是每天大家洗澡,都会用到的家电。不少人困惑,林内热水器好用吗?关于,林内热水器怎么样?林内热水器好用吗?5号网小编来为您一一解答!林内热水器怎么样林内燃气热水器源……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网