Javaプログラマーはバカから菜鳥まで(二十三)よくある文字化けし解決とjavaBeanの基礎知識
4638 ワード
文字化けしの問題はjavaWeb開発者が直面した問題ではないでしょうか.この問題は当時javaを勉強する考えにも影響しました.あきらめたい考えさえありました.仕方がありません.当時は若くて、ほほほ.実は文字化けしの問題が発生する原因はたくさんあって、文字化けしの問題を解決するのもたくさんあって、今すぐ見てみましょう:
文字化けしが発生した箇所は大きく分けて以下の3種類があります.
1 jspページで 2 jspページ間の相互参照のパラメータ3 データベース内のデータへのアクセス・ソリューションは、大きく3つに分けられます.
1 jspページに表示されるのは、jspページの中国語文字符号化が設定されていないためです. 2 jspページ間で相互参照が表示されるのは、パラメータが正しい文字符号化を設定していないためです. 3 以上の2つの問題が解決すれば,データベースに格納され,自然と文字化けして存在しない.データベースに格納されたデータを再符号化しない限り.具体的な解決方法:
1.フォームページヘッダにutf-8の文字コードを設定する
これに加えてjspページの中国語文字化けし表示を解決すると、tomcatコンパイル後にクライアントに出力されるhtmlファイルは中国語符号化ではないため、文字化けして発生する. 2.ページ要求と応答のエンコーディングを設定する:
response.setCharacterEncoding("utf-8"); %>
この文を加えてjspページの中国語パラメータ伝達文字化を解決します.ブラウザでデフォルトで使用されるエンコーディングを「UTF-8」送信要求パラメータに設定します.
3.String(request.getParameter("name").getBytes("ISO8859_1"),"utf-8");伝達されたパラメータをすべてutf-8に符号化変換するという欠点は、伝達されるたびにパラメータがこのように書かれ、面倒であることである.
同様にserver.xmlプロファイルを設定することで実現できます.
しかし、これでwebapp全体に適用されます.4.Web.xmlファイルを変更して、フィルタを構成することもできます.その原理はすべて同じで,ただ方式を変えるだけだ.
1.フィルタクラスの作成:
2.web.xmlでの構成
5.もう一つの一般的な文字化け問題は、ダウンロード時にファイル名の文字化けが発生することです
元のダウンロード処理コードは以下の通りである:response.setHeader(「Content-Disposition」, "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
URLEncoderクラスには、文字列をアプリケーション/x-www-form-urlencodedに変換する MIME を選択します.
URLDecoderとURLEncoder クラス対応URLDecoder クラスには2つの静的メソッドがあります.これらは、x−www−form−url−encodedという形式で符号化されたstringを復号する.すなわち、すべてのプラス記号(+)をスペース記号に変換し、すべての%xxを対応する文字に変換します.
JavaBean JAVA言語で書かれた再利用可能なコンポーネントです.JavaBeanと書くには、クラスが具体的で共通であり、パラメータのないコンストラクタを持つ必要があります.JavaBean コンシステンシ設計モードに適合する共通の方法を提供することによって、内部ドメインはメンバー属性に露出します.よく知られているように、属性名はこのモードに合致し、他のJavaは クラスは、これらのJavaBeanを独自のメカニズムで発見および操作できます. で行ないます.
JavaBeanのタスクは次のとおりです. “Write once, run anywhere, reuse everywhere、すなわち「一度に作成し、どこでも実行し、どこでも再利用する」.これは、ソフトウェア産業を悩ませる複雑さを解決し、簡単でコンパクトで優れた問題解決策を提供することです.
JavaBean の範囲 Scope ライフタイムを持つ変数です.JavaBeanの範囲はフラグの右側に表示されます.JavaBeanのショートカットリファレンスが生成されます. 説明:jspサーバエンジンが剥離します...を選択します.エンドユーザーのブラウザに実際のコードを表示できません.
ページpage、リクエストrequest、ダイアログセッション、アプリケーションの4つの範囲があります.
会話の範囲:
会話範囲のJavaBean 主に複数のページと期間にわたって適用されます. たとえば、塗りつぶし ユーザー情報. 情報を追加し、フィードバックを受け入れ、ユーザーが最近実行したページの軌跡を保存します.会話範囲JavaBeanユーザーとの会話を保持 ID 関連情報.これらの情報は、一時的なダイアログクッキーから来ており、ユーザーがブラウザを閉じると、クライアントとサーバから削除されます.
ページ/要求範囲:
ページとリクエスト範囲のJavaBeanは、フォームに似ている場合があります. のbean , なぜなら フォームの処理に使用されることが多い.フォームはユーザの入力を処理するのに長い時間を必要とし、通常、ページがHTTP/POSTまたはGET要求を受け入れるために使用される.また、ページとリクエスト範囲のbeanは、大規模なサイト・サーバ上の負荷を低減するために使用でき、ダイアログbeanを使用すると、処理が遅れると多くのリソースが消費される可能性があります.
適用:
アプリケーション範囲は、通常、サーバのコンポーネントに適用されます.たとえば、 JDBC 接続プール、アプリケーション監視、ユーザーカウント、およびユーザーの動作に関与する他のクラス. BeanでHTMLの生成を制限するには、次の手順に従います. 理論上、JavaBean これはjsp層が担当する仕事であるため、HTMLは発生しません.しかしながら、動的メッセージに予め用意されたフォーマットを提供することは非常に有用である.生成されたHTMLはマークされます JavaBeanメソッドが返されます.
文字化けしが発生した箇所は大きく分けて以下の3種類があります.
1 jspページで 2 jspページ間の相互参照のパラメータ3 データベース内のデータへのアクセス・ソリューションは、大きく3つに分けられます.
1 jspページに表示されるのは、jspページの中国語文字符号化が設定されていないためです. 2 jspページ間で相互参照が表示されるのは、パラメータが正しい文字符号化を設定していないためです. 3 以上の2つの問題が解決すれば,データベースに格納され,自然と文字化けして存在しない.データベースに格納されたデータを再符号化しない限り.具体的な解決方法:
1.フォームページヘッダにutf-8の文字コードを設定する
これに加えてjspページの中国語文字化けし表示を解決すると、tomcatコンパイル後にクライアントに出力されるhtmlファイルは中国語符号化ではないため、文字化けして発生する. 2.ページ要求と応答のエンコーディングを設定する:
response.setCharacterEncoding("utf-8"); %>
この文を加えてjspページの中国語パラメータ伝達文字化を解決します.ブラウザでデフォルトで使用されるエンコーディングを「UTF-8」送信要求パラメータに設定します.
3.String(request.getParameter("name").getBytes("ISO8859_1"),"utf-8");伝達されたパラメータをすべてutf-8に符号化変換するという欠点は、伝達されるたびにパラメータがこのように書かれ、面倒であることである.
同様にserver.xmlプロファイルを設定することで実現できます.
< Connector port ="8080" maxHttpHeaderSize ="8192" maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75" enableLookups ="false" redirectPort ="8443" acceptCount ="100" connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="utf-8"/>
しかし、これでwebapp全体に適用されます.4.Web.xmlファイルを変更して、フィルタを構成することもできます.その原理はすべて同じで,ただ方式を変えるだけだ.
1.フィルタクラスの作成:
package org.RN.util; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class Encoding implements Filter { @SuppressWarnings("unused") private FilterConfig config=null; String encoding=null; public void destroy() { this.encoding=null; this.config=null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if(encoding!=null) request.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig arg0) throws ServletException { this.config=arg0; this.encoding=arg0.getInitParameter("encoding"); } }
2.web.xmlでの構成
Encoding filter.Encoding Encoding *
5.もう一つの一般的な文字化け問題は、ダウンロード時にファイル名の文字化けが発生することです
元のダウンロード処理コードは以下の通りである:response.setHeader(「Content-Disposition」, "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
URLEncoderクラスには、文字列をアプリケーション/x-www-form-urlencodedに変換する MIME を選択します.
URLDecoderとURLEncoder クラス対応URLDecoder クラスには2つの静的メソッドがあります.これらは、x−www−form−url−encodedという形式で符号化されたstringを復号する.すなわち、すべてのプラス記号(+)をスペース記号に変換し、すべての%xxを対応する文字に変換します.
JavaBean JAVA言語で書かれた再利用可能なコンポーネントです.JavaBeanと書くには、クラスが具体的で共通であり、パラメータのないコンストラクタを持つ必要があります.JavaBean コンシステンシ設計モードに適合する共通の方法を提供することによって、内部ドメインはメンバー属性に露出します.よく知られているように、属性名はこのモードに合致し、他のJavaは クラスは、これらのJavaBeanを独自のメカニズムで発見および操作できます. で行ないます.
JavaBeanのタスクは次のとおりです. “Write once, run anywhere, reuse everywhere、すなわち「一度に作成し、どこでも実行し、どこでも再利用する」.これは、ソフトウェア産業を悩ませる複雑さを解決し、簡単でコンパクトで優れた問題解決策を提供することです.
JavaBean の範囲 Scope ライフタイムを持つ変数です.JavaBeanの範囲はフラグの右側に表示されます.JavaBeanのショートカットリファレンスが生成されます. 説明:jspサーバエンジンが剥離します...を選択します.エンドユーザーのブラウザに実際のコードを表示できません.
ページpage、リクエストrequest、ダイアログセッション、アプリケーションの4つの範囲があります.
会話の範囲:
会話範囲のJavaBean 主に複数のページと期間にわたって適用されます. たとえば、塗りつぶし ユーザー情報. 情報を追加し、フィードバックを受け入れ、ユーザーが最近実行したページの軌跡を保存します.会話範囲JavaBeanユーザーとの会話を保持 ID 関連情報.これらの情報は、一時的なダイアログクッキーから来ており、ユーザーがブラウザを閉じると、クライアントとサーバから削除されます.
ページ/要求範囲:
ページとリクエスト範囲のJavaBeanは、フォームに似ている場合があります. のbean , なぜなら フォームの処理に使用されることが多い.フォームはユーザの入力を処理するのに長い時間を必要とし、通常、ページがHTTP/POSTまたはGET要求を受け入れるために使用される.また、ページとリクエスト範囲のbeanは、大規模なサイト・サーバ上の負荷を低減するために使用でき、ダイアログbeanを使用すると、処理が遅れると多くのリソースが消費される可能性があります.
適用:
アプリケーション範囲は、通常、サーバのコンポーネントに適用されます.たとえば、 JDBC 接続プール、アプリケーション監視、ユーザーカウント、およびユーザーの動作に関与する他のクラス. BeanでHTMLの生成を制限するには、次の手順に従います. 理論上、JavaBean これはjsp層が担当する仕事であるため、HTMLは発生しません.しかしながら、動的メッセージに予め用意されたフォーマットを提供することは非常に有用である.生成されたHTMLはマークされます JavaBeanメソッドが返されます.