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

郑州注册公司网站微信 网站建设

郑州注册公司网站,微信 网站建设,杭州市网站建设公司,北京 公司网站开发1. RequestMapping 定义请求规则 1.1 指定模块名称 通过RequestMapping 注解可以定义处理器对于请求的映射规则。该注解可以注解在方 法上#xff0c;也可以注解在类上#xff0c;但意义是不同的。value 属性值常以“/”开始。RequestMapping 的 value 属性用于定义所匹配请…1. RequestMapping 定义请求规则 1.1 指定模块名称 通过RequestMapping 注解可以定义处理器对于请求的映射规则。该注解可以注解在方 法上也可以注解在类上但意义是不同的。value 属性值常以“/”开始。RequestMapping 的 value 属性用于定义所匹配请求的 URI。但对于注解在方法上与类 上其 value 属性所指定的 URI意义是不同的。一个Controller 所注解的类中可以定义多个处理器方法。当然不同的处理器方法 所匹配的 URI 是不同的。这些不同的 URI 被指定在注解于方法之上的RequestMapping 的 value 属性中。但若这些请求具有相同的 URI 部分则这些相同的 URI可以被抽取到注解在 类之上的RequestMapping 的 value 属性中。此时的这个 URI 表示模块的名称。URI 的请求 是相对于 Web 的根目录。换个角度说要访问处理器的指定方法必须要在方法指定 URI 之前加上处理器类前定 义的模块名称1.2 对请求提交方式的定义 对于RequestMapping其有一个属性 method用于对被注解方法所处理请求的提交 方式进行限制即只有满足该 method 属性指定的提交方式的请求才会执行该被注解方法。Method 属性的取值为 RequestMethod 枚举常量。常用的为 RequestMethod.GET 与 RequestMethod.POST分别表示提交方式的匹配规则为 GET 与 POST 提交。2. 处理器方法的参数 处理器方法可以包含以下四类参数这些参数会在系统调用时由系统自动赋值即程序 员可在方法内直接使用。 ➢ HttpServletRequest ➢ HttpServletResponse ➢ HttpSession ➢ 请求中所携带的请求参数2.1 逐个参数接收 只要保证请求参数名与该请求处理方法的参数名相同即可。2.2 请求参数中乱码问题 对于前面所接收的请求参数若含有中文则会出现中文乱码问题。Spring 对于请求参 数中的中文乱码问题给出了专门的字符集过滤器spring-web-5.2.5.RELEASE.jar 的 org.springframework.web.filter 包下的 CharacterEncodingFilter 类。2.2.1 解决方案 在 web.xml 中注册字符集过滤器即可解决 Spring 的请求参数的中文乱码问题。不过 最好将该过滤器注册在其它过滤器之前。因为过滤器的执行是按照其注册顺序进行的。filterfilter-namecharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-paraminit-param !-- 强制request使用encoding的编码--param-nameforeRequestEncoding/param-nameparam-valuetrue/param-value/init-paraminit-param !-- 强制response使用encoding的编码--param-nameforeResponseEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-namecharacterEncodingFilter/filter-nameurl-pattern*.do/url-pattern/filter-mapping2.3 校正请求参数名RequestParam 所谓校正请求参数名是指若请求 URL 所携带的参数名称与处理方法中指定的参数名 不相同时则需在处理方法参数前添加一个注解RequestParam(“请求参数名”)指定请 求 URL 所携带参数的名称。该注解是对处理器方法参数进行修饰的。value 属性指定请求参 数的名称。 RequestParam属性 1.value,请求中参数 2.required,boolean类型的默认是truetrue表示请求中必须有参数false可以没有此参数2.4 对象参数接收 将处理器方法的参数定义为一个对象只要保证请求参数名与这个对象的属性同名即可。3. 处理器方法的返回值 使用Controller 注解的处理器的处理器方法其返回值常用的有四种类型 ➢ 第一种ModelAndView ➢ 第二种String ➢ 第三种无返回值 void ➢ 第四种返回自定义类型对象 根据不同的情况使用不同的返回值。3.1 返回 ModelAndView 若处理器方法处理完后需要跳转到其它资源且又要在跳转的资源间传递数据此时 处理器方法返回 ModelAndView 比较好。当然若要返回 ModelAndView则处理器方法中 需要定义 ModelAndView 对象。在使用时若该处理器方法只是进行跳转而不传递数据或只是传递数据而并不向任何 资源跳转如对页面的 Ajax 异步响应此时若返回 ModelAndView则将总是有一部分多 余要么 Model 多余要么 View 多余。即此时返回 ModelAndView 将不合适。3.2 返回String 处理器方法返回的字符串可以指定逻辑视图名通过视图解析器解析可以将其转换为物 理视图地址返回内部资源逻辑视图名若要跳转的资源为内部资源则视图解析器可以使用 InternalResourceViewResolver 内部 资源视图解析器。此时处理器方法返回的字符串就是要跳转页面的文件名去掉文件扩展名后 的部分。这个字符串与视图解析器中的 prefix、suffix 相结合即可形成要访问的 URI。3.3 返回对象Object 处理器方法也可以返回 Object 对象。这个 Object 可以是 IntegerString自定义对象 MapList 等。但返回的对象不是作为逻辑视图出现的而是作为直接在页面显示的数据出 现的。返回对象需要使用ResponseBody 注解将转换后的 JSON 数据放入到响应体中。3.3.1 环境搭建 A , maven pom.xml 由于返回 Object 数据一般都是将数据转化为了 JSON 对象后传递给浏览器页面的。而 这个由 Object 转换为 JSON是由 Jackson 工具完成的。所以需要导入 Jackson 的相关 Jar 包。dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.9.0/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.0/version/dependencyB,声明注解驱动将 Object 数据转化为 JSON 数据需要由消息转换器 HttpMessageConverter 完成。而转 换器的开启需要由mvc:annotation-driven/来完成。SpringMVC 使用消息转换器实现请求数据和对象处理器方法返回对象和响应输出之间 的自动转换当 Spring 容器进行初始化过程中在mvc:annotation-driven/处创建注解驱动时默认 创建了七个 HttpMessageConverter 对象。也就是说我们注册mvc:annotation-driven/就 是为了让容器为我们创建 HttpMessageConverter 对象。 HttpMessageConverter 接口 : HttpMessageConverterT是 Spring3.0 新添加的一个接口 负责将请求信息转换为一个对象类型为 T将对象类型为 T输出为响应信息HttpMessageConverterT接口定义的方法boolean canRead(Class? clazz,MediaType mediaType): 指定转换器可以读取的对象类型即 转 换 器 是 否 可 将 请 求 信 息 转 换 为 clazz 类 型 的 对 象 同 时 指 定 支 持 MIME 类 型 (text/html,applaiction/json 等)boolean canWrite(Class? clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对 象写到响应流中响应流支持的媒体类型在 MediaType 中定义。 LIstMediaType getSupportMediaTypes()该转换器支持的媒体类 型。T read(Class? extends T clazz,HttpInputMessage inputMessage)将请求信息流转换为 T 类型 的对象。void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将 T 类型的对象写 到响应流中同时指定相应的媒体类型为 contentType加入注解驱动mvc:annotation-driven/后适配器类的 messageConverters 属性值 ByteArrayHttpMessageConverter 负责读取二进制格式的数据和写出二进制格 式的数据 StringHttpMessageConverter 负责读取字符串格式的数据和写出字符串格 式的数据 ResourceHttpMessageConverter 负责读取资源文件和写出资源文件数据 SourceHttpMessageConverter 能够读 / 写 来 自 HTTP 的 请 求 与 响 应 的 javax.xml.transform.Source ,支持 DOMSource, SAXSource, 和 StreamSource 的 XML 格式 AllEncompassingFormHttpMessageConverter 负责处理表单(form)数据 Jaxb2RootElementHttpMessageConverter 使用 JAXB 负责读取和写入 xml 标签格式的数 据 MappingJackson2HttpMessageConverter 负责读取和写入 json 格式的数据。利用 Jackson 的 ObjectMapper 读写 json 数据操作 Object 类型数据可读取 application/json响 应媒体类型为 application/json大白话加入 mvc:annotation-driven/注解之后会创建HttpMessageConverter的七个实现类接着选择合适的实现类将请求信息转化为指定的对象响应的时候会选择合适的实现类将指定类型的对象写入到响应流中同时指定相应的媒体类型 3.3.2 返回自定义类型对象 返回自定义类型对象时不能以对象的形式直接返回给客户端浏览器而是将对象转换 为 JSON 格式的数据发送给浏览器的。由于转换器底层使用了Jackson转换方式将对象转换为JSON数据所以需要导入Jackson 的相关 Jar 包。1.定义数据类 package com.hkd.springmvc.bean;public class Student {private String name;private Integer age;public Student() {}public Student(String name, Integer age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };} } 2.修改处理器类 RequestMapping(value /returnStudent.do)ResponseBodypublic Student ReturnStudent(String name,Integer age){Student student new Student();student.setName(name);student.setAge(age);return student;}3.修改index页面 % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle请求页/titlescript typetext/javascript srcjs/jquery-1.12.4.js/scriptscript typetext/javascript$(function(){$(#myButton).click(function (){$.ajax({url:returnStudent.do,data:{name:张三,age:20},type:post,dataType:json,success:function (resp){alert(resp.name resp.age)}})})})/script /head body pajax请求/p input idmyButton typebutton value发送ajax请求/ /body /html 发送ajax请求结果 3.3.3 返回List集合 1.修改处理器类 RequestMapping(value /returnList.do)ResponseBodypublic ListStudent ReturnList(){Student student1 new Student(tom,11);Student student2 new Student(tim,18);ListStudent students new ArrayList();students.add(student1);students.add(student2);return students;}2.修改index.jsp %--Created by IntelliJ IDEA.User: chuqinDate: 2023/8/30Time: 17:33To change this template use File | Settings | File Templates. --% % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle请求页/titlescript typetext/javascript srcjs/jquery-1.12.4.js/scriptscript typetext/javascript$(function(){$(#myButton).click(function (){$.ajax({// url:returnStudent.do,url:returnList.do,success:function (data){// alert(resp.name resp.age)$.each(data,function(i,n){alert(n.name n.age)})}})})})/script /head body pajax请求/p input idmyButton typebutton value发送ajax请求/ /body /html 执行结果略 3.3.4 返回字符串对象 若要返回非中文字符串将前面返回数值型数据的返回值直接修改为字符串即可。但若 返 回 的 字 符 串 中 带 有 中 文 字 符 则 接 收 方 页 面 将 会 出 现 乱 码 。 此 时 需 要 使 用 RequestMapping 的 produces 属性指定字符集。 ***利用produces属性将返回值类型改为文本类型不然会出现乱码问题因为执行过程中不走web.xml文件中的过滤器 produces产品结果即该属性用于设置输出结果类型。 responseBody标签作用(如果没有该标签就是返回String只能实现跳转功能)response.setContentType(application/json;charsetutf-8);PrintWriter pw response.getWriter();pw.println(json);1.修改处理器类 RequestMapping(value /returnString.do,produces text/plain;charsetutf-8)ResponseBodypublic String ReturnString(){return 我是传过来的字符串;}2.修改index.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle请求页/titlescript typetext/javascript srcjs/jquery-1.12.4.js/scriptscript typetext/javascript$(function(){$(#myButton).click(function (){$.ajax({// url:returnStudent.do,url:returnString.do,success:function (data){alert(data)// $.each(data,function(i,n){// alert(n.name n.age)// })}})})})/script /head body pajax请求/p input idmyButton typebutton value发送ajax请求/ /body /html 3.执行结果
http://www.yutouwan.com/news/434941/

