SAStruts(Super Agile Struts)あれこれ
AjaxでJSONデータを取得しましょう
目次
- 序
- 改
- 1.JSONIC(JSONエンコーダー/デコーダーライブラリ)を配置
- 2.アクションクラス
- sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java (変更)
- 3.JSP
- sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp (変更)
- 結
序
SAStruts+Ajax+jQueryを試してみましょう。ここでは、jQueryのAjax機能を使用してアクションクラスを呼び出し、レスポンスとして返されるJSON形式の部署情報を表示しましょう。
ここでは、例を単純にするためにアクションフォームを使用しません。
改
1.JSONIC(JSONエンコーダー/デコーダーライブラリ)を配置
Entityインスタンス→JSON形式への変換にはJSONICを使用します。
JSONICからダウンロードした"jsonic-1.0.2.jar"を sa-struts-tutorial\src\main\webapp\WEB-INF\libフォルダにコピーします。
ライブラリのバージョンは適宜読み替えて下さい。
[プロジェクト] -> [プロパティ]でプロパティウインドウを開きます↓
↑の[Javaのビルド・パス]を選択して[JARの追加]ボタンをクリックします。
"jsonic-1.0.2.jar"を選択して[OK]ボタンをクリックすればOKです。
アクションクラス
"sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java"を以下のように変更します。
package tutorial.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
import tutorial.entity.Department;
import tutorial.service.DepartmentService;
import net.arnx.jsonic.JSON;
public class AjaxAction {
@Resource
protected DepartmentService departmentService;
public List<Department> deptItems;
@Execute(validator = false)
public String index() {
return "index.jsp";
}
@Execute(validator = false)
public String load_json() throws IOException {
//データベースから部署データを全件取得します。
deptItems = departmentService.findAll();
HttpServletResponse httpServletResponse = ResponseUtil.getResponse();
httpServletResponse.setContentType("application/json");
PrintWriter sendPoint = new PrintWriter(httpServletResponse.getOutputStream());
//Entity→JSON形式に変換して出力します。
sendPoint.println(JSON.encode(deptItems));
sendPoint.flush();
sendPoint.close();
return null;
}
}
※補足
String json = JSON.encode(deptItems);によって、Entityのリストは以下のようなJSON形式データに変換されます。
[{"employeeList":null,"id":1,"name":"ACCOUNTING","version":1},
{"employeeList":null,"id":2,"name":"RESEARCH","version":1},
{"employeeList":null,"id":3,"name":"SALES","version":1},
{"employeeList":null,"id":4,"name":"OPERATIONS","version":1}]
JSP
"sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp"を以下の内容に変更します。
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Ajax</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
<script src="${f:url('/js/jquery.js')}"></script>
</head>
<body>
<h1>Tutorial: Ajax</h1>
<script type="text/javascript">
function loadJSON() {
$.ajax({
url: '${f:url('/ajax/load_json')}',
type: 'GET',
dataType: 'json',
cache: false, //ブラウザにキャッシュさせません。
error: function(){
alert("jsonファイルの読み込みに失敗しました");
},
success: function(json){
$("#response").html("部署数:" + json.length + "<br/>")
for( var i=0; i<json.length; i++ ) {
$("#response").append("部署名:" + json[i].name + "<br/>").html()
}
}
});
}
</script>
<input type="button" value="部署情報取得" onclick="loadJSON()"/>
<div id="response"></div>
</body>
</html>
結
http://localhost:8080/sa-struts-tutorial/ajax/にアクセスしましょう。以下の画面が表示されますので、
「部署情報取得」ボタンをクリックしましょう。以下のように部署情報が表示されます。
アップロードしたファイル
- tomcat_eclipse.jpg
- tomcat_eclipse2.jpg
- after_import.jpg
- start_tomcat.jpg
- import_1.jpg
- create_db_user.jpg
- create_table.jpg
- employee_mod1.jpg
- er1.jpg
- joincolumnser.jpg
- employee_add1.jpg
- employee_add2.jpg
- employee_add3.jpg
- employee_add4.jpg
- employee_del1.jpg
- employee_del2.jpg
- employee_del3.jpg
- employee_token1.jpg
- employee_token2.jpg
- employee_token3.jpg
- employee_page1.jpg
- index_page.jpg
- minus_action_1.jpg
- minus_action_2.jpg
- employee_hsqldb1.jpg
- emp_blk_add1.jpg
- emp_blk_add2.jpg
- emp_blk_add3.jpg
- emp_blk_add4.jpg
- emp_blk_add5.jpg
- hello_project1.jpg
- hello_project2.jpg
- hello_project3.jpg
- hello_project4.jpg
- hello_project5.jpg
- tiles1_1.jpg
- tiles1_2.jpg
- tiles1_3.jpg
- tiles1_4.jpg
- tutorial_db_er.jpg
- mysql_entity1.jpg
- mysql_entity2.jpg
- mysql_entity3.jpg
- mysql_entity4.jpg
- mysql_entity5.jpg
- mysql_entity6.jpg
- mysql_entity7.jpg
- mysql_entity8.jpg
- mysql_entity9.jpg
- mysql_entity10.jpg
- download_file1.jpg
- up.gif
- ajax_pattern1_1.jpg
- ajax_pattern1_2.jpg
- ajax_pattern2_2.jpg
- ajax_pattern2_1.jpg
- emp_blk_upd1.jpg
- emp_blk_upd2.jpg
- emp_blk_upd3.jpg
- emp_blk_upd4.jpg
- emp_blk_upd5.jpg
- ajax_json_1.jpg
- ajax_json_2.jpg
- ajax_json_3.jpg
- ajax_json_4.jpg
- ajax_json_5.jpg
- gen_eclipse1_1.jpg
- gen_eclipse1_2.jpg
- gen_eclipse1_3.jpg
- gen_eclipse1_4.jpg
- gen_eclipse1_5.jpg
- blk_add_vali_1.jpg
- blk_add_vali_2.jpg
- blk_add_vali_3.jpg
- blk_add_vali_4.jpg
- super1_1__1.jpg
- super1_1__2.jpg
- super1_1__0.jpg
- super1_1__3.jpg
- gen_fileheader1.jpg
- super1_1__4.jpg
- supersample2-1_1.jpg
- supersample2-1_2.jpg
- supersample2-1_3.jpg
- supersample2-1_4.jpg
- previewimage.jpg
- previewimage2.jpg
- supersample2-1_5.jpg
- supersample2-2_1.jpg
- supersample2-2_4.jpg
- supersample2-2_2.jpg
- supersample2-2_3.jpg
- supersample2-2_5.jpg
- supersample2-4_1.jpg
- supersample2-4_2.jpg
- supersample2-4_3.jpg
- supersample2-4_4.jpg
- supersample2-4_5.jpg
- supersample2-5_1.jpg
- supersample2-5_2.jpg
- supersample2-5_3.jpg
- supersample2-5_4.jpg
- supersample2-5_5.jpg
- supersample2-5_6.jpg
- supersample2-6_1.jpg
- supersample2-6_2.jpg
- supersample2-6_4.jpg
- supersample2-6_5.jpg
- supersample2-6_3.jpg
- supersample2-7_1.jpg
- supersample2-7_2.jpg
- blk_upd_reset_1.jpg
- blk_upd_reset_2.jpg
- blk_upd_reset_3.jpg
- blk_upd_reset_4.jpg
- blk_upd_reset_5.jpg
- supersample1-6_1.jpg
- supersample1-6_2.jpg
- supersample1-6_3.jpg
- supersample1-6_4.jpg
- supersample1-6_5.jpg
- supersample1-6_6.jpg
- supersample1-7_1.jpg
- supersample1-7_2.jpg
- supersample1-7_3.jpg
- supersample1-7_4.jpg
- supersample1-7_5.jpg
- supersample1-7_6.jpg
- supersample1-4_1.jpg
- supersample1-4_2.jpg
- supersample1-4_3.jpg
- supersample1-4_4.jpg
- supersample1-4_6.jpg
- supersample1-4_7.jpg
- supersample1-4_5.jpg
- pre_db_sample1.jpg
- pre_db_sample2.jpg
- pre_db_sample3.jpg
- pre_db_sample4.jpg
- pre_db_sample5.jpg
- supersample1-8_1.jpg
- supersample1-8_2.jpg
- supersample1-8_3.jpg
- supersample1-8_4.jpg
- supersample1-8_6.jpg
- supersample1-8_5.jpg
- more_s2jdbc_1.jpg
- more_s2jdbc_2.jpg
- more_s2jdbc_3.jpg
- more_s2jdbc_4.jpg
- t_safe_search1_1.jpg
- t_safe_search1_2.jpg
- t_safe_search2_1.jpg
- t_safe_search2_2.jpg
- project_websrv_1.jpg
- project_websrv_3.jpg
- ws_1address_1.jpg
- flexbuilder_1.jpg
- flexbuilder_2.jpg
- flexbuilder_3.jpg
- flexbuilder_4.jpg
- flexbuilder_5.jpg
- flexbuilder_6.jpg
- flexbuilder_7.jpg
- flexbuilder_8.jpg
- flexbuilder_9.jpg
- flexbuilder_10.jpg
- flexbuilder_11.jpg
- flexbuilder_12.jpg
- flexbuilder_13.jpg
- project_flex_1.jpg
- project_flex_2.jpg
- project_flex_3.jpg
- project_flex_4.jpg
- project_flex_5.jpg
- project_flex_8.jpg
- project_flex_7.jpg
- project_flex_6.jpg
- flex_emp_list_1.jpg
- flex_emp_list_2.jpg
- flex_emp_lst_e_1.jpg
- flex_emp_add_1.jpg
- flex_emp_add_2.jpg
- flex_emp_add_3.jpg
- flex_emp_add2_1.jpg
- flex_emp_add2_2.jpg
- flex_emp_add2_3.jpg
- flex_upload_1.jpg
- flex_upload_2.jpg
- tcpmon_1.jpg
- tcpmon_2.jpg
- tcpmon_3.jpg
- tcpmon_4.jpg
- flex_upload2_1.jpg
- flex_upload2_2.jpg
- flex_upload2_3.jpg
- flex_emp_del_1.jpg
- flex_emp_del_2.jpg
- flex_emp_del_3.jpg
- flex_emp_spr_1.jpg
- flex_emp_spr_2.jpg
- flex_emp_spr_3.jpg
- flex_grid_chk1_1.jpg
- flex_grid_chk1_2.jpg
- flex_grid_chk1_3.jpg
- flex_bulk_del_1.jpg
- flex_bulk_del_2.jpg
- flex_bulk_del_3.jpg
- flex_dd_grid1_1.jpg
- flex_dd_grid1_2.jpg
- flex_dd_grid1_3.jpg
- blazeds_setup_1.jpg
- s2blaze_proj_1.jpg
- s2blaze_proj_2.jpg
- s2blaze_proj_3.jpg
- s2blaze_proj_4.jpg
- s2blaze_proj_5.jpg
- s2blaze_proj_6.jpg
- s2blaze_proj_7.jpg
- s2blaze_proj_8.jpg
- s2blaze_proj_9.jpg
- blaze_emplist1_1.jpg
- blaze_emplist2_1.jpg
- blaze_emplist2_2.jpg
- blaze_emp_add_1.jpg
- blaze_emp_add_2.jpg
- blaze_emp_add_3.jpg
- blaze_fms1_1.jpg
- blaze_fms1_2.jpg
- blaze_fms2_1.jpg
- project_batch_1.jpg
- supersample2-3_1.jpg
- supersample2-3_2.jpg
- supersample2-3_3.jpg
- supersample2-8_1.jpg
- supersample2-8_2.jpg
















