アヤックスは、前景は文字化け中国の舞台裏見える解決するために中国に達しました

解決策は、にある二回コーディングフロントデスク背景は一度デコードすることができます。

レセプションJSPファイル

1つのVARのテキスト= "张三" 3 VARのユーザ名= encodeURI(encodeURI(テキスト));

背景サーブレットコード

1文字列名= URLDecoder.decode( "対応するフィールド"、 "UTF-8") 。

簡単なログイン検証例。

ケース説明:バックエンドのコンソール中国のゴミ問題が解決されたAjaxリクエストを確認するには。

シンプルなログイン画面、ユーザー名は、ユーザー名を入力するように要求された場合は、ユーザー名のログインを入力し、「ユーザー名は空にすることはできません」ではありません。「ジョン・ドウ」と入力したユーザー名は、すでに他のノーヒントによって占められたユーザー名を求められた場合。

フロントページのindex.jsp

1  <%- 
2    のIntelliJ IDEAによって作成。
3    ユーザー:hejjon
 4    2019 / 6 / 3 
5    時間10 19 
6は   するには、このテンプレートを使用するファイルを変更します| 設定| ファイルのテンプレート。
7  - %> 
8  <%@ページのcontentType = " text / htmlの;のcharset = UTF-8 " 言語= " Javaの"  %> 
9  <%
10      文字列のパス=request.getContextPath();
11      basePathを= request.getScheme()+  " :// "  + request.getServerName()+  " "  + request.getServerPort()
 12              + パス+  " / " 13  %> 
14  < HTML > 
15  < ヘッド> 
16      < 基地HREF = "<%= basePathを%>" > 
17      < タイトル>用户登录界面<> 
18      < スクリプトタイプ= "テキスト/ javascriptの" > 
19          のvar XHR。
20          関数の変化(){
 21  
22              のvar ヴァル= のdocument.getElementById(" のuname " ).VALUE。
23              のVaR のuname = encodeURI(encodeURI(ヴァル))。
24  
25              であれば(のuname ===  "" ){
 26                  のdocument.getElementById(" namespan " ).innerHTML =  " 用户名不能为空" 27              } {
 28                  // オブジェクトがXHR作成
29                  XHR =  新しい新規のXMLHttpRequest();
 30                  //は、サーバとの接続を確立
31は                 xhr.openを(" GET " " のuname =ログイン/サーブレット?"  + 、のunameをtrueに);
 32                  / / コールバック関数
33は                 xhr.onreadystatechange = プロセス;
 34れる                 // データを送る
35                  xhr.send(ヌル);
 36              }
37              
38          }
 39の          
40          機能プロセス(){
 41             であれば(xhr.readyStateの==  4  && xhr.statusの==  200 ){
 42                 // 接收后台响应
43                 VARのテキスト= xhr.responseText。
44                 のdocument.getElementById(" namespan " ).innerHTML = テキスト。
45             }
 46          }
 47      </ スクリプト> 
48  </ ヘッド> 
49  <ボディ> 
50  < P > 
51      用户:< 入力タイプ= "テキスト" 名前= "のuname" ID = "のuname" のonblur = "変化()" /> < スパンID = "namespan" > </ スパン> 
52  </ P > 
53  < P > 
54      密码:< 入力タイプ= "パスワード" 名前= "PWD" ID = "PWD" /> 
55  </ P > 
56  </ ボディ> 
57  </ HTML >

 

背景LoginServlet.java

1つの インポートjavax.servlet.ServletException。
2  インポートjavax.servlet.annotation.WebServlet。
3  インポートjavax.servlet.http.HttpServlet。
4  インポートするjavax.servlet.http.HttpServletRequest。
5  輸入のjavax.servlet.http.HttpServletResponse。
6  インポートにjava.io.IOException。
7  インポートてjava.io.PrintWriter。
8  インポートjava.net.URLDecoder。
9  
10  
11  @WebServletは( "/サーブレット/ログイン")
 12  パブリッククラスがloginservletが延びるのHttpServlet {
 13      @Override
 14     保護されたボイドサービス(HttpServletRequestのREQ、HttpServletResponseのRESP)はServletExceptionがは、IOException {スロー
 15          バックグラウンド応答テキスト形式設定//
 16          resp.setContentTypeを( ";のcharset = UTF-8テキスト/ HTML")
 。17          受信要求受信//
 18は、         文字列のuname URLDecoder.decode =(req.getParameter( "のuname"));
 19  
20は         //のSystem.out.println(のuname);
 21は 
22である         のPrintWriter resp.getWriter OUT =();
 23である         ( "ジョン・ドウ" .equals IF(のuname )){
 24              Out.print( "ユーザ名が既に占有されている");
 25          } {他
 26である             Out.print( "ユーザ名が利用可能です")。
27          }
 28     }
 29  }
 30     

 

おすすめ

転載: www.cnblogs.com/hejjon/p/10966438.html