1:ソートにはいくつかの方法がありますか?高速のJSで並べ替え
ソート方法:バブリング、選択し、速い放電、二分法、排気スタック、
2:JSは、Ajaxの非同期要求手順を実装しました
- 1 XMLHttpRequestオブジェクトを作成します。
<スクリプト言語= "JavaScriptの"タイプ= "テキスト/ JavaScriptを"> のvarのXMLHttpRequest; //は、のXMLHttpRequestオブジェクト格納する変数定義関数 createXMLHttpRequestを(){ // のXMLHttpRequestオブジェクトのメソッドを作成IF(window.ActiveXObject){ // IEブラウザは、かどうかを決定する
のXMLHttpRequestが = 新しい新しい ActiveXObject( "Microsoft.XMLHTTP")を; //は、のXMLHttpRequestオブジェクトIEブラウザを作成
} 他のiF(window.XMLHttpRequest){ //はかどうかNetscapeのサポートのような他のブラウザは、アセンブリのXMLHttpRequestを判定するある
XMLHttpRequestを = 新しい新しいのXMLHttpRequest(); //
XMLHttpRequestオブジェクトは、他のブラウザ上に作成される
}
}
createXMLHttpRequst(); / / オブジェクトを作成するメソッドを呼び出す
</スクリプト>
- 2 httpリクエストを作成します。
XMLHttpRequest.open(メソッド、URL、フラグ、名前、パスワード)
方法:このパラメータは、HTTPリクエストメソッド、総GET、POST、頭、PUT、削除の5つのメソッド、GETとPOSTのために一般的に使用される方法を指定するために使用されます。
URL:このパラメータは、HTTPリクエストのURLを指定し、絶対URL、または相対URLであってもよいです。
フラグ:このパラメータはオプションで、Booleanパラメータです。このパラメータは、非同期モードかどうかを指定します。非同期モード、虚偽の表現同期モードに真、デフォルトはtrueです。
注:Webサーバー上のHTMLファイルは、NetscapeブラウザでJavaScriptのセキュリティはマシンのホスト外部との通信を許可されていない場合。言い換えれば、open()メソッドを使用するだけで、同じサーバー上のHTMLファイルを使用してファイルを開くことができます。IEブラウザでは(あなたは、他のサーバー上のファイルを開くことができますが、警告があるでしょうが)、この制限はありません。
- 3 HTTPリクエストの状態変化の応答関数で提供され
HTTPリクエストを作成したら、WebサーバーにHTTPリクエストを送信することができるはずです。しかし、目的は、サーバーが返すデータから受信したHTTPリクエストを送信することです。データを送信するためにXMLHttpRequestオブジェクトを作成することによって起動し、データを受信し、のXMLHttpRequestオブジェクトは、次の5つの州で合計経験になります。
⑴初期化されていない状態。0のときのXMLHttpRequestオブジェクトのreadyStateのプロパティ値を初期化状態にあるのXMLHttpRequestオブジェクトを作成し終えました。
⑵初期化状態。XMLHttpRequestオブジェクトを作成した後、オープンを使用する場合()メソッドは、HTTPリクエストを作成し、オブジェクトが初期化状態です。このとき、1のはXMLHttpRequestオブジェクトのreadyStateプロパティの値。
送信データの状態を⑶。物体2のXMLHttpRequestオブジェクトの今回のreadyStateプロパティの値で、送信データの状態にあるときにデータを送信するための送信()メソッドを使用して初期化XMLHttpRequestオブジェクト後。
⑷データ状態を受けます。Webサーバの完了データを受信して処理した後、クライアントは、返された結果を送信します。この場合には、データ状態XMLHttpRequestオブジェクト、readyStateのXMLHttpRequestオブジェクトの属性値3を受け取ります。
⑸完了状態。XMLHttpRequestオブジェクトの完了が完了状態にデータを受け取った後、その後のreadyStateプロパティが4のXMLHttpRequestオブジェクトです。このとき、メモリに格納されたデータは、クライアントコンピュータに受信されている、またはデータを取得するためのresponseXML responseTextプロパティの属性を使用することができます。
上記の手順が完了した後、XMLHttpRequestオブジェクトは、サーバーから返されたデータを取得することができます。そのため、サーバから返されたデータを取得するために、あなたは最初のXMLHttpRequestオブジェクトの状態を決定する必要があります。
// 場合関数名がかっこ追加しないように注意のXMLHttpRequestオブジェクトの状態が変化し、関数が呼び出さセット XMLHttpRequest.onreadystatechangeは= ;のgetDataを // 定義関数 関数のgetData() { // 場合readyStateのプロパティ値は、のXMLHttpRequestオブジェクト4か否かを判断します図4は、非同期呼び出しが完了表す IF(XMLHttpRequest.readyState == 4 ) { // データを取得するために、文の集合を } }
- 4セット、サーバー文によって返されたデータを取得します
readyStateのXMLHttpRequestのオブジェクト属性の値が4に等しい場合、非同期呼び出しの処理が終了する指示、データがのresponseXML responseTextプロパティまたはのXMLHttpRequestオブジェクトのプロパティによって取得することができます。
あなたは、非同期呼び出しが成功したかどうかを判断するために、ほかのXMLHttpRequestオブジェクトのプロパティ値のステータスを確認したい場合は、非同期呼び出しプロセスが完了し、非同期呼び出しが成功したことを意味するものではありません、プロパティはわずか200で、それは非同期呼び出しを表して成功しているので、取得しますサーバは、データステートメントを返し、次のコードに示すように、最初に決定されなければならないのXMLHttpRequestオブジェクトの状態属性値は、200に等しいです。
IF(== 200 xmlHttpRequst.statusある) { // 次の文は、文字列としての結果出力を返す のdocument.write(xmlHttpRequest.responseText); // またはステートメントを使用してXMLとして結果出力を返す // のdocument.write (xmlHttpRequest.responseXML); } //注:HTMLファイルをWebサーバー上で実行されているが、ローカルで実行されていない場合は、xmlHttpRequest.statusは0を返します。ファイルがローカルで実行されている場合ので、あなたはxmlHttpRequest.status追加する必要があり == 裁判官のゼロ。 次のコードに示すように応答し//複数のコードは、典型的には、HTTPリクエストボディの状態の変化の関数である: // 関数がのXMLHttpRequestオブジェクトの状態の変化と呼ばれるセット、関数名がかっこ追加しないように注意 XMLHttpRequest.onreadystatechange = のgetDataと、 // 関数の定義 関数のgetData() { //示す4への非同期呼び出しの完了した場合のXMLHttpRequestオブジェクトのreadyStateプロパティの値を分析することは、4である IF(XMLHttpRequest.readyState == 4 ) { // 状態200が示す取得した設定文データを=サーバは、成功応答結果が正しい返し IF( || xmlHttpRequest.status == == 200 xmlHttpRequest.status 0 ) { // 次の文は、文字列としての結果出力を返す のdocument.write(xmlHttpRequest.responseText); // またはステートメントを使用してXMLとして結果を返します出力 // docunment.write(xmlHttpRequest.responseXML); } } }
- 5 HTTPリクエスト
上記の手順を設定した後、あなたが上がるWebサーバーにHTTPリクエストを送信することができます。次のようにXMLHttpRequestオブジェクトのsend()メソッドを使用してHTTPリクエストを送信することができ、コードの構文は次のとおりです。
XMLHttpRequest.send(データ)
データは、それがnullの代わりに使用することができる、すなわちURLへのGETリクエストで書かれている場合、前記データは、オプションのパラメータです。リクエストがPOSTの場合、フォーマットデータ及びパラメータは、同様にURLパラメータの送信のために、次のコード()データの例示的な方法のパラメータを渡す形式:
名前=がmyName&値= myValue
jqueryのAJAX呼び出し要求
$アヤックス({ URL: タイプ: '' 、 データ型: '' 、 データ:{ }、 成功:関数(){ }、 エラー:関数(){ } })
3:ファイル番号の文字列「ABC」から見つけるためにプログラムを書く見えます
公共の 静的な 無効メイン(文字列[] args)を{ ファイルファイル = 新しいファイル( "C:\\ユーザー\\ボーン\\デスクトップ\\ ajax.ddas" ); BufferedReaderのリーダー = NULL ; トライ{ 読者が = 新しい BufferedReaderの(新しいFileReaderの(ファイル))。 StringBuilderのStringBuilderの = 新しいStringBuilderの(); 文字列tempString = nullを。 // 一次读一行、读入ヌル时文件结束 しばらく((tempString = reader.readLine())!= nullを){ // のThread.sleep(500)。 System.out.println(tempString)。 もし(tempString == NULL ){ ブレーク。 } stringBuilder.append(tempString)。 } )(reader.close。 パターンのパターン = Pattern.compile( "X" )。 マッチャーマッチャー = pattern.matcher(のStringBuilder)。 int型のカウント= 0 ; 一方、(matcher.find()){ カウント ++ 。 } System.out.println(カウント)。 } キャッチ(例外e){ e.printStackTrace(); } 最後に{ 場合(リーダー!= NULL ){ 試み{ reader.close()。 } キャッチ(IOExceptionをE1){ e1.printStackTrace()。 } } } }
4:一般的に使用されているコントローラのspringmvcノート、コメントには他の選択肢はありませんか?クラスアクションでノートを@RequestMapping
@ResponseBody:プロセスに作用し、ResponseBody結果@メソッドの戻りが直接HTTPレスポンスボディで書かれていることを示しています
@Controller:容器SpringMvcにスキャンし、インスタンス化する、唯一の制御層を表します
@RestController:制御層の代表、各メソッドの効果で追加され、デフォルトの@ResponseBody
クラスの役割を持つ@RequestMapping注釈:親として要求クラスに応じて、すべてのメソッドを表すクラスには、アドレス・パスに基づいています。
5:springMvcは、お互いを呼び出すとどのようにAJAX
パラメータデータ伝送の1のHttp二つのモード
のURIパラメータ送信
uriパラメータアドレスに書き込まれたデータは、クエリパラメータとしてすることができ、パラメータは、一般的に要求複数の方法を取得する経路であってもよいです。
長所:TCPの伝送パラメータは、サーバ、スピードに渡すことができます。
短所:露光パラメータを直接ブラウザにして、安全でありません。
渡すパラメータボディ
本体部材に書き込まれたデータパラメータは、コンテンツタイプフォーマットの様々なものがある:JSON、XML、フォームデータ一般的な方法より後の要求。
長所:比較的安全、サイズ制限なし。
短所:2つのTCP送信、最初の送信ヘッド、二次転写体。
上記のポストとを得る。なお、与えられた農業の私たち自身のコードのパラメータを渡す方法だけ、のように実際には、URIパラメータ渡しを使用し得る、本体のみの質量の参加とそのポストを言っていない、あなたは、URIにポストを追加することができますあなたは、読み取り身体データを解析するのに役立ちますいくつかのサーバ、およびいくつかのサーバ:パラメータが、あなたはまた、身体パラメータが道を得るが、そうするために、仕様を満たしていない、と多くのサーバーのような一定の分析方法、からの仕様に従っている追加することができます直接あなたがリクエストボディをGETすることができますが、そう、無視されますが、受信することが保証されていません。ここでは、ポストの違いだと記事を取得します。https://www.cnblogs.com/logsharing/p/8448446.htmlよく書かれています。
2.は、HTTPの方法を要求
、我々はいくつかの一般的に使用されるHTTPリクエストのRestful取得する方法、ポスト、プット、パッチ、下の知って我々は最初に明確にする必要があり、HTTP要求がある限り、フロントエンドの髪のバックエンドとして、規範規範にだけの方法であります実際にも、ポストの機能を終了しますされ行うには、ポストのことを行うように求めます来ます。
それはとても異なる界面での書き込みAPIへのバックエンドの開発者は、我々は現在のメソッドのHTTPリクエストメソッドの遵守に注意を払う必要があり、このための仕様です。たとえば、このAPIの登録ユーザは、(実際にはバックエンドがGET方法を使用して達成することができますが、この仕様ではないという理由だけでの非冪等の操作をあるデータベース、ポストを使用する自然な方法にユーザーを作成することですお勧めします)。最終的な分析は、http前面との相互作用の後端は、我々は特定の仕様の制約内で動作するバックエンドHTTPメソッドを実装する方法を見ている要求モードで、どのようにHTTPデータ交換フォーマットを定義する方法ルートを定義します。
リクエストの種類を見て、私たちの下に一つの方法。
リソースへのアクセスを取得
作成されたリソースは、POST
(なし作成、更新がある)リソースを作成または更新するために入れて
、そのような意図PUT /アイテム/ 1と/アイテム/ 1を交換することで、交換用に作成されて存在していませんがあります。
だから、PUTメソッドは、一般的に知られているリソースを更新するために使用されます。
パッチの更新リソースの一部
削除しますリソース
異なるデータ形式の3.conten型や注意事項の
アプリケーション/ JSON(この形式でaxiosポストのデフォルト)
我々は非常に精通していることは、JSONデータ形式で、ネットワークストリームJSON形式は、次のような文字列に符号化される:{「KEY1」:「値1 」、「KEY2」:「値2」}
アプリケーション/ X-WWW-フォーム- URLエンコード
ネイティブ形式フォーマットはブラウザを構成しますが、enctype属性を設定しない場合は、その後、最終的には、application / x-www-フォーム-にデータを提出する URLエンコード方法。データは、合わせて提出KEY1 VAL1&KEY2 VAL2方法==最後にネットワーク・フローの形式に類似した文字列に符号化され、鍵およびvalは、URLトランスコーディングが行われる符号化:タイトル=試験&副%5B %5D = 1&副% 図5B%5D = 2&副% 5B%5D = 3
マルチパート/フォームデータ
ネイティブ形式フォーム形式は、上記の差が、これはいずれかのキーと値のペアはまた、ファイルをアップロードするために使用することができ通過可能であり、またブラウザです。我々はファイルをアップロードするためのフォームを使用するときは、この値に等しいenctypedの形をしましょう必要があります。
特定の形式のために、私たちはその要求の例を見て:
各境界のための鍵ペアは、実際には、テキスト、PNGであり得る異なるタイプのデータを複数含んでいてもよい
、バイナリストリーム。
差MyBatisのマッパーファイル$ {} {}と#:6
名前はジョー・スミスをIF =
違い:
「ジョン・ドウ」の#{名前}結果、一重引用符が追加され、プリコンパイラは、#{}によって置換されている場合?シンボルは、パラメータ設定タイプを有する大部分のSQLインジェクションを回避することができます。
$ {name}の張の結果は、リスクのSQLインジェクションがあります。
$記号は、一般的に、直接、多くの場合、それをより深く理解している必要がありますLinuxのにこのスクリプトを使用して、に翻訳、プレースホルダとして使用されています。それはプレースホルダであるため、当然のことながら、それは交換のために使用されます。
悪質な例のSQLインジェクション
select * from ${tableName} where name = #{name} 在这个例子中,如果表名为 user; delete user; -- 则动态解析之后 sql 如下: select * from user; delete user; -- where name = ?; --之后的语句被注释掉,而原本查询用户的语句变成了查询所有用户信息+删除用户表的语句,会对数据库造成重大损伤,极大可能导致服务器宕机。
用${}传输数据库的表名、字段名示例
<select id="getUser" resultType="java.util.Map" parameterType="java.lang.String" statementType="STATEMENT"> select ${columns} from ${tableName} where COMPANY_REMARK = ${company} </select>
要实现动态调用表名和字段名,就不能使用预编译了,需添加statementType="STATEMENT"
statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。这里显然不能使用预编译,要改成非预编译。
因为${}是将传入的参数直接显示生成sql,如${xxx}传入的参数为字符串数据,需在参数传入前加上引号,如:
String name = "sprite"; name = "'" + name + "'";
总结:
1、能用#{}的地方尽量别用${}
2、${}一般用于传输数据库的表名、字段名等
7:Spring里面事物如何配置
8:请说一些你使用spring时,用到了spring的哪些功能一级用过spring和其他哪些服务集成
9:mybatis.xml文件的标签列举
10:为什么说mybatis是半自动的orm映射工具?与全主动的区别在哪里
11:讲一下mybatis的缓存
12:如何通过springmcv发布restful服务,不同的httpmethod下,如何接收参数
13:描述restful与Ajax的区别
14: