Rumah Java javaTutorial spring之消息转换器的实例代码

spring之消息转换器的实例代码

Jul 19, 2017 pm 04:48 PM
maklumat penukar

//domain

package com.crazy.goods.tools;/**
 * 0755-351512
 * @author Administrator
 * */public class Phone {private String qno;private String number;public String getQno() {return qno;
    }public void setQno(String qno) {this.qno = qno;
    }public String getNumber() {return number;
    }public void setNumber(String number) {this.number = number;
    }
    
}
Salin selepas log masuk

//消息转换器  要实现一个抽象类AbstractHttpMessageConverter

package com.crazy.goods.tools;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;public class MyMessageConvertor extends AbstractHttpMessageConverter<Phone> {/** * 将请求头数据转换成Phone     */
    @Overrideprotected Phone readInternal(Class<? extends Phone> arg0,
            HttpInputMessage msg) throws IOException,
            HttpMessageNotReadableException {//参数必须使用post提交必须在body中InputStream is=msg.getBody();
        BufferedReader br=new BufferedReader(new InputStreamReader(is));
        String param=br.readLine();
        String phone=param.split("=")[1];
        Phone phoneObj=new Phone();
        phoneObj.setQno(phone.split("-")[0]);
        phoneObj.setNumber(phone.split("-")[1]);return phoneObj;
    }/** * 当前的转换器支持转换的类     */@Overrideprotected boolean supports(Class<?> arg0) {if(arg0==Phone.class){return true;
        }return false;
    }/** * 用于将返回的对象转换成字符串显示在网页     */@Overrideprotected void writeInternal(Phone phone, HttpOutputMessage arg1)throws IOException, HttpMessageNotWritableException {
        String p=phone.getQno()+"-"+phone.getNumber();
        arg1.getBody().write(p.getBytes("UTF-8"));
    }

}
Salin selepas log masuk

//springmvc.xml 要配置bean:消息转换器,只有post提交方式才会被转换器拦截

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/context http://www.springframework.org/schema/tx http://www.springframework.org/schema/aop http://www.springframework.org/schema/mvc ">
    <!--springmvc只能扫描控制层  -->
    <context:component-scan base-package="com.crazy.goods">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
    
    <!--消息转换器 必须使用post提交   -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="com.crazy.goods.tools.MyMessageConvertor">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                          <value>application/x-www-form-urlencoded</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
</beans>
Salin selepas log masuk

servlet测试

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

package com.crazy.goods.servlet;

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

import java.io.IOException;

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

import javax.servlet.ServletException;<br>import javax.servlet.annotation.WebServlet;<br>import javax.servlet.http.HttpServlet;<br>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

import org.springframework.stereotype.Controller;<br>import org.springframework.web.bind.annotation.PathVariable;<br>import org.springframework.web.bind.annotation.RequestBody;<br>import org.springframework.web.bind.annotation.RequestMapping;<br>import org.springframework.web.bind.annotation.RequestMethod;<br>import org.springframework.web.bind.annotation.ResponseBody;

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

import com.crazy.goods.tools.Phone;

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

