ซอฟต์แวร์และผลิตภัณฑ์ได้รับการพัฒนาและปรับปรุงทีละบิตโดยมีฟังก์ชั่นมากขึ้นเรื่อย ๆ ประสิทธิภาพที่แข็งแกร่งและประสบการณ์การใช้งานที่ดีขึ้น ... การปรับปรุงตัวบ่งชี้แต่ละตัวนั้นต้องการสิ่งที่ต้องทำ ตัวอย่างเช่นผลิตภัณฑ์ของคุณมีขนาดใหญ่ขึ้นและมีคนใช้มากขึ้นไม่เพียง แต่สำหรับคนเซี่ยงไฮ้คนปักกิ่ง แต่ยังสำหรับคนอินเดียคนฝรั่งเศส ฯลฯ อาจกล่าวได้ว่าผลิตภัณฑ์นี้เข้าสู่เวทีระหว่างประเทศ เมื่อเพื่อนชาวอินเดียเข้าสู่ URL เพื่อเข้าถึงผลิตภัณฑ์ "ยินดีต้อนรับพี่ชายคนที่สาม" ปรากฏขึ้นบนอินเทอร์เฟซและฉันเดาว่าเพื่อนจะสับสนในจุดนั้น ในเวลานี้ความเป็นสากลเข้ามา
ในการทำอาหารนานาชาติมันไม่ซับซ้อนอย่างที่คุณคิด แต่มันง่ายมาก หากคุณไม่เชื่อคุณจะเห็น-
1. Inject ResourceBundleMessagesource
เพิ่ม BeanresourceBundlMessagesource สำหรับการประมวลผลระหว่างประเทศใน SpringMVC.XML
<bean id = "MessagesOrce"> <property name = "basename" value = "i18n"> </property> </ebean>
ชื่อในคุณสมบัติที่นี่เหมือนกับชื่อคุณสมบัติในคลาสการฉีด ค่าที่นี่กำหนดชื่อของไฟล์สากลที่ตามมา จำไว้ว่ามันคือ i18n และคุณจะเห็นการใช้งานทันที
2. สร้างเอกสารระหว่างประเทศ
โดยรวมต้องสร้างไฟล์แอตทริบิวต์ระหว่างประเทศสามไฟล์
i18n.properties - ไฟล์ระหว่างประเทศเริ่มต้น
i18n_en_us.properties - เอกสารสากลสำหรับสภาพแวดล้อมภาษาอังกฤษ
i18n_zh_cn.properties - เอกสารสากลสำหรับสภาพแวดล้อมจีน
หมายเหตุ: ทำไมชื่อของไฟล์ถึงเริ่มต้นด้วย i18n? เนื่องจากในไฟล์การกำหนดค่า SpringMvc.xml ณ จุดแรกค่าที่กำหนดค่าคือ i18n
เนื้อหาของ i18n.properties และ i18n_en_us.properties ไฟล์นั้นเหมือนกับ
i18n.username = userNamei18n.password = รหัสผ่าน
i18n_zh_cn.properties
i18n.username =/u7528/u6237/u540di18n.password =/u5bc6/u7801
3. สร้างหน้าใหม่
สร้างหน้าใหม่สองหน้าหนึ่งคือ i18n.jsp ซึ่งแสดงชื่อผู้ใช้และมีการเชื่อมโยงหลายมิติเพื่อข้ามไปที่ i18n2.jsp และอื่น ๆ คือ i18n2.jsp ซึ่งแสดงรหัสผ่านและมีการเชื่อมโยงไฮเปอร์ลิงก์เพื่อข้ามไปยัง i18n.jsp
i18n.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib คำนำหน้า = "fmt" uri = "http://java.sun.com/jsp/JSTL/FMT html 4.01 transitional // en "" http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <fmt: คีย์ข้อความ = "i18n.username"> </fmt: ข้อความ> <br> <br> <a href = "i18n2"> i18n2 </a> </body> </html>
i18n2.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib คำนำหน้า = "fmt" uri = "http://java.sun.com/jsp/JSTL/FMT html 4.01 transitional // en "" http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <fmt: คีย์ข้อความ = "i18n.password"> </fmt: ข้อความ> <br> <br> <br> <a href = "i18n"> i18n </a> </body> </html>
ในเวลาเดียวกันเห็นได้ชัดว่าเราจำเป็นต้องเพิ่มรายการใน index.jsp และลิงก์ไปยังหน้า i18n.jsp ดังต่อไปนี้
<a href = "i18n"> i18n </a>
เพื่อให้สามารถคลิกโดยตรงและเชื่อมโยงได้โดยไม่จำเป็นต้องประมวลผลและข้ามไปยังมุมมองผ่านตัวจัดการเราจำเป็นต้องเพิ่มแท็กใน SpringMVC.XML
<MVC: view-controller path = "/i18n" view-name = "i18n"/> <mvc: view-controller path = "/i18n2" view-name = "i18n2"/>
สิ่งนี้ช่วยให้คุณสามารถเข้าถึงหน้า i18n.jsp และ i18n2.jsp โดยตรงในแถบที่อยู่
หลุมขนาดเล็ก: หากวิธีการเข้ารหัสใน i18n.jsp และ i18n2.jsp ใช้ค่าเริ่มต้น "ISO-8859-1" เริ่มต้นหน้าจะแสดงรหัสที่เล่นได้
เมื่อการเข้ารหัสเปลี่ยนเป็น "UTF-8" ก็สามารถแสดงได้ตามปกติ
ข้างต้นเป็นวิธีพื้นฐานของการทำให้เป็นสากล หากฉันยังต้องการสร้าง i18n.jsp ที่ไม่จำเป็นต้องเข้าถึง i18n.jsp โดยตรง แต่จะถูกนำเสนอหลังจากการประมวลผลตัวจัดการหรือฉันก็ต้องการทำอาหารนานาชาติที่ไม่ต้องลำบากและต้องเปลี่ยนภาษาเป็นไปได้หรือไม่? แน่นอนมาดูกัน-
1. เพิ่มแท็กสำหรับการเข้าถึง i18n.jsp โดยตรงใน SpringMvc.xml ก่อนที่จะแสดงความคิดเห็น
<!-<MVC: view-controller path = "/i18n" view-name = "i18n"/>->->
2. เพิ่มอินเทอร์เฟซการประมวลผลในคลาสการประมวลผล Hanlder SpringMvctest
@autowiredPrivate ResourceBundleMessageSource MessagesOrce; @requestmapping ("/i18n") สตริงสาธารณะ testi18n (สถานที่ตั้ง) {String val = messageource.getMessage ("i18n.username", null, locale); System.out.println (val); กลับ "i18n";}โปรดทราบว่า ResourceBundleMessageSource คลาสการประมวลผลระหว่างประเทศนั้นถูกฉีดที่นี่และมูลค่าทรัพย์สินที่เป็นสากลได้มาโดยใช้วิธีการ getMessage
เริ่มบริการ Tomcat และดู
ดังนั้นถ้าคุณแสดงข้อมูลของภาษาที่เกี่ยวข้องในสภาพแวดล้อมภาษาที่แตกต่างกันตามการตั้งค่าของคุณเอง
1. กำหนดค่า SessionLocaleresolver และ LocaleChangeInterceptor
<!-กำหนดค่า sessionlocaleresolver-> <bean id = "localesolver"> </epean> <!-กำหนดค่า LocaleChangeInterceptor-> <MVC: interceptors> <bean> </ebean> </mvc: interceptors>
LocaleChangeInterceptor ที่นี่ส่วนใหญ่ใช้เพื่อแยกวิเคราะห์คำขอพร้อมข้อมูลสถานที่ลงในวัตถุสถานที่และรับวัตถุ Localesolver
หลังจากนั้น SessionLocalResolver ที่นี่จะแปลงวัตถุ LocalResolver ด้านบนให้เป็นคุณสมบัติเซสชันและนำคุณสมบัตินี้ออกไปนั่นคือวัตถุในสถานที่และส่งคืนไปยังแอปพลิเคชัน
2. เพิ่มไฮเปอร์ลิงก์ใน index.jsp
<a href = "i18n? locale = en_cn"> จีน </a> <br> <br> <a href = "i18n? locale = en_us"> ภาษาอังกฤษ </a>
ด้วยวิธีนี้เราสามารถเห็นผลลัพธ์
หลังจากพูดคุยเกี่ยวกับความเป็นสากลมาพูดคุยเกี่ยวกับการสนับสนุนของ SpringMVC สำหรับ JSON
ในกระบวนการพัฒนาแบบดั้งเดิมตัวจัดการของเราเช่นเลเยอร์คอนโทรลเลอร์มักจะเป็นไปตามกิจวัตรประจำวันของการเปลี่ยนเป็นมุมมอง JSP; อย่างไรก็ตามสถานการณ์ดังกล่าวไม่สามารถปฏิบัติตามข้อกำหนดทั้งหมดได้ ตัวอย่างเช่นเรามักจะต้องส่งคืนข้อมูลแทนที่จะเป็นหน้า JSP จากนั้นในเวลานี้ @ResponseBody และ @Responseentity ของ Spring MVC3 สนับสนุนฟังก์ชั่นดังกล่าว คอนโทรลเลอร์ส่งคืนข้อมูลโดยตรง (เราจะพูดถึงข้อมูล JSON ที่นี่) แทนที่จะชี้ไปที่มุมมองเฉพาะโดยตรง นี่คือตัวอย่างง่ายๆของการอัปโหลดและดาวน์โหลด
1. การอัปโหลดไฟล์
1.1 ใช้คำขอ AJAX ใน index.jsp โดยใช้ jQuery
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 " src = "สคริปต์/jQuery-1.9.1.min.js"> </script> <script> $ (ฟังก์ชัน () {$ ("#testjson") คลิก (ฟังก์ชั่น () {var url = this.href; var args = {}; $ .post (url, args, ฟังก์ชัน ข้อมูล [i] .id; id = "testjson"> testjson </a> </body> </html>หลักที่นี่คือคำขอ AJAX ที่เขียนด้วย jQuery
URL ที่ร้องขอคือ HREF ที่กำหนดไว้;
ข้อมูลคือข้อมูลที่ส่งคืนหลังจากการตอบสนองการร้องขอ
ภายใต้สถานการณ์ปกติเราควรขอข้อมูลจากพนักงานทุกคนและผ่านการสำรวจที่นี่เราจะได้รับข้อมูลทั้งหมดจากพนักงานแต่ละคนเช่น ID, นามสกุล ฯลฯ
1.2. ที่นี่เราต้องแนะนำแพ็คเกจสามขวด
ทั้งสามนี้ส่วนใหญ่จะใช้ในภายหลังในการแปลงข้อมูลการส่งคืน
1.3. เพิ่มอินเทอร์เฟซใน Handler SpringMvctest
@responsebody@requestmapping ("testjson") คอลเลกชันสาธารณะ <พนักงาน> testjson () {return exparteedao.getall ();}ความเข้าใจส่วนตัวของฉันที่นี่คือการส่งคืนข้อมูลพนักงานทั้งหมดที่สอบถามผ่าน Employeedao ไปยังอินเทอร์เฟซเป็นการตอบสนองและในที่สุดก็ได้รับข้อมูล JSON ผ่านชุดการประมวลผลจากนั้นสำรวจและแยกวิเคราะห์ในหน้าเบื้องหน้า และทุกอย่างเสร็จสิ้นด้วยคำอธิบายประกอบ @ResponseBody
โดยเฉพาะมีตัวแปลงภายในบางตัวเพื่อทำการแปลงเหล่านี้จุดแตกหักในวิธีการอินเตอร์เฟสและป้อนการดีบัก
เลือก dispatcherservlet, ค้นหาสิ่งนี้-> handleradiapters-> elementData, ค้นหา requestmappinghandleradapter ในอาร์เรย์นี้คลิกเพื่อค้นหา messageConverters และคุณจะเห็นว่ามีตัวแปลงทั้งหมด 7 ตัว
MappingJackson2httpmessageConverter ที่ 7 นี่คือตัวแปลงที่เราโหลดหลังจากเพิ่มแพ็คเกจสามขวดด้านบน ดังที่เห็นได้มีตัวแปลงเพียงพอสำหรับประเภทข้อมูลที่แตกต่างกันในการประมวลผล
1.4 เพิ่มลิงค์ใน index.jsp
<form action = "testFileUpload" method = "post" enctype = "multipart/form-data"> ไฟล์: <input type = "file" name = "file"/> desc: <input type = "text" name = "desc"/> <input type = "subment"
ผลการอัปโหลดครั้งสุดท้ายมีดังนี้
2. ดาวน์โหลดไฟล์
2.1 เตรียมดาวน์โหลดแหล่งที่มา
สร้างไดเรกทอรีไฟล์ใหม่ภายใต้ webcontent วาง aaa.txt เป็นแหล่งดาวน์โหลด
2.2 เพิ่มไฮเปอร์ลิงก์ใน index.jsp เป็นพอร์ทัลดาวน์โหลด
<a href = "testResponseentity" id = "testjson"> testResponseentity </a> <br/>
2.3 การเพิ่มอินเทอร์เฟซใน Handler SpringMvctest
@RequestMapping ("testResponseentity") การตอบสนองสาธารณะ <byte []> testResponseentity (เซสชั่น httpsession) โยน ioexception {byte [] body = null; servletContext servletContext = session.getServletContext (); inputStream ใน = servletContext.getResourceasstream ("/files/aaa.txt"); body = byte ใหม่ [in.available ()]; in.read (body); ส่วนหัว httpheaders = httpheaders ใหม่ (); headers.add ("เนื้อหา-การจัดสรร", "สิ่งที่แนบมา; ชื่อไฟล์ = aaa.txt"); httpstatus statuscode = httpstatus.ok; ResponseEntity <byte []> response = new ResponseEntity <> (ร่างกายส่วนหัว, stationsCode); ตอบกลับคืน;}เริ่มต้น Tomcat และเราจะเห็นว่าสามารถดาวน์โหลด aaa.txt ได้ ~~~
โอเคจนถึงตอนนี้เราทำอะไรไปแล้ว
1. สนับสนุนความเป็นสากล
2. การอัปโหลดไฟล์
3. ดาวน์โหลดไฟล์
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น