一、HttpServletResponseの
。Response.getWriter()書き込み( "<H1>応答</ H1>");文字列データを書き込むように
。Response.getOutputStream()、ライト(「応答」):データ書き込みモードバイトストリームで
( "UTF-8")response.setCharacterEncoding:設定応答データはUTF-8、文字ストリーム
response.setHeader( "Content-Typeの"、 "text / htmlの;のcharset = UTF-8"):設定ページのコーディング
response.setContentType( "テキスト/ HTML;のcharset = UTF-8");「):解決する応答の歪みデータ
二、HttpServletRequestのクライアント情報を取得します
getRequestURL():リソース要求の完全なパスを取得します。
getRequestURI():リソースへのアクセス部分パス
getQueryStringは()メソッドは、リクエストラインのパラメータ部分を返します。
getRemoteAddr():要求元クライアントのIPを取得します。
getRemotePort():クライアントを要求するポートを取得します。
getRemoteHost():要求しているクライアントの名前を取得します。
getLocalAddr():IP Webサーバを返します。
getLocalName():Webサーバのホスト名を返します。
getMethod()メソッド:クライアント要求のモードを返します。
三つは、ヘッダ情報の取得要求します
request.getHeader(名前); //リクエストヘッダ名に対応する単一の値の値を取得します
request.getHeaders(「同意エンコード」)を、ヘッドの値に対応する//同じ名前の要求を複数取得し、設定値、リターン列挙型
request.getHeaderNames(); //リクエストヘッダ名のすべての値を取得するには、また、取得するためのHTTPリクエストをよれば、順次素子、取得された値に対応する名前値を列挙トラバーサルをデータ列挙のデータ型を返しますすべての情報ヘッダ
実行します。
/ **
*ヘッダを取得します
* /
文字列headValue = request.getHeader(「同意エンコード」); //は、リクエストヘッダ名の値に対応する単一の値を取得
するSystem.out.println(headValueを)。
列挙E = request.getHeaders(「なAccept-エンコーディング」); // ヘッドの値に対応する同じ名前の要求を複数取得し、設定値、戻り型列挙
/ **
*データを横断する
* /
ながら(e.hasMoreElementsを()){
//列挙に格納されている各要素反復
)文字列値=(文字列)e.nextElementを(;
のSystem.out.println(値); //値を出力
}
/ **
*すべてのリクエストヘッダを取得します情報
* /
列挙request.getHeaderNames ER =(); //すべての値名要求がヘッダを取得
しながら(er.hasMoreElementsを()){
文字列名=(文字列)er.nextElement();
文字列値= request.getHeader(名前);
のSystem.out.println(名+ "=" +値);
}
第四に、クライアントのリクエストパラメータを取得します
getParameter(名):パラメータ値指定した名前を取得します。これは、最も一般的に使用される方法の一つです。
getParameterValues(文字列名):パラメータの名前を指定し、配列内のすべての値を取得します。これは、パラメータ値の複数の名前に対応する場合にも適用されます。フォームのチェックボックス内のページとして、複数選択リストの値を提出しました。
getParameterNamesメソッド():Enumerationオブジェクト要求メッセージに含まれるすべてのパラメータの名前を返します。Enumerationオブジェクトを横断することにより、あなたは情報のリクエストパラメータ名をすべて取得することができます
)getParameterMapを(:地図は、すべてのパラメータの名前とメッセージの値を保存したオブジェクト要求を返します。キー・マップ・オブジェクトは、値は、このパラメータの値は、対応するObject型の配列であり、パラメータ名の文字列型です。
第五に、様々な経路を取得します
request.getRealPath()このメソッドは、もはや方法があるのではなく、使用することをお勧めします:
でrequest.getSession()。のgetServletContext()。getRealPath()
...でrequest.getSession()のgetServletContext()getRealPath( "/"); Webプロジェクトの完全なパスを取得
要求.getContextPath()に、プロジェクトのルートディレクトリを返しTomcatのルートの下には空である、構成がローカルでない場合、アプリケーションコンテキスト、また、空の戻り構成の値を返すように配置され、逆に
PS:設定ファイルを読み込むためのJavaの道
モード1:のServletContext読み取り、実パスの設定ファイルを読み、[ファイルストリームによって読み出さ。
ですので のServletContextは ファイルパスを読んで、設定ファイルが中に配置することができ WEB-INF の クラスの ディレクトリ、あなたがですることができ 、アプリケーションレベル および WEB-INF ディレクトリ。Eclipseプロジェクト内の特定のパフォーマンスファイルの格納場所は次のとおりです。 また、ウェブルートのウェブ情報の下に配置することなどができ、SRCの下に配置することができます。
パスがファイルを読み取ることストリームによって読み取られるので、XML構成ファイルは、任意のおよびプロパティを含む読み取ることができます。 短所:サーブレットは、構成情報を読み取るために外側に適用することはできません。
String realPath = getServletContext().getRealPath(path);
InputStreamReader reader =new InputStreamReader(new FileInputStream(realPath),"utf-8");
オプション2:のResourceBundleクラスの構成情報を読み取ります
利点は以下のとおりです。リソースは、直接読み出し方式の完全修飾クラス名にロードすることができ、およびリソースファイルは、非Webアプリケーションで読み取ることができます。
短所:唯一の負荷クラスのリソースファイルの下のクラス、およびファイルのみを.propertiesファイル読み取ることができます。
/**
* 获取指定.properties配置文件中所以的数据
* @param propertyName
* 调用方式:
* 1.配置文件放在resource源包下,不用加后缀
* PropertiesUtil.getAllMessage("message");
* 2.放在包里面的
* PropertiesUtil.getAllMessage("com.test.message");
* @return
*/
public static List<String> getAllMessage(String propertyName) { // 获得资源包 ResourceBundle rb = ResourceBundle.getBundle(propertyName.trim()); // 通过资源包拿到所有的key Enumeration<String> allKey = rb.getKeys(); // 遍历key 得到 value List<String> valList = new ArrayList<String>(); while (allKey.hasMoreElements()) { String key = allKey.nextElement(); String value = (String) rb.getString(key); valList.add(value); } return valList; }
三つの方法:読み取り構成情報のClassLoaderの方法を使用して
利点は次のとおりです。あなたは、非Webアプリケーションで構成リソース情報を読み取ることができ、あなたは任意のファイルリソース情報を読み取ることができます。
短所:唯一の負荷クラスクラスリソースファイルの下。
/**获取的是classes路径下的文件
* 优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息
* 缺点:只能加载类classes下面的资源文件。
* 如果要加上路径的话:com/test/servlet/jdbc_connection.properties
*/
private static void use_classLoador(){ //获取文件流 InputStream is=TestJava.class.getClassLoader().getResourceAsStream("message.properties"); //获取文件的位置 String filePath=TestJava.class.getClassLoader().getResource("message.properties").getFile(); System.out.println(filePath); }
方法4:getResouceAsStream
XmlParserHandler.class.getResourceAsStreamはクラスローダは現在のクラスに比べて使用されている点で異なります。
方法5:PropertiesLoaderUtilsツール
PropertiesLoaderUtilsの春のオファーはあなたが直接、ファイルベースのリソースをクラスパスに対処プロパティをロードすることができます。
最大の利点は、このです:すぐに再起動せずに、変更後の効果的なリアルタイムの負荷プロファイル、。
private static void springUtil(){ Properties props = new Properties(); while(true){ try { props=PropertiesLoaderUtils.loadAllProperties("message.properties"); for(Object key:props.keySet()){ System.out.print(key+":"); System.out.println(props.get(key)); } } catch (IOException e) { System.out.println(e.getMessage()); } try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } }
参考: