استخدم أولاً واجهة إرسال المستخدم كمثال (مربع نص ، مربع كلمة المرور ، التحديد ، النموذج المنسدلة ، إلخ) ، التأثير كما يلي
<! doctype html public "-// w3c // dtd html 4.01 Transitional // en" "http://www.w3 charset = utf-8 "> <title> تسجيل المستخدم </title> </head> <body> <!-تسجيل المستخدم-> <form Action ="/requestTest/request5 "method =" get " المربع-> <tr> <td> كلمة المرور </td> <td> <type type = "password" name = "password"/> </td> </tr> <!-Radio Bater Bater Radio-> <td> أنثى </td> </tr> <!-خانة الاختيار-> <TR> <td> المضيفين </td> <td> <type type = "checkbox" name = "hobby" value = "Sport"/> Sports <type type = "checkbox" name = "hobby" value = "music"/> music <input type = "checkbox" = "hobby" Box-> <tr> <td> City </td> <select name = "city"> <Option value = "beijing"> beijing </portive> <orte value = "shanghai"> Shanghai </teptor الملف الشخصي </td> <td> <textarea rows = "5" cols = "60" name = "introdupe"> </textarea> </td> </tr> <tr> <td colspan = "2"
ملاحظة: تعريف واستخدام علامة HTML <Porm> هي:
<!-تحدد سمة الإجراء المطلوبة مكان إرسال بيانات النموذج عند إرسال نموذج. -> <form action = "value">
قيمة السمة هي عنوان URL ، يشير إلى مكان إرسال بيانات النموذج. قيمها المحتملة:
عنوان URL المطلق - أشر إلى مواقع أخرى (مثل src = "www.example.com/example.htm")
عنوان URL النسبي - أشير إلى الملفات داخل الموقع (مثل src = "example.htm")
على سبيل المثال ، يحتوي النموذج التالي على حقلين إدخال وزر إرسال. عند إرسال النموذج ، يتم إرسال بيانات النموذج إلى صفحة تسمى "form_action.asp":
<form action = "form_action.asp" method = "get"> <p> الاسم الأول: <input type = "text" name = "fname" /> </p> اسم العائلة: <input type = "text"
الطريقة هي الحصول ، لذلك يتم استرداد المعلومات في طريقة DOGE من servlet
يمتد requestsservlet5 الفئة العامة httpservlet {public void doget (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {// solve post growmed user. request.getParameter ("username") ؛ system.out.println (اسم المستخدم) ؛ // احصل على قيمة // solve الحصول على رمز مشوه (على سبيل المثال ، أدخل الصينية) --- استخدم الترميز اليدوي // username = urlencoder.encode (اسم المستخدم ، "ISO-8859-1") ؛ // الترميز مع iso // username = urldecoder.decode (username ، "UTF-8") ؛ // decoding with utf-8 username = new string (username.getBytes ("ISO-8859-1") ، "UTF-8") ؛ System.out.println (اسم المستخدم) ؛ // التحقق غير null if (اسم المستخدم! = null && username.trim () بشكل افتراضي ، يمكن الحصول على البيانات الأولى فقط. String Hobby = request.getParameter ("Hobby") ؛ // multick-check box system.out.println (hobby) ؛ // الحصول على جميع البيانات المقدمة لـ checkbox --- getParameTervaluessTring [] Hobbies = request.getParameTervalues ("Hobby") ؛ System.out.println (Arrays.ToString (Hobbies)) ؛ System.Out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- request.getParameterNames () ؛ Arrays.ToString (request.getParameTervalues (name))) ؛} System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- parametermap.keyset () ؛ for (مفتاح السلسلة: مفاتيح) {// المفتاح هو المعلمة themystem.out.println (key + ":" + صفائف. إجابة)؛}}أسباب المعلمات المشوهة
ترميز URL هو تنسيق تستخدمه المتصفحات لحزم إدخال النموذج. يحصل المتصفح على جميع الأسماء والقيم من النموذج ، وترميزها في معلمات الاسم/القيمة (يزيل تلك الأحرف التي لا يمكن نقلها ، أو تصنيف البيانات ، وما إلى ذلك) كجزء من عنوان URL أو يرسلها بشكل منفصل إلى الخادم.
تتوافق طرق الطلب المختلفة مع حلول مختلفة:
post --- request.setcharacterencoding ("مجموعة تشفير العميل") ؛
الحصول على رمز مشوهة يحل يدوي
اسم المستخدم = urlencoder.encode (اسم المستخدم ، "ISO-8859-1") ؛ // encode username = urldecoder.decode (اسم المستخدم ، "UTF-8") ؛ // فك التشفير مع UTF-8
تبسيط طريقة الكتابة أعلاه: اسم المستخدم = سلسلة جديدة (اسم المستخدم.
احصل على مجموعة الأحرف الافتراضية
في tomcat/conf/server.xml
إضافة خاصية uriencoding = "utf-8" في الموصل
الخلاصة: أثناء التطوير ، حاول عدم تعديل مجموعة فك التشفير الافتراضية من tomcat. يرجى محاولة استخدام POST قدر الإمكان لتقديم طلب. إذا كان عليك استخدام GET ، قم بتشفيره يدويًا.