jspでjavaコードを記述した後にhtmlをどのように使用するか、ajaxを使用する際の注意点

8360 ワード

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String name = "jiseong";
	String[] nameArr = {"userA", "userB", "userC"};
	System.out.println(name);
	pageContext.setAttribute("nameArr", nameArr);	//pageContext 스코프를 열어 담는다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp에서 java 사용 후 jstl 사용 방법</title>
</head>

<body>
	<h2>하이요 ^^</h2>
	<c:if test="${name eq 'jiseong' }">		<!-- pageContext스코프에 담긴 키값으로 사용. -->
		yes
	</c:if>
	<select>
		<c:forEach items="${nameArr }" var="name" varStatus="status">
			<option value="${status.index }">${name }</option>
		</c:forEach>
	</select>
	
	<c:forEach items="${nameArr }" var="name" varStatus="status">
		<input type="radio" value="${status.index }" name="nameRD" id="rd_${status.index }" ${status.first == true ? "checked" :""}>
		<label for="rd_${status.index }">${name }</label>
	</c:forEach>
</body>
</html>

ブラウザがレンダリングされると、まずjavaが読み込まれます.
jstlを使用して、「動的」割り当ての値を読み出します.
このメソッドは、ページが最初に開いたときに1回のみ実行されます.

長所


ファーストスクリーンのレンダリング速度が速い.
JavaScriptがなくても、一番少ないページが最初に読み込まれても問題ありません.

短所


動的に変更するには、毎回ページをリフレッシュします.

解決策


クリックやリンクなどのアクティビティで、
変更が必要な場合はajax非同期で画面を描く方法があります.
したがって、最初のページのロード時に表示するデータの量が大きい場合、
jstlを使用してスクリーンを描くのは初めてです.
ダイナミックスクリーンの一部を変更する必要がある場合はajaxを使用します.
二つの技術を十分に利用し,バランスを保たなければならない.

ajax非同期を使用する場合...


注意事項1


最初の画面を描くとき、ダイナミックスクリーンの変更を描くときなど.
Ajaxですべての問題を解決するとしたら??
1.何百ものデータは問題ありません.でも.
より多くのサービスを実行すると、ページの完了に要する時間が増加します.(サービス応答速度が遅くなる)
2.1ページには必ずJavaScriptコードがたくさんあります.
ボタンをクリックしたらどうする?あの...
この場合、最初のページのinitではどうしますか...
コードが多くなって長くなる?=「メンテナンスが困難」

注意事項2


非同期関数は同期関数とは独立しています.
関数の開始時間は同じですが、終了時間は異なります.
したがってajaxが返す値を使用することができます.
続けたいですか?
無条件成功:function(){};関数#カンスウ#
次に関数を呼び出します.
これをasync:falseに変換し、同期関数として値を与えます.
報われるようなばかなことをしてはいけない.
+関数の戻りは常に正しい値を返さなければなりません.
if(...){
	return alert("error...");	//이와 같은 return은 undefined를 리턴하는 애매모호한 코드가 된다.
}

따라서

alert("error...");
return false;

와 같이 명확한 값을 리턴하게 하고,
명확한 값을 주고 받는 코드를 작성하게 노력하자.

n/a.結論


最初の画面を描画する必要がある場合:メニュー、フィルタなどのデータベースから値を抽出して描画する場合、jstl
その後、ページのダイナミックスクリーンを変更する必要がある場合:ajax
厳格なJavaScriptを使用します.