博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
纳税服务系统【用户模块之简单增删改查】
阅读量:4314 次
发布时间:2019-06-06

本文共 8209 字,大约阅读时间需要 27 分钟。

前言

为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。

用户模块需求

拥有增删改查和导入导出到EXCEL的功能

这里写图片描述

添加用户:有了这个界面,我们就知道实体表的属性有什么了。

a


添加配置文件

每个模块都应该有自己的配置文件,这样的话就方便我们管理模块之间的功能,不用把所有的配置都写在总文件中。

因此,我们在user模块创建了一个user包,下面又创建了config包来管理配置文件

这里写图片描述

JavaBean与映射文件

JavaBean

根据上面需求要添加用户的属性,直接写就行了。

public class User implements Serializable {
private String id; private String dept; private String account; private String name; private String password; private String headImg; private boolean gender; private String state; private String mobile; private String email; private Date birthday; private String memo; public static String USER_STATE_VALID = "1";//有效, public static String USER_STATE_INVALID = "0";//无效 public User() { } public User(String id, String dept, String account, String name, String password, String headImg, boolean gender, String state, String mobile, String email, Date birthday, String memo) { this.id = id; this.dept = dept; this.account = account; this.name = name; this.password = password; this.headImg = headImg; this.gender = gender; this.state = state; this.mobile = mobile; this.email = email; this.birthday = birthday; this.memo = memo; } //各种setter和getter}

User.hbm.xml

映射文件也非常简单,因为没有关联关系字段,直接写属性就行了。

写完映射文件,记得要在Spring的总配置文件中读取映射文件…值得注意的是,用户模块专门用一个user包来管理下面的代码,这样好管理!

这里写图片描述


编写Dao

UserDao接口

/** * UserDao接口,继承着UserDao * */public interface UserDao extends BaseDao
{
}

UserDaoImpl实现类

把UserDaoImple对象添加到IOC容器中管理

注意:因为我们在BaseDao中使用的是HibernateDaoSupport这个API,因此我们在UserDao中是需要在XML配置,注入SessionFactory的。

在总配置文件中是有专门注入SessionFactory的bean配置的


/** * 继承着BaseDaoImpl实现类,就有了CRUD的方法 * 又实现了UserDao接口,那么UserDao接口就可以对User模块有相对应的补充 * * */public class UserDaoImpl extends BaseDaoImpl
implements UserDao {
}
  • 把user模块的spring配置文件添加到总配置文件中

编写Service

Service接口

/**     * Created by ozc on 2017/5/23.     */    public interface UserService {
//新增 public void save(User user); //更新 public void update(User user); //根据id删除O public void delete(Serializable id); //根据id查找 public User findObjectById(Serializable id); //查找列表 public List
findObjects(); }

UserServiceImpl

package zhongfucheng.user.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;import zhongfucheng.user.dao.UserDao;import zhongfucheng.user.entity.User;import zhongfucheng.user.service.UserService;import java.io.Serializable;import java.util.List;/** * Created by ozc on 2017/5/23. */@Servicepublic class UserServiceImpl implements UserService {
@Qualifier("userDaoImpl") @Autowired private UserDao userDaoImpl; @Override public void save(User user) { userDaoImpl.save(user); } @Override public void update(User user) { userDaoImpl.update(user); } @Override public void delete(Serializable id) { userDaoImpl.delete(id); } @Override public User findObjectById(Serializable id) { return userDaoImpl.findObjectById(id); } @Override public List
findObjects() { return userDaoImpl.findObjects(); }}

UserAction

UserAction应该根据增删改查应该有这么几个方法:

/** * 1.提供新增页面 * 2.确定新增用户方法 * 3.提供修改页面 * 4.确定修改用户方法 * 5.删除用户 * 6.批量删除用户 * 7.提供列表展示页面 * * */
package zhongfucheng.user.action;import com.opensymphony.xwork2.ActionSupport;/** * Created by ozc on 2017/5/23. *//** * 1.提供新增页面 * 2.确定新增用户方法 * 3.提供修改页面 * 4.确定修改用户方法 * 5.删除用户 * 6.批量删除用户 * 7.提供列表展示页面 * * * */public class UserAction extends ActionSupport {
public String listUI() { return null; } public String addUI() { return null; } public String editUI() { return null; } public String edit() { return null; } public String delete() { return null; } public String add() { return null; } public String deleteSelect() { return null; }}

在Struts配置文件中配置