/**<br> * @author Administrator<br> * 创建时间:2017年7月1日下午3:11:27<br> */<br>@Controller<br>public class ReservePageServelt  {

<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

// /**<br>// * forward:转发<br>// * redirect:重定向<br>// * @param req<br>// * @param resp<br>// * @return<br>// * @throws ServletException<br>// * @throws IOException<br>// */<br>// @RequestMapping(value="/add",method={RequestMethod.GET})<br>// public String doGet(HttpServletRequest req, HttpServletResponse resp/*,@PathVariable("testid") String testid*/) throws ServletException, IOException {<br>// req.getRequestDispatcher("/reversegood.jsp").forward(req, resp);<br>// return "/reversegood.jsp";<br>// resp.getWriter().print(testid);<br>// }<br><br><br> //消息转换器思路,<br><br> //原理就是将请求体或者请求头的数据转换为action方法的参数,同时将方法的返回值的内容转换为响应头<br> //当url路径访问过来时,看到使用了@RequestBody注解,这个注解标识这个类要被消息转换器处理,就会springmvcxml文件中读到消息转换器,然后进入supports方法<br> //判断这个类是否被指定的转换器支持,如果支持,就调用readInternal方法,进行切割,然后将值传递到对象中,处理完成为对象之后,就会调用writeInternal转换为响应头<br> @RequestMapping(value="/add")<br> @ResponseBody<br> public Phone messageConvertor( @RequestBody Phone phone,HttpServletResponse response) {<br> System.out.println(phone.getQno()+phone.getNumber());<br> return phone;<br><br> }<br><br>}

 <br>
Salin selepas log masuk

 

总结:消息转换器的原理就是,自定义将请求体的数据转换为形参(对象),然后将方法的返回值内容转换为响应头

步骤:

当url路径访问过来时,看到使用了@RequestBody注解,这个注解标识这个类要被消息转换器处理,就会springmvcxml文件中读到消息转换器,然后进入supports方法<br>判断这个类是否被指定的转换器支持,如果支持,就调用readInternal方法,进行切割,然后将值传递到对象中.

处理完成为对象之后,就会调用writeInternal转换为响应头

Atas ialah kandungan terperinci spring之消息转换器的实例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang dimaksudkan apabila mesej telah dihantar tetapi ditolak oleh pihak lain? Apakah yang dimaksudkan apabila mesej telah dihantar tetapi ditolak oleh pihak lain? Mar 07, 2024 pm 03:59 PM

Mesej telah dihantar tetapi ditolak oleh pihak lain Ini bermakna maklumat yang dihantar telah berjaya dihantar daripada peranti, tetapi atas sebab tertentu, pihak lain tidak menerima mesej tersebut. Secara lebih khusus, ini biasanya kerana pihak lain telah menetapkan kebenaran tertentu atau mengambil tindakan tertentu, yang menghalang maklumat anda daripada diterima secara normal.

Cara meleret ke kanan dan membalas dengan cepat dalam iMessage pada iOS 17 Cara meleret ke kanan dan membalas dengan cepat dalam iMessage pada iOS 17 Sep 20, 2023 am 10:45 AM

Cara Menggunakan Leret untuk Membalas dalam iMessages pada iPhone Nota: Ciri Leret untuk Membalas hanya berfungsi dengan perbualan iMessage dalam iOS 17, bukan perbualan SMS biasa dalam apl Messages. Buka apl Mesej pada iPhone anda. Kemudian, pergi ke perbualan iMessage dan hanya leret ke kanan pada iMessage yang ingin anda balas. Setelah ini dilakukan, iMessage yang dipilih akan menjadi fokus manakala semua mesej lain akan kabur di latar belakang. Anda akan melihat kotak teks untuk menaip balasan dan ikon "+" untuk mengakses apl iMessage seperti Daftar Masuk, Tempat, Pelekat, Foto dan banyak lagi. Hanya masukkan mesej anda,

iOS 17: Cara menggunakan emoji sebagai pelekat dalam Messages iOS 17: Cara menggunakan emoji sebagai pelekat dalam Messages Sep 18, 2023 pm 05:13 PM

Dalam iOS17, Apple telah menambah beberapa ciri baharu pada apl Mesejnya untuk menjadikan komunikasi dengan pengguna Apple lain lebih kreatif dan menyeronokkan. Salah satu cirinya ialah keupayaan untuk menggunakan emoji sebagai pelekat. Pelekat telah wujud dalam apl Mesej selama bertahun-tahun, tetapi setakat ini, ia tidak banyak berubah. Ini kerana dalam iOS17, Apple menganggap semua emoji standard sebagai pelekat, membolehkan ia digunakan dengan cara yang sama seperti pelekat sebenar. Ini pada asasnya bermakna anda tidak lagi terhad untuk memasukkannya ke dalam perbualan. Kini anda juga boleh menyeretnya ke mana-mana sahaja pada gelembung mesej. Anda juga boleh menyusunnya di atas satu sama lain untuk mencipta adegan emoji kecil. Langkah berikut menunjukkan kepada anda cara ia berfungsi dalam iOS17

Mesej telah dihantar tetapi telah ditolak oleh pihak lain Adakah saya patut menyekatnya atau memadamnya? Mesej telah dihantar tetapi telah ditolak oleh pihak lain Adakah saya patut menyekatnya atau memadamnya? Mar 12, 2024 pm 02:41 PM

1. Ditambah pada senarai hitam: Jika mesej telah dihantar tetapi ditolak oleh pihak yang satu lagi, ia biasanya disenaraihitamkan Pada masa ini, anda tidak akan dapat menghantar mesej kepada pihak yang satu lagi dan pihak yang satu lagi tidak akan dapat menerima mesej anda. 2. Masalah rangkaian: Jika keadaan rangkaian penerima kurang baik atau terdapat kegagalan rangkaian, mesej mungkin tidak berjaya diterima. Pada ketika ini, anda boleh cuba menunggu sehingga rangkaian kembali normal sebelum menghantar mesej semula. 3. Pihak satu lagi telah menyediakan Jangan Ganggu: Jika penerima telah menyediakan Jangan Ganggu dalam WeChat, mesej penghantar tidak akan diingatkan atau dipaparkan dalam tempoh masa tertentu.

Bagaimana untuk mengedit mesej pada iPhone Bagaimana untuk mengedit mesej pada iPhone Dec 18, 2023 pm 02:13 PM

Apl Mesej asli pada iPhone membolehkan anda mengedit teks yang dihantar dengan mudah. Dengan cara ini, anda boleh membetulkan kesilapan, tanda baca dan juga frasa/perkataan yang salah secara automatik yang mungkin telah digunakan pada teks anda. Dalam artikel ini, kita akan belajar cara mengedit mesej pada iPhone. Cara Mengedit Mesej pada iPhone Diperlukan: iPhone menjalankan iOS16 atau lebih tinggi. Anda hanya boleh mengedit teks iMessage pada apl Messages, dan kemudian hanya dalam masa 15 minit selepas menghantar teks asal. Teks bukan iMessage tidak disokong, jadi ia tidak boleh diambil atau diedit. Lancarkan apl Mesej pada iPhone anda. Dalam Mesej, pilih perbualan dari mana anda ingin mengedit mesej

Bagaimana untuk menyediakan Xiaomi Mi 14 Pro untuk menyalakan skrin untuk mesej? Bagaimana untuk menyediakan Xiaomi Mi 14 Pro untuk menyalakan skrin untuk mesej? Mar 18, 2024 pm 12:07 PM

Xiaomi 14Pro ialah model utama dengan prestasi dan konfigurasi yang sangat baik. Ia telah mencapai jualan yang tinggi sejak dikeluarkan secara rasmi Banyak fungsi kecil Xiaomi 14Pro akan diabaikan oleh semua orang fungsinya kecil, , tetapi sangat praktikal Setiap orang akan menghadapi pelbagai masalah apabila menggunakan telefon bimbit Jadi bagaimana untuk menyediakan Xiaomi 14Pro untuk menyalakan skrin untuk mesej. Bagaimana untuk menyediakan Xiaomi Mi 14 Pro untuk menyalakan skrin untuk mesej? Langkah 1: Buka apl Tetapan telefon anda. Langkah 2: Leret ke bawah sehingga anda menemui pilihan "Skrin kunci dan kata laluan" dan klik untuk masuk. Langkah 3: Dalam menu "Skrin kunci & kod laluan", cari dan klik pilihan "Hidupkan skrin untuk pemberitahuan". Langkah 4: Pada halaman "Hidupkan skrin apabila menerima pemberitahuan", hidupkan suis untuk mendayakan

Penukar TabTransformer menambah baik prestasi perceptron berbilang lapisan analisis mendalam Penukar TabTransformer menambah baik prestasi perceptron berbilang lapisan analisis mendalam Apr 17, 2023 pm 03:25 PM

Hari ini, Transformers ialah modul utama dalam kebanyakan seni bina pemprosesan bahasa semula jadi (NLP) dan penglihatan komputer (CV) termaju. Walau bagaimanapun, bidang data jadual masih didominasi oleh algoritma pepohon keputusan yang dirangsang kecerunan (GBDT). Jadi, terdapat percubaan untuk merapatkan jurang ini. Antaranya, kertas pemodelan data jadual berasaskan penukar pertama ialah kertas "TabTransformer: Tabular Data Modeling Using Context Embedding" yang diterbitkan oleh Huang et al. Artikel ini bertujuan untuk menyediakan pembentangan asas kandungan kertas kerja, sambil menyelidiki butiran pelaksanaan model TabTransformer dan menunjukkan kepada anda cara menggunakan Ta secara khusus untuk data kami sendiri.

Tarikh keluaran Vivox100s disahkan! Jadilah orang pertama yang mengetahui berita terkini Tarikh keluaran Vivox100s disahkan! Jadilah orang pertama yang mengetahui berita terkini Mar 22, 2024 pm 02:18 PM

Tarikh keluaran Vivox100s disahkan! Berita terkini telah dipratonton Baru-baru ini, terdapat gelombang keghairahan mengenai Vivox100s dalam dunia teknologi Produk yang dinanti-nantikan ini akhirnya mengesahkan tarikh keluarannya, membuatkan ramai pengguna dan peminat teknologi teruja dengannya. Dilaporkan bahawa Vivox100s akan dikeluarkan secara rasmi pada penghujung bulan ini Apakah kejutan yang akan dibawa oleh produk baharu yang dinanti-nantikan ini. Vivox100s, sebagai karya terbaharu siri Vivox, telah menarik banyak perhatian sejak pendedahannya.

See all articles