日期:2014-05-16  浏览次数:20532 次

Struts2和ExtJS的整合示例

ExtJS是一个开发RIA的利器,在这里,将写一个Struts2和ExtJS整合的示例,以方便广大的开发者,学习者。。。

约定:

1、为了开发方便,不使用数据访问。

2、为了稍微体现一点分层思想,设置控制器层和业务逻辑层。

3、该示例的功能是使用ExtJS和JSON格式数据在JSP页面中显示一个表格,该表格将显示一些用户信息数据。用户信息数据直接来自编写的程序代码。

4、整个事例的开发结构图如下:

?

开发步骤:

以分层思想的开发步骤编写相应的代码。

第一步:导入相关的开发包,ExtJS库文件,配置web.xml文件,详细设置省略。(友情提示:使用了json-lib)

第二步:编写相应的实体类User.java,如下:

package com.wgs.pojo;

import java.io.Serializable;

public class User implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 949408143352061092L;
	private int id;
	private String name;
	private String gender;
	private int age;

	public User() {

	}

	public User(int id, String name, String gender, int age) {
		this.id = id;
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", gender=" + gender
				+ ", age=" + age + "]";
	}

}
?

第三步:编写相应的Service业务逻辑层代码UserService.java,如下:

package com.wgs.service;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;

import com.wgs.pojo.User;

public class UserService {

	public List<User> findAll() {
		List<User> list = new ArrayList<User>();
		User u1 = new User(1001, "Wgssmart", "男", 21);
		User u2 = new User(1002, "Jane", "女", 21);
		User u3 = new User(1003, "Tom", "男", 21);
		User u4 = new User(1004, "Lily", "女", 21);
		User u5 = new User(1005, "Lucy", "女", 21);
		User u6 = new User(1006, "Jim", "男", 21);
		list.add(u1);
		list.add(u2);
		list.add(u3);
		list.add(u4);
		list.add(u5);
		list.add(u6);
		return list;
	}
	
	public String getAllJson() {
		return "{rows:" + JSONArray.fromObject(findAll()).toString() + "}";
	}
}

?第四步:编写相应的Action代码,UserAction.java,如下:

package com.wgs.action;

import com.wgs.service.UserService;

public class UserAction {

	private String jsonUser;

	public UserAction() {

	}

	public void setJsonUser(String jsonUser) {
		this.jsonUser = jsonUser;
	}

	public String getJsonUser() {
		return jsonUser;
	}
	
	public String execute() {
		System.out.println("Hello");
		UserService us = new UserService();
		System.out.println(us.getAllJson());
		setJsonUser(us.getAllJson());
		return "success";
	}
	
}

?第五步:配置struts.xml文件,详细配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
	<package name="user" namespace="/user" extends="struts-default">
		<action name="listUser" class="com.wgs.action.UserAction">
			<result name="success" type="dispatcher">/user_list.jsp</result>
		</action>
	</package>
</struts>

?第六步:编写相应的ExtJS代码,作用是发送一个Ajax请求调用Struts框架中的Action,Action将返回JSON格式的用户信息数据,ExtJS将JSON格式的用户信息数据显示到Ext的表格组件中。如下:

SimpleGrid = function(config) {
	Ext.apply(this, config);
	this.colModel = new Ext.grid.ColumnModel( {
		defaults : {
			align : "center",
			sortable : true,
			menuDisabled : true,
			width : 120
		},
		columns : [ {
			header : "编号",
			dataIndex : "id"
		}, {
			header : "姓