  • 添加user模块的Struts配置文件到总配置文件中

完成美工设计页面显示

对美工给的页面进行调整

导入到项目中:

这里写图片描述

我们发现在JSP页面中,以下的代码是经常会出现的,因此我们把它封装一下:

这里写图片描述

创建一个公共文件,封装经常用到的jsp页面:

这里写图片描述

要使用的地方,直接导入就行了:

    <%@include file="/common/header.jsp"%>    用户管理

接下来只要对各个功能进行填充逻辑代码,就可以了。

添加用户UI

public String addUI() {        return "addUI";    }

效果如图所示:我们的头像和角色先不做,把其他的先做了再看看。

这里写图片描述

确定添加用户

写上我们请求的路径:

这里写图片描述

/*************注入Service************************/    @Qualifier("userServiceImpl")    @Autowired    private UserService userServiceImpl;    /************数据自动封装,给出setter和getter*************************/    private User user;    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    /************得到Service返回的数据*************************/    private List
userList; public String add() { userServiceImpl.save(user); //跳转到列表显示页面 return "list"; }
  • 配置跳转到列表显示页面的result【Action重定向的方式,防止刷新再次请求】
user_listUI
  • 效果:下面的列表展示还没有做呢,但是添加用户的效果已经做出来了。

这里写图片描述


列表展示

/************得到Service返回的数据*************************/    //这里一定要给setter和getter方法,这样JSP才能够得到属性。不然就得不到了!!!我在这里弄了很久!!!!    private List
userList; public List
getUserList() { return userList; } public void setUserList(List
userList) { this.userList = userList; } public String listUI() { userList = userServiceImpl.findObjects(); return "listUI"; }

JSP通过iterator得到数据,直接写就行了。因为Action中该属性有getter方法

"/>
)">编辑
)">删除

这里写图片描述


修改功能

这里写图片描述

public String editUI() {        //外边已经传了id过来了,我们要找到id对应的User        if (user.getId() != null && user != null) {            //直接获取出来,后面JSP会根据User有getter就能读取对应的信息!            user = userServiceImpl.findObjectById(this.user.getId());    }        return "editUI";    }
  • JSP修改用户的界面是不用显示id的,但是我们在修改用户的时候,是根据id来修改的。因此我们加入一个隐藏域
  • 指定处理的路径:
action="${basePath}user/user_edit.action"
  • 修改的方法:
public String edit() {        //Struts2会自动把JSP带过来的数据封装到User对象上        if (user.getId() != null && user != null) {            userServiceImpl.update(user);        }        //跳转回列表展示        return "list";    }
  • 效果:

这里写图片描述


删除功能

delete方法就非常简单了:

function doDelete(id) {            document.forms[0].action = "${basePath}user/user_delete.action?user.id="+id;            document.forms[0].submit();        }
public String delete() {        if (user.getId() != null && user != null) {            userServiceImpl.delete(user.getId());        }        return "list";    }

这里写图片描述


批量删除

这里写图片描述

响应点击事件:

function doDeleteAll() {            document.forms[0].action = "${basePath}user/user_deleteSelect.action";            document.forms[0].submit();        }
  • Action使用一个String[]接收复选框来过来的数据
private String[] selectedRow;    public String[] getSelectedRow() {        return selectedRow;    }    public void setSelectedRow(String[] selectedRow) {        this.selectedRow = selectedRow;    }    public String deleteSelect() {        for (String s : selectedRow) {            userServiceImpl.delete(s);        }        return "list";    }
  • 效果:

这里写图片描述


转载于:https://www.cnblogs.com/zhong-fucheng/p/7202927.html

你可能感兴趣的文章
phpExcel实现excel文件导出
查看>>
Pandas中dataframe以及spark中rdd使用groupByKey进行合并
查看>>
简单字符串处理应避免使用正则表达式
查看>>
了解正则表达式操作符的优先级
查看>>
Spring框架集成FreeMarker
查看>>
用 async/await 来处理异步
查看>>
app开发-1
查看>>
在JavaScript中调用ASP.NET WebService的简单方法
查看>>
jQuery基础知识,很赞的!!!
查看>>
[SDOI 2012]Longge的问题
查看>>
简单BBS项目开始(一)
查看>>
[Codeforces 925C]Big Secret
查看>>
处理MVC中默认的Json方法返回时间的问题
查看>>
分布式技术追踪 2018年第十期
查看>>
IDEA中Git的使用
查看>>
War3模型导出
查看>>
java: 列出本机java环境
查看>>
Python内置函数(19)——eval
查看>>
怎样录制屏幕并将结果保存为Gif
查看>>
别名设置 alias
查看>>