| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringMVCSSM(黑马学习) -> 正文阅读 |
|
[Java知识库]SpringMVCSSM(黑马学习) |
之前web学习的Servlet之间有共有行为,和私有行为。 我们要抽取共有行为。只写很小一部分的私有行为。 1.导入SpringMVC的包 2.配置Servlet 3.编写Controller 4.将Controller使用注解配置到Spring容器中。 5.配置spirng-mvc.xml文件,配置组件扫描(扫描注解。) 1.SpirngMVC快速入门1.导入坐标,保证版本一致。 spring-context,spring-web,spring-webmvc这些版本都要一致
?2.web.xml里配置前端核心控制器 DispatcherServlet 这里,每次请求都走这个共有servlet进行共有操作。
? ?3.整一个Controller页面。、 加了@RequestMapping注解,可以在项目路径后输入quick,访问到整个方法。 4.整一个spring-mvc.xml 加上context空间。 在web.xml,里告诉spring-mvc.xml的路径。
访问路径,图3煳了的是DispatcherServlet。 2.SpringMVC的组件解析(底层实现)。? 2.1 springMVC注解解析。2.1.1 requestMapping使用method属性后设成post,那么请求quick,就必须得post。 ? ?如果类外面又加一层@RequestMapping,那么地址前得加? ?/user 这样知道是user模块的controller里的方法。 启动之后,就会访问user下的success.jsp,文件。但user下面没有 所以改成。这样就去webapp下找这个文件。 ? param属性。 ?url后面必须加参数。 ?2.1.2 springMVC的组件扫描springMVC只扫描controller层。各扫各的。 只扫com.itheima,下的controller注解。 expresssion,是@controller注解的全包名。
也可以这么写 ?2.2?mvc命名空间解析?2.3 SpringMVC XML配置解析视图解析器有自带的。 ?forward转发,默认的,可以去掉。跳转页面,浏览器里地址可以不变。 这里如果想重定向,加redirect。 ? 如果把jsp文件都放在一个jsp文件下。那么,每次我们还要加个? ?/jsp ? ?我们可以自己配置内部资源解析器。在spring-mvc.xml中
这样我们可以不用写前缀和后缀。 ?写成这样即可。 3.数据响应?3.1 页面跳转相较于web,不用getDisparcher。 3.1.1返回字符串形式?重定向,不能有web-inf,因为这个文件夹受到保护。 3.1.2 返回ModelAndView对象。这里访问quick2,就可以访问success页面。 setViewName,也延续了前后缀的设置。 设置了键值对,可以在jsp界面直接获取。 方法1: ? 方法2: 这种方式也可以,SpringMvc在解析这个方法的时候发现这个参数,需要框架提供, SpringMvc就提供一个ModelAndView对象,注入了。 方法3: model和view拆开了。springmvc,传入一个model对象。 方法4: 3.2 回写数据(有json的回写)3.2.1直接返回字符串 ?方法1(有点笨了解一下就行): 方法2(重点掌握): 加@ResponseBody,不然return会被当成视图跳转。 ? ? 方法3:返回Json字符串。 先导入3个包
给对象写转成json格式字符串返回。 ? 转换的工具有没有被springMVC封装呢? 有,需要我们配置一下,告诉它。 3.2.2 返回对象或集合期望SpringMVC给转成json格式字符串。? 我们返回的这个对象发给这个适配器。但它没有转换的功能。 我们配置这个的时候,对它内部的,这个方法参数进行覆盖,告诉它用json转换。内部要的list集合数据,里面装的是bean对象。我们给它注入参数。 然后在spring-mvc.xml里配置。
然后我们的user就被解析成了json。 3.2.3??返回对象或集合(升级版)3.2.2中的配置比较繁琐,用这个。 ? 这里需要mvc的命名空间。 xmlns:mvc="http://www.springframework.org/schema/mvc" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 3.3 获取客户端请求数据3.3.1获得基本类型参数controller中方法的参数名称和请求参数的name一致,参数值会自动映射匹配。 3.3.2 获得pojo类型参数spirngMVC自动把user的属性值,封到对象里。 方法参数写对象就行。? 3.3.3 获得数组类型参数3.3.4 静态资源的访问我们在前面用了这个js文件,在项目里。有这个文件,我们启动的时候却报错。 ? 抓个包看看,一共3个请求。 ?原因:前端控制器的配置。缺省。 经过DispacherServlet,帮助我们匹配。 把js文件,当成@RequestMapping的value进行匹配。所以就匹配不上。 解决办法: 方法1: 方法2:? 3.3.5?获得集合类型参数对前端传来的json对象。 在前台用userList收集user对象,挨个push。 然后把userList转换成json发给url。即我们要调用的方法。 ? ?这里用${page.Context.request.contextPath}是JSP取得绝对路径的方法. 比如我的项目名称是demo1在浏览器中输入为http://localhost:8080/demo1/a.jsp ${pageContext.request.contextPath}或<%=request.getContextPath()%>取出来的就是/demo1。 3.3.6 请求数据乱码问题问题: ? ?解决: 在web.xml里 。配置上,编码过滤器。 3.3.7 参数绑定的注解比如说前台传的参数key为name,后台的业务方法的参数为username。 required为true的时候,如果没提交过来name对应的参数,那就会404 bad request。 required为false的时候,如果没提交过来name对应的参数,会赋一个null,但不会报错。 defaultValue值设为 itcast字符串时,如果没提交过来name对应的参数,默认用itcast字符串赋值。 3.3.8 获得Restful风格的参数用一个占位符{name},解析出url里的值。然后用@PathVariable注解解析这个路径,把值传给value。 {name}括号里的name,与value的值必须对应。 ? 3.3.9 自定义类型转换器。spring默认的参数类型转换器。 客户端那边传来的字符串数据"13"?,可以转成int型,13,进行参数设置。(MVC框架自动转化) 传过来的键值对,都是字符串,这里进行了参数转换。 、 但有的数据,不能自动转换类型,这个时候就需要,自定义转换器。 用2018-12-21,这种格式就错。? ?自定义转换器的开发步骤: 步骤1: 详解:这里指定了日期的格式。 ?步骤2: FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似? 注入转换器。 ? 步骤3: ?然后就解析出来日期了。 3.4 获取Servlet相关API(获取请求数据)比如我们方法中想要这三个参数,MVC框架会帮我们? 可以看包名,可以发现这三个对象是tomcat,帮助原生产生的。 ? 3.5 获取HTTP协议数据(获取请求参数)3.5.1? 获得请求头required为true的时候,如果没有携带请求头,那就会404 bad request。 required为false的时候,如果没有携带请求头,会赋一个null,但不会报错。 ? 3.5.2 获得cookie? 3.6 文件上传(获取请求参数)点提交就提交过去了。 ? ?怎么接受呢? 3.6.1 文件上传原理这些正文内容都在HTTP,请求体内。 request的getXXX方法时,获得的是url编码方式的表单提交。正文里是键值对,下图红色字体。 ? 现在用的是多部份表单形式,所以这些API都失效。数据对应。 ? 3.6.2 单文件上传步骤导入这俩依赖,用来解析正文数据。 在Spring-mvc配置文件里,上传解析器。 文件名和方法里对上,Spring会把这个文件封装成对象。? ? ? ? ? ? 然后接收,保存。在c盘,一般保存在服务器或别的网站。 保存成功。? ? 3.3.6 多文件上传? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:55:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |