范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从头到脚细致解说SPRINGMVC,走向spring大家庭的怀抱

  1.回顾mvc
  二阶段的封装代码中,问题
  使用springmvc,减少开发量,让上述的工作,给springmvc去做2.springmvc介绍
  首先,springmvc是spring中的一个模块,也是一个mvc设计思想的框架
  The Spring Web model-view-controller (MVC) framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for uploading files.
  springmvc设计核心,是DispatcherServlet,是用来接收和分发请求给具体的handler(类似二阶段封装中的Controller,是由程序员开发的),通过请求和handler之间的映射配置(类似mvc.xml),最后,通过视图解析器解析页面响应。支持文件上传3.springmvc框架搭建
  需求:浏览器输入请求地址 http://localHost:8080/teacher_springmvc/hello访问服务器,服务器响应hello.jsp给浏览器
  1)新建teacher_springmvc01
  2)导包
  核心包
  还需要拷贝之前spring框架中的jar包
  3)配置文件
  log4j.properties
  springmvc框架自己的配置文件,applicationContext-mvc.xml(名字不重要,也可以是springmvc.xml)
  配置文件直接拷贝之前spring的配置文件
  web.xml(是tomcat加载工程的唯一入口)
  给servlet加load标签,一般是servlet在第一次被访问的时候实例化,加了load标签,就是tomcat启动的时候就实例化。
  4)部署到tomcat中,启动tomcat
  报错:
  DispatcherServlet在实例化的时候,会默认去WEB/INF目录下找配置文件,配置文件的文件名为 web.xml中servlet配置的servlet-name + "-servlet.xml"
  拷贝applicationContext-mvc.xml到在WEB-INF下,并重命名为springmvc-servlet.xml
  重启服务器—》成功
  但是!!我们的配置文件,肯定不会直接放在WEB/INF下,而是放在src下,编译之后的目录是WEB/INF下的class目录
  这时,我们需要告诉DispatcherServlet,配置文件的路径+文件名,替换默认路径和文件名
  删除WEB/INF下的springmvc-serlvet.xml
  重启服务器
  --成功
  5)入门案例,HelloWorld
  浏览器输入请求地址 http://localHost:8080/teacher_springmvc/hello访问服务器,服务器响应hello.jsp给浏览器
  a. handler编写,用于处理/hello请求
  b.hello.jsp
  c. 请求地址和handler之间的映射
  重启,访问
  因为web.xml配置DispatcherServlet拦截的地址为 /*,所以不管是jsp还是/hello还是js,css的请求,会全部都到DispatcherServlet中。会404
  处理办法:将需要给DispatcherServlet拦截的请求加个标识,拦截.action结尾的请求
  浏览器请求地址:http://localHost:8080/teacher_springmvc/hello.action
  映射配置:
  重启,重新访问
  4.springmvc 注解模式
  teacher_springmvc02
  1)controller可以脱离springmvc的api
  2)配置文件中开启注解
  3)代码中使用注解
  5.执行流程
  1.tomcat启动的时候加载应用,解析web.xml
  需要在启动之后,实例化DispatcherServlet.
  DispatcherServlet实例化的时候,默认加载了一个配置文件DispatcherServlet.properties
  DispatcherServlet加载这个配置文件,主要的目的,就是实例化它的各种帮手。
  除了默认加载的配置文件,DispatcherServlet还加载了我们指定的配置文件
  先解析applicationContext-mvc.xml,
  如果有bean配置,那么实例化bean,然后拿bean的name属性作为key,实例作为value.
  如果有开启注解的标签,那么DispatcherServlet会扫面指定的包
  扫描指定包的时候,找@Controller和@RequestMapping注解
  @Controller注解,用来生成实例
  @RequestMapping用来映射请求地址和方法之间的映射
  如果还有其他的标签,会继续做相应的事。
  2.浏览器请求http://localHost:8080/teacher_springmvc/hello.action
  3.tomcat服务器接收到浏览器的请求,先拆分看请求的是 哪个应用,然后看请求地址有没有在web.xml中配置到。如果web.xml中没有配置拦截,那么就根据路径指向具体的资源(比如teacher_springmvc/index.jsp,那么tomcat会发现web.xml中没有要接收这个请求的,那么就从webRoot开始,找index.jsp响应给浏览器,没找到,404)
  但是,请求的是teacher_springmvc/hello.action ,web.xml中,有个servlet配置,接收*.action的请求,请求地址hello.action符合要求,那么tomcat就会把这个请求丢给DispatcherServlet
  4.DispatcherServlet拿到这个请求,会找处理器映射器帮忙,找是那个映射关系。
  找到映射关系,等于找到了哪个Controller处理这个请求
  继续找处理器适配器帮忙,调用具体的Controller中的具体方法
  5.DispatcherServlet拿到Controller层处理之后的返回值。
  又继续找视图解析器帮忙,解析响应指定的页面给浏览器6.@RequestMapping应用
  6.1方法上使用
  请求地址:
  http://localhost:8080/teacher_springmvc/hello.action
  6.2用在类上,作用类似namespace
  请求该类中每个方法,都需要带上namespace, namespace就是类上的RequestMapping指定的路径
  1+2组成的请求地址,在整个工程中不能重复
  6.3 @RequestMapping 默认支持get/post两种请求方式。
  那如果,我只要支持其中的一种
  显式的定义,支持post、get
  7.Controller层方法的返回值7.1 ModelAndView
  ModelAndView可以给跳转页面地址
  绝对路径,以 / 打头
  页面跳转是转发还是重定向?
  默认为转发
  那如果要重定向?页面地址前加上 redirect:
  ModelAndView除了可以放view视图(jsp),还可以放model(数据)
  7.2 String
  返回值String:为需要跳转的页面
  默认转发
  如果要使用重定向
  7.3 void
  方法没有返回值,在方法中,使用response直接给页面响应
  8.Controller层方法参数8.1 默认参数(Servlet API)
  HttpServletRequest, HttpServletResponse, HttpSession, ModelAndView ,ModelMap
  8.2 简单类型
  String,int之类
  形参的命名=前台页面控件的name属性值
  类型转换-》框架会做
  一般用于属性较少的添加和查询功能8.3 自定义对象
  提交参数的key需要和实体类属性名保持一致
  提交参数key: 如果是form表单,key就为form控件中的name属性
  如果是其他的提交方式,比如get, …action?key1=value1&key2=value2,那么,key1,key2都需要和实体类属性名一致
  8.4 包装类
  自定义对象中含有自定义对象
  Product中Company对象传参
  jsp页面,控件的name属性值,需要使用导航符。
  8.5数组
  checkbox类型
  参数使用String类型
  参数使用数组类型
  如果前台使用的checkbox,那么参数可以是String类型,也可以是数组类型,如果value为number类型,那么数组可以直接定义为int类型数组8.6 类型转换
  之前的参数中,有String—》int, 也有String—》double这些类型转换,springmvc框架中内置的。
  但是如果想要String Date, 比如产品的发行时间,通过req取出参数肯定是String类型,但是我们的实体类,或者说直接使用参数接收,那么框架不支持转换,需要自定义转换器
  1) 定义转换器
  2)将转换器注册到框架中
  3)mvc框架集成自定义的转换器
  需要使用到mvc打头的标签,要使用mvc中的标签,需要引入mvc的约束
  使用mvc标签,集成自定义转换器
  springmvc框架中,遇到StringDate类型,会自动调用自定义的转换器。
  如果已有的转换器,重新定义,比如String Integer ,那么,自定义的转换器会覆盖内置转换器
  9.乱码问题
  get/post
  POST
  使用springmvc中的字符集过滤器
  GET
  使用终极大招
  tomcat/conf/server.xml中指定url编码格式
  get方式提交,参数是直接跟在请求地址之后,请求地址是由tomcat解析的。让tomcat在解析的时候,使用我们指定的编码格式解析
  10.springmvc+spring+mybatis集成(dao+xml配置版本)
  teacher_ssm011)导包
  导入spring+mybatis最后一个版本的包
  至于springmvc,检查下是否含有spring-web和spring-webmvc这两个包,如果没有,重新导入。
  2)配置文件
  log4j.properties
  db.properties---》数据源配置,给spring引入使用
  sqlMapConfig.xml --------mybatis
  applicationContext.xml----------spring
  applicationContext-mvc.xml--------springmvc
  web.xml ------DispatcherServlet需要配置,spring中的实例也需要tomcat创建,所以,spring的入口也在web.xml中配置
  DispatcherServlet
  spring入口—》监听
  3)部署,启动
  未报错,但是不能证明框架集成成功4)案例
  查询所有的企业展示。
  1.建表
  insert数据…
  2)实体类
  Company.java
  3)CompanyDao接口,CompanyDaoImpl实现类,company.xml
  company.xml
  实现类
  4)sqlMapConfig.xml中注册配置文件
  5)CompanyService,接口,实现类
  6)Controller
  7)service,dao在applicationContext中的bean配置
  8)controller中的注解配置
  9)springmvc配置文件中,开启注解
  10)companyManager.jsp
  路径需要Controller中返回的路径一致
  a.拷贝资源目录
  --》
  b.复制companyManager.html到webRoot/pages/backend目录
  c.将html修改为jsp
  第一步先复制jsp文件内容到html
  第二步修改后缀
  第三步,修改所有的引用地址为绝对
  第四步:使用c标签解析comList
  11) 部署,启动
  12)浏览器访问地址
  11.springmvc+spring+mybatis+mapper代理+注解
  1)拷贝teacher_ssm01工程,代码结构调整
  2)company.xml中的namespace调整
  3)修改company.xml在sqlMapConfig.xml中的路径
  4)service使用注解
  5)在spring中配置mapper代理生成
  6)springmvc配置文件中,一定要打开注解
  如果这个扫描的包已经包含了Service,dao等等,那么spring配置文件中applicationContext.xml不需要再开启一次注解
  如果applicationContext-mvc.xml中的包只有com.njwb.controller
  那么,applicationContext.xml中需要重新开启注解,扫描service,dao …
  案例:
  添加企业
  1)添加企业ID的序列
  2)接口,company.xml提供添加
  3)service
  4)controller
  校验参数
  调用service添加数据
  跳转到列表页
  5)修改companyAdd.html
  a.修改companyManager.jsp中的跳转地址
  b.修改companyAdd.html为jsp文件
  c.修改添加页面的form提交地址,提交方式
  d.给需要提交到后台数据的控件添加name属性
  e.要取详情内容,使用隐藏域
  目前代码中的校验
  如果属性比较多,代码就会很多,并且,修改中也会有很多的重复代码,因为修改中也需要做校验,并且,校验一般和添加差不多
  并且,校验完成之后,目前是跳转到result.jsp
  但是从用户的角度来说,校验不通过,一般回到添加页面,并且,原始数据有回显,然后有相依的错误信息提示
  不使用校验框架也可以做到,不过,使用校验框架,编码更简单,提示信息也可以作为配置文件12.校验框架
  teacher_ssm04使用hibernate校验框架
  1)导包
  2)在mvc中配置校验器
  3)需要在mvc框架中启用校验器
  4)代码中使用
  在实体类中,使用注解标明这个属性的规则是什么样子的
  在Controller的方法中,需要告诉springmvc,形参Company company,需要使用校验框架做校验
  页面效果:
  将错误信息放到配置文件中
  数据回显
  校验框架,支持数据回填
  默认key为实体类类名,第一个字母小写。不需要显示的传值
  案例:
  如果就是要修改一下传值的key,使用
  并不是每种场景校验都一模一样
  比如:添加和修改。
  添加中,每个属性都需要校验
  修改: 不允许修改的属性,还需要校验么???
  假设:企业数据中,佣金不允许修改
  添加需要校验 企业名称、佣金、详情
  修改需要校验 企业名称、详情
  校验需要分场合,分场景
  把实体类属性中的校验分组校验分组
  1)首先需要定义两个空接口,作为两个标识
  2)给实体类中的规则分组
  3)Controller中使用分组校验
  校验注解:
  逻辑性校验校验框架做不了,比如,重名校验13.springmvc中使用ajax
  1)使用response响应
  2 ) 使用@ResponseBody注解响应
  使用该注解,表示,返回值不管是啥,直接响应给浏览器
  返回String
  返回Company
  让springmvc框架自动的将对象转换成json格式的字符串,需要导包
  代码:
  jsp:
  结果:
  14.springmvc上传
  1)jsp中的form表单处理和Servlet上传处理一致
  method="post",enctype需要处理
  2)Controller中使用mvc包中的类直接接收文件对象
  需求:给企业添加一个图片
  1)数据库添加字段
  img_url(上传路径), img_real_name(原始文件名)
  2)实体类添加属性
  3)需要修改的功能:
  企业添加,企业修改,企业列表页展示,企业详情也要展示
  4)企业添加:
  a.修改company.xml中的insert语句
  b.Controller添加方法中,参数,直接找框架要浏览器提交的文件对象
  c.需要使用文件对象,那么需要在mvc中配置文件解析器
  d.页面添加file控件
  e.form表单处理
  f.测试Controller中能不能拿到文件对象
  g.指定文件上传的路径
  h.文件上传地址,使用配置形式;文件重命名,使用当前时间的时分秒毫秒形式15.列表页的table中省略显示详情
  页面效果:
  解决方式
  Company实体类中,提供一个get方法,获取这个String
  页面使用el取值
  16.文件下载
  1)页面请求地址
  比如
  2)需要有一个Controller处理下载请求
  a.Servlet通用下载,使用response响应文件流
  3)SpringMVC下载
  16.Springmvc中的异常处理
  teacher_ssm06
  1.定义异常处理器
  2.注册自定义异常处理器
  17. Spring中的定时任务—SpringJob
  1)导包
  2)定义定时任务
  3)配置定时任务
  1.定时任务bean
  2.定时任务触发器(间隔时间)
  3.spring定时任务配置所有的触发器
  到点之后,不管上一个定时任务是否结束,
  1)到点仍然开启新一轮定时任务,允许同一个定时任务有多个线程存在
  2)到点之后,等待上一个定时任务结束,然后再开启新一轮定时任务
  如果涉及到数据库数据更新,那么定时任务,不应该是可以多线程。
  实现接口就可以了,不需要编写额外的代码

他在恒大踢了多年替补,如今终于熬出头了,新赛季将锁定主力日前,广州队主帅刘智宇接受了媒体专访,在这次专访中他透露了球队重大决定。刘智宇表示广州队新赛季队长人选已确定,分别是韦世豪严鼎皓刘世博,其中韦世豪是第一队长。韦世豪出任广州队长让很乒坛往事13岁马琳背井离乡去广东发展,8岁王皓初次遇见刘国梁1992年,乒乓球历史上的第一位大满贯得主诞生,但他却不是中国人。年轻的球迷们很难想象,号称天下无敌的中国乒乓球队,也曾有过那么憋屈的一段时间从1988年开始,国乒就连续在世界大赛原神2命钟离入选!3大低性价比关键命座,微氪玩家需规避前言原神想要提升角色战力,最简单的方式就是进行角色命座和专武的抽取,对于月卡玩家来说一个大版本最多最多也只能抽出两个金光,除非是氪金玩家,否则一般不考虑角色的命座,而不少玩家为了某人民日报发布汉字笔顺的规则写法,请老师带领学生学习!(附电子打印版)好多孩子写字会有倒笔顺的现象,孩子不管是刚学写字,还是已经读到了三四五年级经常写字笔顺还是会错。有时写一个字是不是也要思考一小会儿?有时,写出来的字连笔顺都不一定正确。下面是规定的耍大牌和庾澄庆同居被资本抛弃,吴莫愁的谣言一个比一个离谱我其实是最后一个被通知参加乘风破浪的根本来不及准备的吴莫愁,还是贡献了一场精彩绝伦的表演。齐刘海大红唇歌声高亢而魔性,灯光一照,吴莫愁来势汹汹,魅力四射,让Z姐梦回2012年的好声王心凌很懂怎么穿衣显嫩,39岁用浅色系来减龄,看着清爽显白时尚究竟指的是什么,每个人心中的答案都不一样。回首时尚圈这几年的趋势走向,很多单品都被赋予了时尚的标签。实际上,时尚并不是狭义的存在,而且只要我们懂得在穿搭中随机应变,了解什么着装武汉队幸亏没留下他,如今转会新东家成刺头,因耍大牌被禁赛6场日前,武汉队功勋中锋安德森在离队后回到了J联赛。安德森回到了J联赛之后,并没有迎来职业生涯巅峰。他在效力横滨水手时成为了球队刺头,横滨水手一场联赛中,安德森因为吐口水被主裁直接红牌扎尼奥洛破门罗马10夺首届欧协联冠军穆里尼奥包揽欧战大满贯北京时间5月26日凌晨3点,历史上首届欧洲协会联赛决赛在阿尔巴尼亚首都地拉那的国家体育场进行,意甲球队罗马对阵荷兰球队费耶诺德。上半场,姆希塔良受伤离场,扎尼奥洛打破僵局下半场,双勇士为输G4太努力,科尔自毁英明,老板和总经理齐上阵施压果不其然,勇士在大多数人的猜想中还是输掉了第四场比赛,接下来将重新回到自己的主场,如此一来,勇士管理层最少也要收入3000万美金门票钱,球迷们也调侃勇士老板这回有钱交下赛季的奢侈税NBA快讯!天赋侧翼为火箭试训塔图姆反超领跑MVP马刺计划破产NBA虽说到了赛季的末端,但是精彩依旧很多,而选秀大会应该是很多球迷关注的焦点,毕竟这是一支球队翻身的重要途径,比如现在的独行侠,他们如果没有东契奇,别说西部决赛,就是季后赛也很难勇士坏消息!波特因伤无缘G4,4球员将缺席,库里状态火热北京时间5月25日,NBA西部决赛G4,独行侠主场对阵勇士,前三场比赛打完独行侠03落后。随着勇士上一场拿下胜利,系列赛的悬念已经没了,在NBA历史上还没有球队完成过03落后的大逆
大满贯陈梦4比3战胜王曼昱,夺得女单冠军,获得杭州亚运单打资格北京时间3月20日消息,2022年世界职业乒乓球大联盟(WTT)大满贯新加坡站进入到最后一天。女单决赛,奥运冠军陈梦局分3比1后顶住对手冲击,最终以4比3击败王曼昱,夺得冠军,第一冯巩大战白热化,骂国足,你也配?北京时间3月20日,冯巩大战事件已经白热化,闹得是沸沸扬扬,涉及的人群早已超出了足球本身,各行各业都涉及到了,可谓是愈演愈烈。事情起因是在两会期间,巩汉林建议对劳动模范表彰制度进行击溃湖人,疯狂三月场均21分!被质疑水货,天才榜眼终于完成打脸杰伦格林看起来已经适应了比赛强度,正在逐渐释放天赋。这小子在使用率不如伍德,波特的情况下,却能在三月份拿到全队最高的21。1分,且作为一名菜鸟后卫,投篮命中率高达51。9,数据与效两队达成协议,威少忍无可忍发飙,西蒙斯即将回归,欧文正式表态根据媒体的相关报道,很多NBA球队在最近都进行了一些调整,比如勇士队由于出现了严重的伤病,库里没有办法在比赛中上场,因此他们召回了正在发展联盟比赛的怀斯曼,这件事情引起了很多勇士球原来象棋中的士是这个意思大家都玩过象棋吧,你知道象棋里面的士的真正含义吗?将或帅旁边有俩士就是领导身边的谋士,是专门出谋划策的人。我们中国古代为什么叫士人呢?其实也就是饱读诗书,考取功名,走仕途之路。我们从没打过替补,欧文连续582场首发仅排第五,前四位是哪些大神?NBA球员想要立足联盟不容易,整个职业生涯全部首发出战更是难上加难,强如乔丹,科比以及詹姆斯都曾打过替补,不过在现役球员中,还真有一位球星连续首发出战500场以上,至今仍没有打过替乔婷女排中隐藏的富二代!一对长腿吸睛,家住四合院估值上亿女子排队曾为中国体坛贡献了许多美女,张常宁薛明惠若琪赵蕊蕊等一直是广大球迷们所喜爱的对象,她们不仅为国出战奥运,排球技术十分高超而且容貌清丽,身材高挑,拥有一众粉丝。乔婷也是球迷们NBA最矮五名球员榜首只有1米6,曾防守篮球之神乔丹24秒违例大家好!我是体坛篮球快递小哥,大家要养成先赞后看的好习惯哦!NBA的球星可能大家都认识,但是NBA最矮的球员又有谁关注呢?大家又认识几个呢?让小编带大家聊聊NBA中最矮的五名球员!13年体坛皇后刘璇下嫁穷小子,直言不后悔,后生二胎儿女双全2014年7月27日,奥运冠军刘璇的老公王弢在网上晒出了一张自己与刘璇11年前的情侣照,二人扮着鬼脸,还穿着同款T恤。王弢发文自嘲说自己是一个穷小子,那时候刚工作不到1年,一个月的李宁不争气的儿子半年亏7亿卖商标求生,曾领先安踏特步目前北京冬奥会已经结束,安踏李宁匹克等国产运动品牌备受关注,可同样参与其中的Kappa,却很少被人提及。01李宁不争气的儿子KappaKappa的来头可并不小,因为logo设计独特郎平前夫白帆为照顾女儿单身15年,60岁再婚生子,郎平送去祝福文贵圈毒姐我们需要你,祖国需要你。1995年,袁伟民对远在美国的郎平说了这样一句话。几乎没有多加考虑,郎平就做出了回国的决定,与此同时,她递了一纸离婚协议书。多年打拼在美国换来的优