`
加州板栗
  • 浏览: 26586 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2+DAO+ExtJS 框架征程才开始_step1

阅读更多

   最近开始着手struts2的学习,版本是struts-2.0.6,倒腾了一个多月了,零零散散的,想法一直在改变,起先就是想做个普通的信息管理系统,用struts2+JSP,接着发现web页面太丑,我不会界面操作,对于html语言也只是停留在简单的能看,想起来以前接触过ExtJs,哎呀 ,现成的界面做好调用就可以岂不快哉,说干就干下了个ext-2.0.2., 一晚上加一上午加一下午终于调通了,暂时可以把数据利用DAO的方式简单的从mysql5.1里提取然后显示在Ext的表格(grid)上了==! 似不似很丢人

效果图如下:

 好吧,我想你看出来了我是个小菜鸟,原谅我吧 ,我有大牛的梦想的啦,有兴趣的话看看我接下来的具体实施吧,其实还是很纠结的

开发工具 MyEclipse5.5.1,部署如下:

 

DAO模式 连接数据库

package DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

// 连接数据库,配置数据库
public class DAOBase implements DAO {
    public Connection getConnection()  {  
		String connectURL = "jdbc:mysql://localhost/test";
		String user = "root";
		String password = "123";
		try{
		Class.forName("com.mysql.jdbc.Driver");// 加载驱动程序
		Connection connection = DriverManager.getConnection(connectURL, user, password);

        return connection;
		}catch (SQLException e) {
			e.printStackTrace();
		}catch (Exception e) {
			e.printStackTrace();

		}
		return null;
			
    }
   
}

 struts2作为图文表现层,使模型和动作分开,Employee.java模型类

package entity;

public class Employee {
    private int id;
    private String firstName;
    private String lastName;

    public Employee() {
    }

    public Employee(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    
    //转化为JSON格式
    public String toString() {
        return "{id:" + id +
        	",firstName:'" + firstName +
            "',lastName:'" + lastName +
            "'}";
    }
}

 EmployeeActioin.java动作类

package entity;
import entity.Employee;
import entity.EmployeeManager;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import java.util.List;
import com.opensymphony.xwork2.ModelDriven;

// 使用ModelDriven拦截器
public class EmployeeAction extends ActionSupport implements Preparable,ModelDriven{
	private static final long serialVersionUID = 1L;

	private Employee employee;

	private int employeeId;

	private List<Employee> employees;
	

//ModelDriven拦截器自动调用的方法
	public Object getModel(){
		return employee;
	}
//Prepable拦截器自动调用的方法	
    public void prepare() throws Exception {
        if (employeeId == 0) {
            employee = new Employee();
        } else {
            employee = EmployeeManager.find(employeeId);
        }
    }
	
//	set、get方法
	public int getEmployeeId() {
		return employeeId;
	}

	public void setEmployeeId(int employeeId) {
		this.employeeId = employeeId;
	}

	public List<Employee> getEmployees() {
		return employees;
	}

	public Employee getEmployee() {
		return employee;
	}

	public void setEmployee(Employee employee) {
		this.employee = employee;
	}

	public void setEmployees(List<Employee> employees) {
		this.employees = employees;
	}

//方法
	public String list() {
		employees = EmployeeManager.getEmployees();
		return SUCCESS;
	}

	public String create() {
		EmployeeManager.create(employee);
		return SUCCESS;
	}

	public String edit() {
		return SUCCESS;
	}

	public String update() {
		EmployeeManager.update(employee);
		employees = EmployeeManager.getEmployees();
		return SUCCESS;
	}

	public String delete() {
		EmployeeManager.delete(employeeId);
		employees = EmployeeManager.getEmployees();
		return SUCCESS;
	}
	
}

 页面显示的关键类EmployeeDAOMySQLImpl.java,截取关键的search方法用于执行sql语句提取数据库数据填充对象Employee对象,放入List<Employee>中储存,并返回。。

public List<Employee> searchEmployees(EmployeeSearchCriteria searchCriteria)
			throws DAOException {

		List<Employee> employees = new ArrayList<Employee>();
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;

		// Build the search criterias
		StringBuilder criteriaSql = new StringBuilder(512);
		criteriaSql.append(SEARCH_EMPLOYEES_SQL);
		if (searchCriteria.getFirstName() != null) {
			criteriaSql.append("firstName LIKE '%"
					+ DBUtil.fixSqlFieldValue(searchCriteria.getFirstName())
					+ "%' AND ");
		}
		if (searchCriteria.getLastName() != null) {
			criteriaSql.append("lastName LIKE '%"
					+ DBUtil.fixSqlFieldValue(searchCriteria.getLastName())
					+ "%' AND ");
		}
		// Remove unused 'And' & 'WHERE'
		if (criteriaSql.substring(criteriaSql.length() - 5).equals(" AND "))
			criteriaSql.delete(criteriaSql.length() - 5,
					criteriaSql.length() - 1);
		if (criteriaSql.substring(criteriaSql.length() - 7).equals(" WHERE "))
			criteriaSql.delete(criteriaSql.length() - 7,
					criteriaSql.length() - 1);

		try {

			/*
			 * 注意和上述几种方法中的 PreparedStatement比较,此处用的是statement
			 */
			connection = getConnection();
			statement = connection.createStatement();
			// System.out.println(criteriaSql.toString());
			resultSet = statement.executeQuery(criteriaSql.toString());
			while (resultSet.next()) {
				Employee employee = new Employee();
				employee.setId(resultSet.getInt("id"));
				employee.setFirstName(resultSet.getString("firstName"));
				employee.setLastName(resultSet.getString("lastName"));
				employees.add(employee);
				System.out.println("运行到employee.toString():"+ employee.toString());
			}

			resultSet.close();
			statement.close();
		} catch (SQLException e) {
			throw new DAOException();
		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {
			}
		}
		System.out.println("运行到searchEmployees(……)" + employees);
		return employees;
	}

此时employees里存储了从底层数据库提取的数据,格式是:

[{id:1,firstName:'hu',lastName:'ying'}, {id:2,firstName:'gan',lastName:'likun'}]

可是Ext能够读取的格式是json的,如下:

{employee:[{id:1,firstName:'hu',lastName:'ying'}, {id:2,firstName:'gan',lastName:'likun'}]}

困扰了很久的难点就在这儿,于是在参考了《深入浅出Ext JS》的基础下,我决定红圈圈里动刀子了

 list.jsp

<%@ page contentType="application/json;charset=utf-8" import="entity.*" %><%
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    out.print("{employee:"+EmployeeManager.getEmployees()+"}");
    System.out.println("运行到list.jsp   "+"{employee:"+EmployeeManager.getEmployees()+"}");
%>

 student.js

Ext.onReady(function() {

    Ext.QuickTips.init();

    var StudentRecord = Ext.data.Record.create([
        {name: 'id', type: 'int'},
        {name: 'firstName', type: 'string'},
        {name: 'lastName', type: 'string'}
    ]);

    var store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({url: './list.jsp'}),
        reader: new Ext.data.JsonReader({
            root: 'employee'
        },StudentRecord),
        remoteSort: true
    });
    store.load({params:{start:0,limit:15}});

    var columns = new Ext.grid.ColumnModel([
        {header: '编号', dataIndex: 'id'},
        {header: '姓氏', dataIndex: 'firstName'},
        {header: '名称', dataIndex: 'lastName'}
    ]);
    columns.defaultSortable = true;

    // grid start
    var grid = new Ext.grid.GridPanel({
        title: '学生信息列表',
        region: 'center',
        loadMask: true,
        store: store,
        cm: columns,
        sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
        viewConfig: {
            forceFit: true
        },
        bbar: new Ext.PagingToolbar({
            pageSize: 15,
            store: store,
            displayInfo: true
        })
    });
    // grid end


    // 单击修改信息 start
    grid.on('rowclick', function(grid, rowIndex, event) {
        var record = grid.getStore().getAt(rowIndex);
        form.getForm().loadRecord(record);
        form.buttons[0].setText('修改');
    });
    // 单击修改信息 end

    // layout start
    var viewport = new Ext.Viewport({
        layout: 'border',
        items: [{
            region: 'north',
            contentEl: 'head'
        }, grid]
    });
    // layout end
});

 

 于是小攻告成,有了开始的那个久违的画面 ,时间仓促,讲解不详细,等我大功告成的时候再补全咯

我未来的设想结果是这个样子滴,就是多加个表单(Form)


  • 大小: 41.8 KB
  • 大小: 51.9 KB
  • 大小: 18 KB
  • 大小: 42 KB
0
2
分享到:
评论

相关推荐

    Struts2+DAO+ExtJs做的一个简单登录程序

    这个简单的登录程序结合了Struts2、DAO和ExtJS的优势,实现了用户界面的交互和后端数据的验证与处理。下面将详细介绍这三个技术及其在登录程序中的应用: 1. **Struts2框架**: - **Action和Result**:Struts2的...

    Hibernate+Spring+Struts2+ExtJS整合开发实例

    在"Hibernate+Spring+Struts2+ExtJS整合开发实例"中,开发者通常会利用这些框架的协同工作来实现CRUD(Create, Read, Update, Delete)操作,这是数据库应用的基本功能: 1. **创建(Create)**: 用户通过ExtJS的...

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能

    在构建一个基于`Hibernate+Spring+Struts2+ExtJS`的CRUD应用时,首先需熟悉各框架的基本特性和安装环境。 1. **Hibernate**:作为对象关系映射(ORM)工具,它简化了Java应用与数据库的交互过程。对于3.x版本,主要...

    比较流行的框架模式(Hibernate+Spring+Struts2+ExtJS)

    标题中的"Hibernate+Spring+Struts2+ExtJS"是一个经典的Java Web开发框架组合,也被称为SSH2(Struts2, Spring, Hibernate)与ExtJS的集成。这个组合在过去的几年里广泛应用于企业级应用开发,提供了强大的数据持久...

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例

    在IT行业中,构建Web应用程序是常见的任务,而“Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例”提供了一个完整的解决方案,用于快速开发基于Java的Web应用,特别是涉及数据库操作的CRUD(创建、读取、更新、删除...

    Struts2+Hibernate+Crud+For_Extjs用户管理程序

    Struts2、Hibernate和CRUD(Create, Read, Update, Delete)是Java Web开发中的核心框架和技术,而ExtJS则是一种流行的JavaScript库,用于构建富客户端应用。这个"Struts2+Hibernate+Crud+For_Extjs用户管理程序"是...

    Struts2+hiberante+Spring+Extjs+OA办公系统,完整包

    Struts2、Hibernate、Spring、ExtJS 和 OA(Office Automation)办公系统的整合是企业级Java应用开发中的常见架构,这个组合通常被称为SSH2E。这是一个强大的框架集合,用于构建高效、可扩展且易于维护的企业级应用...

    EXTJS4+STRUTS2+JAVA增删改查

    EXTJS4、STRUTS2和JAVA是Web开发中常用的三大技术框架,它们结合使用可以构建功能丰富的交互式用户界面和高效的企业级应用。在这个"EXTJS4+STRUTS2+JAVA增删改查"的例子中,我们将深入探讨这三个技术如何协同工作,...

    ExtJs + Struts2 + JSON 程序总结

    ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...

    spring3+ibaits3+struts2.18+Extjs3整合增删查改

    Struts2是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架,用于构建动态、交互式的Web应用。Struts2.18是该框架的一个稳定版本,提供了一系列增强的特性,如拦截器、插件体系、强大的结果类型和模板引擎。在...

    评测系统(struts2 + hibernate + spring + extjs + oracle)

    本系统采用Struts+Spring+...既采用Oracle数据库的坚强数据核心,又结合Struts+Spring+Hibernate框架的稳定性和实用性,还吸取Extjs的美丽外观,不论是稳定性、实用性、操作性还是界面的华丽性都有着不俗的表现。

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能.doc

    其中,Hibernate负责持久层的操作,Spring作为控制反转(IoC)容器管理整个系统的对象,Struts2作为MVC框架处理用户请求,而ExtJS则提供了丰富的用户界面组件,使得整个系统不仅具备强大的后端处理能力,同时也拥有...

    struts2+extjs+json整合实例

    Struts2、ExtJS和JSON是Web开发中的三个关键技术,它们在构建动态、交互式的Web应用程序时发挥着重要作用。下面将详细介绍这三个技术及其整合过程。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式...

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能最新版lib[Zone Yan]

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能最新版lib[Zone Yan] 2个小时才找全的啊。

    struts2+Hibernate3.3+spring2.5.6+extjs3.2 图书管理系统

    本系统采用了一套经典的Java技术栈,即Struts2作为MVC框架、Hibernate3.3作为持久层框架、Spring2.5.6作为依赖注入框架,以及ExtJS3.2作为前端展示库,来实现高效、便捷的图书信息管理和用户交互。 1. Struts2:...

    struts2+spring+hibernate+extjs实例(音乐播放器)

    这是一个基于Java技术栈的Web应用实例,名为"音乐播放器",它综合运用了Struts2、Spring和Hibernate三大框架,并结合了前端的ExtJS库。这个实例对于想要深入理解Java Web开发的人来说极具价值,因为它涵盖了后端业务...

Global site tag (gtag.js) - Google Analytics