签到管理
- 建立数据库Activiting Students
Activiting
序号 |
字段 |
描述 |
类型和长度 |
主键 |
可空 |
默认值 |
1 |
A_R_id |
活动进行id |
int |
是 |
否 |
无(自增) |
2 |
A_S_id |
学生学号 |
varchar(12) |
是 |
否 |
无 |
3 |
A_status |
活动预约状态(1.预约成功 2.扫码签到 3.后台确认学生签到) |
int |
否 |
是 |
无 |
4 |
A_grade |
分数(1:优秀 2:通过 3:未通过) |
int |
否 |
是 |
无 |
5 |
A_devicecode |
设备识别码 |
varchar(255) |
否 |
是 |
无 |
6 |
A_level |
级别 |
int |
否 |
是 |
无 |
7 |
A_firsttime |
第一次时间 |
datetime |
否 |
是 |
无 |
8 |
A_secdevicecode |
第二次设备识别码 |
varchar(255) |
否 |
是 |
无 |
9 |
A_secondtime |
第二次时间 |
datetime |
否 |
是 |
无 |
10 |
A_thirddevicecode |
第三次设备识别码 |
varchar(255) |
否 |
是 |
无 |
11 |
A_thirdtime |
第三次时间 |
datetime |
否 |
是 |
无 |
12 |
A_fourdevicecode |
第四次设备识别码 |
varchar(255) |
否 |
是 |
无 |
13 |
A_fourtime |
第四次时间 |
datetime |
否 |
是 |
无 |
学生表 Students
序号 |
字段 |
描述 |
类型和长度 |
主键 |
可空 |
默认值 |
1 |
s_id |
学生id |
int |
是 |
否 |
无(自增) |
2 |
s_studentId |
学生学号 |
varchar(12) |
是 |
否 |
无 |
3 |
s_name |
学生姓名 |
varchar(255) |
否 |
是 |
无 |
4 |
s_sex |
性别(0位男生,1位女生) |
tinyint |
否 |
是 |
无 |
5 |
s_school |
学校 |
varchar(255) |
否 |
是 |
无 |
6 |
s_college |
所在学院 |
varchar(255) |
否 |
是 |
无 |
7 |
s_profession |
所在专业 |
varchar(255) |
否 |
是 |
无 |
8 |
s_class |
所在班级 |
varchar(255) |
否 |
是 |
无 |
9 |
s_classtype |
所在班级类型 |
varchar(255) |
否 |
是 |
无 |
10 |
s_jobstatus |
班级内担任职务 |
varchar(255) |
否 |
是 |
无 |
11 |
s_tutor |
学生导师 |
varchar(255) |
否 |
是 |
无 |
12 |
s_phone |
学生手机号 |
varchar(15) |
否 |
是 |
无 |
13 |
s_idcard |
学生身份证号 |
varchar(18) |
否 |
是 |
无 |
14 |
s_password |
密码 |
varchar(255) |
否 |
是 |
无 |
15 |
s_createTime |
创建时间 |
datetime |
否 |
是 |
无 |
16 |
s_changeTime |
最近一次修改信息时间 |
datetime |
否 |
是 |
无 |
17 |
s_picture |
学生照片 |
varchar(255) |
否 |
是 |
无 |
18 |
s_token |
token号 |
varchar(255) |
否 |
是 |
无 |
19 |
s_tokenendtime |
token保存到期时间 |
datetime |
否 |
是 |
无 |
- 在web工程里反向工程
- 然后在applicationContext.xml添加映射
<value>org/model/Activiting.hbm.xml</value>
<value>org/model/Students.hbm.xml</value>
- 在informationlist.jsp页面添加签到管理按钮
<button onClick="qiandao(${res.RId})" type="button" class="btn btn-primary btn-xs"> <span>签到管理</span>
</button>
- 给button添加点击是事件 onclick(qiandao($res.Rid))
function qiandao(id) {
var url = "stuQiandao.jsp?actid=" + id;
window.location.href = url;
}
- 由于要知道点击的活动编号,所以通过res.rid获取到了相应的活动信息
- 在webAction.java申明一个int变量actid用来保存临时变量,并生成get set方法
private int actid;//活动的编号
- 添加stuQiandao.jsp页面
Js:①jquery,②bootstrap3,③datatables的js,④datatables对应bootstrap样式 Css:①bootstrap3,②datatables对应bootstrap样式 我把这些样式都放在了 jules的文件夹里了 <link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet"> <link href="jules/css/dataTables.bootstrap.css" rel="stylesheet"> <script src="jules/js/jquery.min.js?v=2.1.4"></script> <script src="jules/js/bootstrap.min.js?v=3.3.6"></script> <script src="jules/js/jquery.dataTables.js"></script> <script src="jules/js/dataTables.bootstrap.js"></script> 这些是使用datable这个插件需要引用到的文件
var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");//用了正则表达式
var matcher = pattern.exec(url);//用来匹配对应的 RegExp 对象方法
decodeURIComponent() 对编码后的 URI 进行解码
组合在一起: function getUrlParam(url, name) { var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g"); var matcher = pattern.exec(url); var items = null; if (matcher != null) { try { items = decodeURIComponent(decodeURIComponent(matcher[1])); } catch (e) { try { items = decodeURIComponent(matcher[1]); } catch (e) { items = matcher[1]; } } } return items; }
var url = window.location; var deleteid = getUrlParam(url, 'actid');
这个#datatable1是这个table的id var left1 = $('#datatable1').DataTable({ destory : true,//重新布置 searching : true,//启动搜索功能 bLengthChange : true,//是否允许用户,在下拉列表自定义选择分页大小(10, 25, 50 and 100),默认就是true ordering : false,//不启用排序 bScrollInfinite : true,//开启内置滚动条,并且显示所有数据 bScrollCollapse : true,//当设置sScrolly时 如果数据没那么高 表格是否自适应高度 ajax : "toActqiandao.action?actid=" + deleteid, aoColumns : [ { "data" : "id" }, { "data" : "name" }, { "data" : "college" }, { "data" : "clasz" }, { "data" : "iphone" } ], } ); 这里的id name college clasz iphone是从ajax里获取到的数据:
<!-- 查看活动签到信息--> <action name="toActqiandao" class="webAction" method="toActqiandao"> <result type="json" name="success"> <param name="root">s</param> </result> </action>
private List<Map<String, Object>> activitingslist = new ArrayList<Map<String, Object>>(); ActRecordDao actRecordDao;并生成get set方法
<bean id="actRecordDaoImp" class="web.dao.imp.ActRecordDaoImp"> <propertyname="sessionFactory" ref="mysessionFactory"></property></bean> <property name="teacherDao" ref="teacherDaoImp"></property> <property name="relationDao" ref="relationDaoImp"></property> <property name="addressDao" ref="addressDaoImp"></property> <property name="activityDao" ref="activityDaoImp"></property> <property name="actRecordDao" ref="actRecordDaoImp"></property> </bean>
public interface ActRecordDao { List<Map<String, Object>> findActqiandao(int actid); }
public class ActRecordDaoImp extends HibernateDaoSupport implements ActRecordDao { @SuppressWarnings({ "unchecked", "unused" }) public List<Map<String, Object>> findActqiandao(int id) { Session ssn = getSession(); Query query = ssn.createQuery( "from Activiting a where A_devicecode=null and A_secdevicecode=null and A_thirddevicecode=null" + " and A_fourdevicecode=null and A_status=1 and a.id.ARId=" + id); List<Activiting> l = query.list(); ssn.close(); List<Map<String, Object>> listg = new ArrayList<>(); if (l != null && l.size() > 0) { int len = l.size(); Map<String, Object> map; List<Students> list = null; Object[] values = new Object[len]; StringBuilder sb = new StringBuilder(); for (int j = 0; j < len; j++) { values[j] = l.get(j).getId().getASId(); if (j != len - 1) { sb.append("?,"); } else { sb.append("?"); }} list = getHibernateTemplate().find("FROM Students t WHERE t.id.SStudentId IN (" + sb.toString() + ")", values); if (list != null && list.size() > 0) { for (Activiting a : l) { for (Students stu : list) { if (stu.getId().getSStudentId().equals(a.getId().getASId())) { map = new HashMap<String, Object>(); map.put("id", stu.getId().getSStudentId()); map.put("name", stu.getSName()); map.put("college", stu.getSCollege()); map.put("clasz", stu.getSClass()); map.put("iphone", stu.getSPhone()); listg.add(map); }}}}} return listg;}}
public String toActqiandao() { activitingslist = actRecordDao.findActqiandao(actid); s = JSONTools.createJsonObject("data", activitingslist); return "success"; }
|
效果: