【SSH项目实战】国税协同平台-4.用户管理需求分析&CRUD方法1
2015-12-07 19:29
1056 查看
开发系统用户管理的模块
我们有用户的功能说明书,打开功能说明书来看看这个模块需要什么功能:
功能说明
用户管理:可以根据用户名查询系统用户;在页面中点击“新增”可以添加用户、点击删除可以批量删除选中的用户。“导出”则导出所有的用户列表到excel文件中并弹出下载提示框给用户下载;“导入”将需要用户将本地的用户列表按照一定格式将excel中的用户导入到系统中(导入用户的密码默认为123456)。在用户列表中显示用户名、帐号、所属部门、性别、电子邮箱、操作;其中操作列中包括编辑、删除两个功能;点击“编辑”则编辑用户信息,删除则删除该用户。
编辑用户:编辑用户的所属部门(部门A/B)、用户名、帐号、密码、性别、角色(一般用户、管理员)、手机号码、电子邮箱、生日、备注。
我们的角色分配以后在进行讲解,这次我们主要做user的单表增删改查。
我们新建一个实体类user:
[java] view
plaincopy
package cn.edu.hpu.tax.user.entity;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable{
private String id;
private String name;
private String account;
private String password;
//所属部门
private String dept;
//头像(相对地址)
private String headImg;
//性别
private boolean gender;
private String email;
private String mobile;
//备注
private String memo;
private Date birthday;
private String state;
//用户状态
public final static String USER_STATE_VALID = "1";//有效
public final static String USER_STATE_INVALID = "0";//无效
public User() {
}
public User(String id, String name, String account, String password, String dept, String headImg, boolean gendar, String email, String mobile, String memo, Date birthday, String state) {
this.id = id;
this.name = name;
this.account = account;
this.password = password;
this.dept = dept;
this.headImg = headImg;
this.gender = gendar;
this.email = email;
this.mobile = mobile;
this.memo = memo;
this.birthday = birthday;
this.state = state;
}
//get与set方法省略
}
接下来写我们的映射文件:
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.edu.hpu.tax.user.entity.User" table="user">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="uuid.hex" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="dept" type="java.lang.String">
<column name="dept" length="20" not-null="true" />
</property>
<property name="account" type="java.lang.String">
<column name="account" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
<property name="headImg" type="java.lang.String">
<column name="headImg" length="100" />
</property>
<property name="gender" type="java.lang.Boolean">
<column name="gender" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="50" />
</property>
<property name="mobile" type="java.lang.String">
<column name="mobile" length="20" />
</property>
<property name="birthday" type="java.util.Date">
<column name="birthday" length="10" />
</property>
<property name="state" type="java.lang.String">
<column name="state" length="1" />
</property>
<property name="memo" type="java.lang.String">
<column name="memo" length="200" />
</property>
</class>
</hibernate-mapping>
接下来编写我们的Dao层:
[java] view
plaincopy
package cn.edu.hpu.tax.user.dao;
import cn.edu.hpu.tax.core.dao.BaseDao;
import cn.edu.hpu.tax.user.entity.User;
public interface UserDao extends BaseDao<User>{
}
实现类:
[java] view
plaincopy
package cn.edu.hpu.tax.user.dao.impl;
import cn.edu.hpu.tax.core.dao.impl.BaseDaoImpl;
import cn.edu.hpu.tax.user.dao.UserDao;
import cn.edu.hpu.tax.user.entity.User;
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{
}
接下来写我们的Service业务层:
[java] view
plaincopy
package cn.edu.hpu.tax.user.service;
import java.io.Serializable;
import java.util.List;
import cn.edu.hpu.tax.user.entity.User;
public interface UserService {
//新增
public void save(User user);
//更新
public void update(User user);
//根据id删除
public void delete(Serializable id);
//根据id查找
public User findObjectById(Serializable id);
//查找列表
public List<User> findObjects();
}
实现类:
[java] view
plaincopy
package cn.edu.hpu.tax.user.service.impl;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.edu.hpu.tax.user.dao.UserDao;
import cn.edu.hpu.tax.user.entity.User;
import cn.edu.hpu.tax.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService{
@Resource
private UserDao userDao;
@Override
public void save(User user) {
userDao.save(user);
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public void delete(Serializable id) {
userDao.delete(id);
}
@Override
public User findObjectById(Serializable id) {
return userDao.findObjectById(id);
}
@Override
public List<User> findObjects() {
return userDao.findObjects();
}
}
记下来写我们的Action层:
首先来分析,一个CRUD的Action中包含:
(1)列表页面
(2)跳转到新增页面
(3)保存新增
(4)跳转到编辑界面
(5)保存编辑
(6)删除
(7)批量删除
所以:
[java] view
plaincopy
package cn.edu.hpu.tax.user.action;
import java.util.List;
import javax.annotation.Resource;
import cn.edu.hpu.tax.user.entity.User;
import cn.edu.hpu.tax.user.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
@Resource
private UserService userService;
private List<User> userList;
private User user;
//列表页面
public String listUI(){
userList=userService.findObjects();
return "listUI";
}
//跳转到新增页面
public String addUI(){
return "addUI";
}
//保存新增
public String add(){
if(user!=null){
userService.save(user);
}
return listUI();
}
//跳转到编辑界面
public String editUI(){
if(user!=null && user.getId()!=null){
user=userService.findObjectById(user.getId());
}
return "editUI";
}
//保存编辑
public String edit(){
if(user!=null){
userService.update(user);
}
return listUI();
}
//删除
public String delete(){
if(user!=null && user.getId()!=null){
userService.delete(user.getId());
}
return listUI();
}
//批量删除
public String deleteSelected(){
return listUI();
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
基础的我们都写完了,以后需要添加新的代码,我们暂时先写这些。
加下来写我们User的user-struts.xml和user-spring.xml配置文件:
先在总的spring配置文件中加:
[html] view
plaincopy
<!-- 用来注入sessionFactory的抽象类 -->
<bean id="xDao" abstract="true">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
然后编写user-spring.xml:
[html] view
plaincopy
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 继承了注入sessionFactory的抽象类,不用反复出入sessionFactory -->
<bean id="userDao" class="cn.edu.hpu.tax.user.dao.impl.UserDaoImpl" parent="xDao"></bean>
<!-- 扫描Service -->
<context:component-scan base-package="cn.edu.hpu.tax.user.service.impl"></context:component-scan>
</beans>
接下来配置struts的配置文件user-struts.xml:
[html] view
plaincopy
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user-action" namespace="/tax" extends="struts-default">
<action name="user_*" class="cn.edu.hpu.tax.user.action.UserAction" method="{1}">
<result name="{1}">/WEB-INF/jsp/tax/user/{1}.jsp</result>
</action>
</package>
</struts>
然后将user-struts.xml加入到总配置文件中:
[html] view
plaincopy
<!-- 包含user的struts配置文件 -->
<include file="cn/edu/hpu/tax/user/conf/user-struts.xml"/>
至此我们后台全部工作完成。
接下来将美工给我们的前台页面引入(js/css/jsp/),因为我们每一个jsp页面都要使用一些相同的js和css,所以我们先把这些引入写在一个header中,然后在每个页面头部引用它,就可以防止代码冗余,同时使修改更容易:
heander.jsp(放在了common文件夹下):
[html] view
plaincopy
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
pageContext.setAttribute("basePath", request.getContextPath()+"/") ;
%>
<script type="text/javascript" src="${basePath}js/jquery/jquery-1.10.2.min.js"></script>
<link href="${basePath}css/skin1.css" rel="stylesheet" type="text/css" />
我们在其他所有需要引入这些配置的页面使用静态引入:
[html] view
plaincopy
<%@include file="/common/header.jsp" %>
我们的用户列表界面:
[html] view
plaincopy
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户管理</title>
<%@include file="/common/header.jsp" %>
<script type="text/javascript">
//全选、全反选
function doSelectAll(){
// jquery 1.6 前
//$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked"));
//prop jquery 1.6+建议使用
$("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked"));
}
</script>
</head>
<body class="rightBody">
<form name="form1" action="" method="post" enctype="multipart/form-data">
<div class="p_d_1">
<div class="p_d_1_1">
<div class="content_info">
<div class="c_crumbs"><div><b></b><strong>用户管理</strong></div> </div>
<div class="search_art">
<li>
用户名:<s:textfield name="user.name" cssClass="s_text" id="userName" cssStyle="width:160px;"/>
</li>
<li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>
<li style="float:right;">
<input type="button" value="新增" class="s_button" onclick="doAdd()"/>
<input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/>
<input type="button" value="导出" class="s_button" onclick="doExportExcel()"/>
<input name="userExcel" type="file"/>
<input type="button" value="导入" class="s_button" onclick="doImportExcel()"/>
</li>
</div>
<div class="t_list" style="margin:0px; border:0px none;">
<table width="100%" border="0">
<tr class="t_tit">
<td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td>
<td width="140" align="center">用户名</td>
<td width="140" align="center">帐号</td>
<td width="160" align="center">所属部门</td>
<td width="80" align="center">性别</td>
<td align="center">电子邮箱</td>
<td width="100" align="center">操作</td>
</tr>
<tr bgcolor="f8f8f8">
<td align="center"><input type="checkbox" name="selectedRow" value=""/></td>
<td align="center">xxx</td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center">
<a href="javascript:doEdit(id)">编辑</a>
<a href="javascript:doDelete(id)">删除</a>
</td>
</tr>
</table>
</div>
</div>
<div class="c_pate" style="margin-top: 5px;">
<table width="100%" class="pageDown" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="right">
总共1条记录,当前第 1 页,共 1 页
<a href="#">上一页</a> <a href="#">下一页</a>
到 <input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
max="" value="1" />
</td>
</tr>
</table>
</div>
</div>
</div>
</form>
</body>
</html>
我们把项目运行之后,看一下我们这个页面:
现在还是什么都没有的状态,我们下一次完善我们的这些操作包括输出信息。
我们有用户的功能说明书,打开功能说明书来看看这个模块需要什么功能:
功能说明
用户管理:可以根据用户名查询系统用户;在页面中点击“新增”可以添加用户、点击删除可以批量删除选中的用户。“导出”则导出所有的用户列表到excel文件中并弹出下载提示框给用户下载;“导入”将需要用户将本地的用户列表按照一定格式将excel中的用户导入到系统中(导入用户的密码默认为123456)。在用户列表中显示用户名、帐号、所属部门、性别、电子邮箱、操作;其中操作列中包括编辑、删除两个功能;点击“编辑”则编辑用户信息,删除则删除该用户。
编辑用户:编辑用户的所属部门(部门A/B)、用户名、帐号、密码、性别、角色(一般用户、管理员)、手机号码、电子邮箱、生日、备注。
我们的角色分配以后在进行讲解,这次我们主要做user的单表增删改查。
我们新建一个实体类user:
[java] view
plaincopy
package cn.edu.hpu.tax.user.entity;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable{
private String id;
private String name;
private String account;
private String password;
//所属部门
private String dept;
//头像(相对地址)
private String headImg;
//性别
private boolean gender;
private String email;
private String mobile;
//备注
private String memo;
private Date birthday;
private String state;
//用户状态
public final static String USER_STATE_VALID = "1";//有效
public final static String USER_STATE_INVALID = "0";//无效
public User() {
}
public User(String id, String name, String account, String password, String dept, String headImg, boolean gendar, String email, String mobile, String memo, Date birthday, String state) {
this.id = id;
this.name = name;
this.account = account;
this.password = password;
this.dept = dept;
this.headImg = headImg;
this.gender = gendar;
this.email = email;
this.mobile = mobile;
this.memo = memo;
this.birthday = birthday;
this.state = state;
}
//get与set方法省略
}
接下来写我们的映射文件:
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.edu.hpu.tax.user.entity.User" table="user">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="uuid.hex" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="dept" type="java.lang.String">
<column name="dept" length="20" not-null="true" />
</property>
<property name="account" type="java.lang.String">
<column name="account" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
<property name="headImg" type="java.lang.String">
<column name="headImg" length="100" />
</property>
<property name="gender" type="java.lang.Boolean">
<column name="gender" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="50" />
</property>
<property name="mobile" type="java.lang.String">
<column name="mobile" length="20" />
</property>
<property name="birthday" type="java.util.Date">
<column name="birthday" length="10" />
</property>
<property name="state" type="java.lang.String">
<column name="state" length="1" />
</property>
<property name="memo" type="java.lang.String">
<column name="memo" length="200" />
</property>
</class>
</hibernate-mapping>
接下来编写我们的Dao层:
[java] view
plaincopy
package cn.edu.hpu.tax.user.dao;
import cn.edu.hpu.tax.core.dao.BaseDao;
import cn.edu.hpu.tax.user.entity.User;
public interface UserDao extends BaseDao<User>{
}
实现类:
[java] view
plaincopy
package cn.edu.hpu.tax.user.dao.impl;
import cn.edu.hpu.tax.core.dao.impl.BaseDaoImpl;
import cn.edu.hpu.tax.user.dao.UserDao;
import cn.edu.hpu.tax.user.entity.User;
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{
}
接下来写我们的Service业务层:
[java] view
plaincopy
package cn.edu.hpu.tax.user.service;
import java.io.Serializable;
import java.util.List;
import cn.edu.hpu.tax.user.entity.User;
public interface UserService {
//新增
public void save(User user);
//更新
public void update(User user);
//根据id删除
public void delete(Serializable id);
//根据id查找
public User findObjectById(Serializable id);
//查找列表
public List<User> findObjects();
}
实现类:
[java] view
plaincopy
package cn.edu.hpu.tax.user.service.impl;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.edu.hpu.tax.user.dao.UserDao;
import cn.edu.hpu.tax.user.entity.User;
import cn.edu.hpu.tax.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService{
@Resource
private UserDao userDao;
@Override
public void save(User user) {
userDao.save(user);
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public void delete(Serializable id) {
userDao.delete(id);
}
@Override
public User findObjectById(Serializable id) {
return userDao.findObjectById(id);
}
@Override
public List<User> findObjects() {
return userDao.findObjects();
}
}
记下来写我们的Action层:
首先来分析,一个CRUD的Action中包含:
(1)列表页面
(2)跳转到新增页面
(3)保存新增
(4)跳转到编辑界面
(5)保存编辑
(6)删除
(7)批量删除
所以:
[java] view
plaincopy
package cn.edu.hpu.tax.user.action;
import java.util.List;
import javax.annotation.Resource;
import cn.edu.hpu.tax.user.entity.User;
import cn.edu.hpu.tax.user.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
@Resource
private UserService userService;
private List<User> userList;
private User user;
//列表页面
public String listUI(){
userList=userService.findObjects();
return "listUI";
}
//跳转到新增页面
public String addUI(){
return "addUI";
}
//保存新增
public String add(){
if(user!=null){
userService.save(user);
}
return listUI();
}
//跳转到编辑界面
public String editUI(){
if(user!=null && user.getId()!=null){
user=userService.findObjectById(user.getId());
}
return "editUI";
}
//保存编辑
public String edit(){
if(user!=null){
userService.update(user);
}
return listUI();
}
//删除
public String delete(){
if(user!=null && user.getId()!=null){
userService.delete(user.getId());
}
return listUI();
}
//批量删除
public String deleteSelected(){
return listUI();
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
基础的我们都写完了,以后需要添加新的代码,我们暂时先写这些。
加下来写我们User的user-struts.xml和user-spring.xml配置文件:
先在总的spring配置文件中加:
[html] view
plaincopy
<!-- 用来注入sessionFactory的抽象类 -->
<bean id="xDao" abstract="true">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
然后编写user-spring.xml:
[html] view
plaincopy
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 继承了注入sessionFactory的抽象类,不用反复出入sessionFactory -->
<bean id="userDao" class="cn.edu.hpu.tax.user.dao.impl.UserDaoImpl" parent="xDao"></bean>
<!-- 扫描Service -->
<context:component-scan base-package="cn.edu.hpu.tax.user.service.impl"></context:component-scan>
</beans>
接下来配置struts的配置文件user-struts.xml:
[html] view
plaincopy
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user-action" namespace="/tax" extends="struts-default">
<action name="user_*" class="cn.edu.hpu.tax.user.action.UserAction" method="{1}">
<result name="{1}">/WEB-INF/jsp/tax/user/{1}.jsp</result>
</action>
</package>
</struts>
然后将user-struts.xml加入到总配置文件中:
[html] view
plaincopy
<!-- 包含user的struts配置文件 -->
<include file="cn/edu/hpu/tax/user/conf/user-struts.xml"/>
至此我们后台全部工作完成。
接下来将美工给我们的前台页面引入(js/css/jsp/),因为我们每一个jsp页面都要使用一些相同的js和css,所以我们先把这些引入写在一个header中,然后在每个页面头部引用它,就可以防止代码冗余,同时使修改更容易:
heander.jsp(放在了common文件夹下):
[html] view
plaincopy
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
pageContext.setAttribute("basePath", request.getContextPath()+"/") ;
%>
<script type="text/javascript" src="${basePath}js/jquery/jquery-1.10.2.min.js"></script>
<link href="${basePath}css/skin1.css" rel="stylesheet" type="text/css" />
我们在其他所有需要引入这些配置的页面使用静态引入:
[html] view
plaincopy
<%@include file="/common/header.jsp" %>
我们的用户列表界面:
[html] view
plaincopy
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户管理</title>
<%@include file="/common/header.jsp" %>
<script type="text/javascript">
//全选、全反选
function doSelectAll(){
// jquery 1.6 前
//$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked"));
//prop jquery 1.6+建议使用
$("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked"));
}
</script>
</head>
<body class="rightBody">
<form name="form1" action="" method="post" enctype="multipart/form-data">
<div class="p_d_1">
<div class="p_d_1_1">
<div class="content_info">
<div class="c_crumbs"><div><b></b><strong>用户管理</strong></div> </div>
<div class="search_art">
<li>
用户名:<s:textfield name="user.name" cssClass="s_text" id="userName" cssStyle="width:160px;"/>
</li>
<li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>
<li style="float:right;">
<input type="button" value="新增" class="s_button" onclick="doAdd()"/>
<input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/>
<input type="button" value="导出" class="s_button" onclick="doExportExcel()"/>
<input name="userExcel" type="file"/>
<input type="button" value="导入" class="s_button" onclick="doImportExcel()"/>
</li>
</div>
<div class="t_list" style="margin:0px; border:0px none;">
<table width="100%" border="0">
<tr class="t_tit">
<td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td>
<td width="140" align="center">用户名</td>
<td width="140" align="center">帐号</td>
<td width="160" align="center">所属部门</td>
<td width="80" align="center">性别</td>
<td align="center">电子邮箱</td>
<td width="100" align="center">操作</td>
</tr>
<tr bgcolor="f8f8f8">
<td align="center"><input type="checkbox" name="selectedRow" value=""/></td>
<td align="center">xxx</td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center"></td>
<td align="center">
<a href="javascript:doEdit(id)">编辑</a>
<a href="javascript:doDelete(id)">删除</a>
</td>
</tr>
</table>
</div>
</div>
<div class="c_pate" style="margin-top: 5px;">
<table width="100%" class="pageDown" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="right">
总共1条记录,当前第 1 页,共 1 页
<a href="#">上一页</a> <a href="#">下一页</a>
到 <input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
max="" value="1" />
</td>
</tr>
</table>
</div>
</div>
</div>
</form>
</body>
</html>
我们把项目运行之后,看一下我们这个页面:
现在还是什么都没有的状态,我们下一次完善我们的这些操作包括输出信息。
相关文章推荐
- cocos2d对动画的各种操作
- 【SSH项目实战】国税协同平台-3.资源文件分类&log4j&抽取BaseAction
- ROC(Receiver Operating Characteristic)曲线简介
- 关于opencv中的imread()函数声明
- 地震数据SEGY格式介绍及其查看分析(附示例地震数据)
- java集合类
- iOS App Icon图标 尺寸规范
- VMware虚拟机主机模式上网问题
- LIS (最长上升字序列) nlgn 解法
- nginx 状态码整理
- 第二阶段 团队贡献分
- 【SSH项目实战】国税协同平台-1.项目介绍
- c++学习日志20151207
- NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be mad
- SQLNET.AUTHENTICATION_SERVICES=(NTS)
- 【SSH项目实战】国税协同平台-2.环境搭建和整合
- oracle 体系结构初步认识(一)
- 浅析Java子类和父类的实例化顺序 及 陷阱
- 线程同步(互斥锁与信号量的作用与区别)
- 标签视图控制器 UITabBarController [高度: 49]