Perangkat lunak dan produk dikembangkan dan ditingkatkan sedikit demi sedikit, dengan lebih banyak fungsi, kinerja yang lebih kuat, dan pengalaman pengguna yang lebih baik ... peningkatan setiap indikator membutuhkan hal -hal praktis yang harus dilakukan. Misalnya, produk Anda menjadi lebih besar dan lebih banyak orang menggunakannya, tidak hanya untuk orang -orang Shanghai, orang Beijing, tetapi juga untuk orang India, orang Prancis, dll. Dapat dikatakan bahwa produk ini telah memasuki panggung internasional. Ketika teman -teman India memasuki URL untuk mengakses produk, "Selamat Datang, Saudara Ketiga" muncul di antarmuka, dan saya kira teman -teman bingung di tempat. Pada saat ini, internasionalisasi muncul.
Untuk membuat hidangan internasional, itu benar -benar tidak rumit seperti yang Anda pikirkan. Sebaliknya, ini sangat sederhana. Jika Anda tidak mempercayainya, Anda dapat melihat--
1. Menyuntikkan sumber daya sumber daya
Tambahkan BeanResourceBundlMessageSource untuk pemrosesan internasional di springmvc.xml
<bean id = "messesource"> <name properti = "baseName" value = "i18n"> </prop Property> </ bean>
Nama di properti di sini sama dengan nama properti di kelas injeksi. Nilai di sini menentukan nama file internasionalisasi berikutnya. Ingatlah itu I18n, dan Anda akan segera melihat penggunaannya.
2. Buat dokumen internasional
Secara total, tiga file atribut internasional perlu dibuat
i18n.properties - File internasional default
i18n_en_us.properties - Dokumen internasional untuk lingkungan Inggris
i18n_zh_cn.properties - Dokumen internasional untuk lingkungan Cina
Catatan: Mengapa nama file dimulai dengan i18n? Karena dalam file konfigurasi springmvc.xml pada titik pertama, nilai yang dikonfigurasi adalah i18n
Isi file i18n.properties dan i18n_en_us.properties sama seperti
i18n.username = usernamei18n.password = kata sandi
i18n_zh_cn.properties
i18n.username =/u7528/u6237/u540di18n.password =/u5bc6/u7801
3. Buat halaman baru
Buat dua halaman baru, satu adalah i18n.jsp, yang menampilkan nama pengguna, dan ada hyperlink untuk melompat ke i18n2.jsp, dan yang lainnya adalah i18n2.jsp, yang menampilkan kata sandi, dan ada hyperlink untuk melompat ke i18n.jsp.
i18n.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" http:/java. Transisi // en "" http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv = "Title" Konten "Teks/HTML; key = "i18n.username"> </fmt: pesan> <br> <br> <a href = "i18n2"> i18n2 </a> </body> </html>
i18n2.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" http:/java. Transisi // en "" http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv = "Title" Konten "Teks/HTML; key = "i18n.password"> </fmt: pesan> <br> <br> <br> <a href = "i18n"> i18n </a> </body> </html>
Pada saat yang sama, jelas kita perlu menambahkan entri di index.jsp dan tautan ke halaman i18n.jsp, sebagai berikut
<a href = "i18n"> i18n </a>
Agar dapat secara langsung mengklik dan menautkan tanpa perlu memproses dan melompat ke tampilan melalui penangan, kita perlu menambahkan tag di springmvc.xml
<mvc: view-controller path = "/i18n" view-name = "i18n"/> <mvc: view-controller path = "/i18n2" view-name = "i18n2"/>
Ini memungkinkan Anda untuk secara langsung mengakses halaman i18n.jsp dan i18n2.jsp di bilah alamat.
Small Pit: Jika metode pengkodean di i18n.jsp dan i18n2.jsp mengadopsi default "ISO-8859-1", halaman akan menampilkan kode kacau.
Saat pengkodean diubah menjadi "UTF-8", itu dapat ditampilkan secara normal
Di atas adalah metode dasar internasionalisasi. Jika saya masih ingin membuat i18n.jsp yang tidak perlu secara langsung mengakses i18n.jsp, tetapi disajikan setelah pemrosesan penangan, atau saya juga ingin membuat hidangan internasional yang tidak harus begitu merepotkan dan harus beralih bahasa, apakah mungkin? Tentu saja, mari kita terus lihat--
1. Tambahkan tag untuk akses i18n.jsp langsung di springmvc.xml sebelum berkomentar
<!-<mvc: view-controller path = "/i18n" view-name = "i18n"/>->
2. Tambahkan antarmuka pemrosesan di kelas pemrosesan hanlder springmvctest
@AutowiredPrivate ResourceBundLeMessageSource pesan sumber; @RequestMapping ("/i18n") public string testi18n (locale locale) {string val = messesource.getMessage ("i18n.username", null, lokal); System.out.println (Val); kembalikan "i18n";}Perhatikan bahwa kelas pemrosesan internasionalisasi ResourceBundLeMessageSource disuntikkan di sini, dan nilai properti internasional diperoleh dengan menggunakan metode GetMessage -nya.
Mulailah Layanan Tomcat dan lihat
Jadi bagaimana jika Anda menampilkan informasi bahasa yang sesuai di lingkungan bahasa yang berbeda sesuai dengan pengaturan Anda sendiri?
1. Mengkonfigurasi sessionlocaleresolver dan localechangeInterceptor
<!-Mengkonfigurasi Sesi SesiLocaleSolver-> <bean id = "localeResolver"> </ bean> <!-Mengkonfigurasi localechangeInterceptor-> <mvc: Interceptors> <Bean> </tean> </mvc: Interceptors>
LocalechangeInterceptor di sini terutama digunakan untuk menguraikan permintaan dengan informasi lokal ke objek lokal dan mendapatkan objek LocalEsolver.
Setelah itu, sesiLocalResolver di sini akan mengubah objek LocalResolver di atas menjadi properti sesi, dan mengambil properti ini, yaitu objek lokal, dan mengembalikannya ke aplikasi.
2. Tambahkan hyperlink di index.jsp
<a href = "i18n? locale = en_cn"> Cina </a> <br> <br> <a href = "i18n? locale = en_us"> bahasa Inggris </a>
Dengan cara ini, kita bisa melihat hasilnya
Setelah berbicara tentang internasionalisasi, mari kita bicara tentang dukungan SpringMVC untuk JSON.
Dalam proses pengembangan tradisional, pawang kami, yaitu, lapisan pengontrol, biasanya mengikuti rutin untuk beralih ke tampilan JSP; Namun, skenario semacam itu tidak dapat memenuhi semua persyaratan. Misalnya, kita sering hanya perlu mengembalikan data, bukan halaman JSP. Kemudian pada saat ini, @ResponseBody dan @Responseentitas Spring MVC3 mendukung fungsi -fungsi tersebut. Pengontrol mengembalikan data secara langsung (kita akan berbicara tentang data JSON di sini), daripada menunjuk langsung ke tampilan tertentu. Berikut ini adalah contoh sederhana dari mengunggah dan pengunduhan.
1. Unggah file
1.1 Menerapkan permintaan AJAX di index.jsp menggunakan jQuery
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = UTF-8 "> <title> masukkan judul di sini <title </typle/html; charset = judul/judulk src = "Scripts/jQuery-1.9.1.min.js"> </script> <script> $ (function () {$ ("#testjson"). klik (function () {var url = this.href; var args = {}; $ .post (url, args, function (data) {var i = {}; $ .post (url, args, function (data) {var i = {}; $ .post (url, args, function (data) {for) {{}; $. data [i] .id; var lastname = data [i] .lastname; id = "testjson"> testJson </a> </body> </html>Inti di sini adalah permintaan Ajax yang ditulis dalam jQuery
URL yang diminta adalah HREF yang ditentukan;
Data adalah data yang dikembalikan setelah respons permintaan;
Dalam keadaan normal, kami harus meminta informasi dari semua karyawan, dan melalui traversal di sini, kami akan mendapatkan semua informasi dari setiap karyawan seperti ID, LastName, dll.
1.2. Di sini kita perlu memperkenalkan tiga paket stoples
Ketiganya terutama digunakan kemudian dalam konversi data pengembalian.
1.3. Tambahkan antarmuka di handler springmvctest
@Responsebody@requestMapping ("testJson") Koleksi publik <shoewe> testjson () {return usaha kerja.getall ();}Pemahaman pribadi saya di sini adalah untuk mengembalikan semua informasi karyawan yang ditanya melalui karyawan ke antarmuka sebagai tanggapan, dan akhirnya mendapatkan formulir data JSON melalui serangkaian pemrosesan, dan kemudian melintasi dan menguraikan di halaman latar depan. Dan semuanya dilakukan berkat anotasi @ResponseBody.
Secara khusus, ada beberapa konverter internal untuk melakukan konversi ini, memecahkan titik dalam metode antarmuka dan memasuki debugging.
Pilih DispatcherServlet, temukan ini-> Handleradiapters-> ElementData, temukan requestmappingHandLerapter di array ini, klik untuk menemukan MessageConverters, dan Anda dapat melihat bahwa ada 7 konverter secara total
The 7th MappingJackson2httpMessageConverter Berikut adalah konverter yang kami muat setelah menambahkan tiga paket toples di atas. Seperti yang dapat dilihat, ada cukup konverter untuk berbagai jenis data untuk diproses.
1.4 Tambahkan tautan di index.jsp
<Form Action = "TestFileUpload" Method = "POST" ENCTYPE = "Multipart/Form-Data"> File: <input type = "file" name = "file"/> desc: <input type = "text" name = "desc"/<input type = "kirim" value = "kirim"/</bentuk> <br/>
Hasil unggahan terakhir adalah sebagai berikut
2. Unduh File
2.1 Bersiaplah untuk mengunduh sumbernya
Buat direktori file baru di bawah WebContent, masukkan aaa.txt sebagai sumber unduhan
2.2 Tambahkan hyperlink di index.jsp sebagai portal unduhan
<a href = "testresponseentity" id = "testjson"> testResponseentity </a> <br/>
2.3 Menambahkan antarmuka di handler springmvctest
@RequestMapping ("TestResponseEntity") Tanggapan Publik <byte []> testResponseEntity (httpsession sesi) melempar ioException {byte [] body = null; ServletContext servletContext = session.getSerVletContext (); InputStream in = servletContext.getResourceAsstream ("/file/aaa.txt"); body = byte baru [in.available ()]; in. Baca (tubuh); Header httpheaders = httpheaders baru (); headers.add ("disposisi konten", "lampiran; nama file = aaa.txt"); Httpstatus statuscode = httpstatus.ok; ResponEntity <byte []> respons = responEntity baru <> (body, header, statuscode); mengembalikan respons;}Mulai Tomcat dan kita dapat melihat bahwa AAA.TXT dapat diunduh ~~~
Oke, sejauh ini, apa yang telah kita lakukan
1. Dukung internasionalisasi
2. Unggah file
3. Unduh File
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.