利用Struts2和ExtJs开发系统

一、首先从数据库说起

     1、证明有记录存在时

           选用Oracle时,可以用rownum>1,而不需要查询出所有数据。

           选用MySQL时,由于没有rownum可以用,所以 select ...  where .. limit 1   代替。

     2、mysql字符集问题

           创建数据库时要指定utf-8编码,这样不用去修改my.ini文件。

             CREATE DATABASE leshr DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

           这样一来在cmd命令行模式下查询显示乱码

              这样解决:set names gbk;

     3、mysql 主键问题

              用uuid()函数生成

二、c3p0连接池的使用

    

public class DbPoolUtil {
	private static DbPoolUtil instance;
	private static ComboPooledDataSource ds;
	private DbPoolUtil() {
		try {
			ds = new ComboPooledDataSource();
			ds.setUser("root");
			ds.setPassword("sa");
			ds.setJdbcUrl("jdbc:mysql://localhost:3306/leshr");
			ds.setDriverClass("com.mysql.jdbc.Driver");
			ds.setInitialPoolSize(2);
			ds.setMinPoolSize(1);
			ds.setMaxPoolSize(10);
			ds.setMaxStatements(50);
			ds.setMaxStatementsPerConnection(50);			ds.setMaxIdleTime(60);
		} catch (PropertyVetoException e) {
			System.out.println("加载数据库失败!");
			e.printStackTrace();
		}
	}
	public static final DbPoolUtil getInstance() {
		if (instance == null) {
			instance = new DbPoolUtil();
		}
		return instance;
	}
	public synchronized final Connection getConnection() {
		Connection conn = null;
		try {
			conn = ds.getConnection();
		} catch (SQLException e) {
			System.out.println("获取数据库连接失败!");
			e.printStackTrace();
		}
		return conn;
	}

}

 三、Struts2-Json-Plugin的使用

      1、首先看下action是如何写的

    POJO类:

public class Hr_appl {
	private String LA_ID;
	private String LA_PID;
	private int LA_ORDER;
	private String LA_NAME;
	private String LA_URL;
	private String LA_OPTION;
	private String LA_PARAM;
	private String LA_DESC;

                .....省略getter setter
}

 

 Dao类:

	public List<Hr_appl> getAll(Connection conn) throws Exception {
		List<Hr_appl> list = new ArrayList<Hr_appl>();
		String sql = "select * from HR_APPL";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		while (rs.next()) {
			Hr_appl appl = new Hr_appl();
			appl.setLA_DESC(rs.getString("LA_DESC"));
			appl.setLA_ID(rs.getString("LA_ID"));
			appl.setLA_NAME(rs.getString("LA_NAME"));
			appl.setLA_OPTION(rs.getString("LA_OPTION"));
			appl.setLA_ORDER(rs.getInt("LA_ORDER"));
			appl.setLA_PARAM(rs.getString("LA_PARAM"));
			appl.setLA_PID(rs.getString("LA_PID"));
			appl.setLA_URL(rs.getString("LA_URL"));
			list.add(appl);
		}
		rs.close();
		return list;
	}

 

action类:

public class AppListAction extends ActionSupport {
	private List appls;
	private int totalCount;
	public int getTotalCount() {
		return appls.size();
	}
	public List getAppls() {
		return appls;
	}
	public void setAppls(List appls) {
		this.appls = appls;
	}
	@Override
	public String execute() {
		Hr_applDao dao = new Hr_applDaoImpl();
		Connection conn = DbPoolUtil.getInstance().getConnection();
		try {
			appls = dao.getAll(conn);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return SUCCESS;
	}

}

 

   2、再配置struts.xml

	<constant name="struts.devMode" value="true" />
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<package name="extjs" extends="json-default">
		<action name="appList" class="com.njit.action.AppListAction">
			<result type="json"></result>
		</action>
	</package>

   3、看ExtJs前台如何使用

var store = new Ext.data.JsonStore({
	url : "appList.action",   		//strus2请求
           root : "appls",            		//和action类中的变量对应
	totalProperty : "totalCount",  		//和action类中的变量对应
	autoLoad : true,
	fields : ["LA_NAME", "LA_ID", "LA_ORDER", "LA_OPTION","LA_URL", "LA_DESC"]
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值