相关文章:

  • 网站快速过备案海口网站建设设计
  • 怀柔谁会网站开发百度网盘 wordpress
  • 学校网站建设的必要性wordpress 修改代码
  • 长基建站矿产网站开发
  • 六盘水遵义网站建设怎么做苏州企业网站建设设计
  • 怎么做公司的宣传网站建设银行融信通网站
  • 能不能同行网站做站长统计成都哪些公司做网站好
  • 电商网站的程序有哪些anew wordpress
  • 网站导航仿站最新一键自助建站程序源码
  • 推广展示类网站海洋高端的专业做网站
  • 怎么做网站内部链接5台电脑做视频网站服务器
  • 好的响应式网站有哪些专业放心的企业展厅设计
  • 怎么免费做网站推广页面制作多少钱
  • 网站地图写法个人怎么制作公众号
  • 妇幼网站建设ppt简历在线制作免费导出
  • 做网站 点击跳转产品怎么做推广和宣传
  • 可以做游戏的网站有哪些方面安康免费做网站
  • 上海网站推广个人网站酷站赏析
  • 呼市建设官方网站湖南企业名录大全
  • 高端大气上档次的网站多种郑州网站建设
  • 如何在微信平台做购买网站c2c网站怎么做
  • 做网站的规范网站开发成本预算价目表
  • 建立个人网站的目的长沙网络工程学院
  • wordpress建好站了打不开首页亳州网站网站建设
  • 做百科需要用什么网站做参考做网站买域名就行了吗
  • 腾云网站建设设计师 推荐 网站
  • wordpress设置站点地址网站建设推广和网络推广
  • 怎么让网站快速被收录网页设计师培训宣传语
  • 开发公司调研汇报材料怎么写成都seo公司排名
  • 网站改版需求说明潍城营销型网站建设