纳税服务系统【用户模块之简单增删改查】

2023-11-06 21:50

本文主要是介绍纳税服务系统【用户模块之简单增删改查】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

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

用户模块需求

拥有增删改查和导入导出到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

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


<?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="zhongfucheng.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>

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

这里写图片描述


编写Dao

UserDao接口


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

UserDaoImpl实现类

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

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

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

<!-- 所有业务dao的parent --><bean id="baseDao" abstract="true"><property name="sessionFactory" ref="sessionFactory"></property></bean>


/*** 继承着BaseDaoImpl实现类,就有了CRUD的方法* 又实现了UserDao接口,那么UserDao接口就可以对User模块有相对应的补充** */public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {}
    <bean id="userDaoImpl" class="zhongfucheng.user.dao.impl.UserDaoImpl" parent="baseDao"></bean><context:component-scan base-package="zhongfucheng.user"/>
  • 把user模块的spring配置文件添加到总配置文件中
<!--这是user模块的配置文件--><import resource="classpath:zhongfucheng/user/config/user-bean.xml"/>

编写Service

Service接口

/*** Created by ozc on 2017/5/23.*/public interface UserService {//新增public void save(User user);//更新public void update(User user);//根据id删除Opublic void delete(Serializable id);//根据id查找public User findObjectById(Serializable id);//查找列表public List<User> 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.*/@Service
public class UserServiceImpl implements UserService {@Qualifier("userDaoImpl")@Autowiredprivate UserDao userDaoImpl;@Overridepublic void save(User user) {userDaoImpl.save(user);}@Overridepublic void update(User user) {userDaoImpl.update(user);}@Overridepublic void delete(Serializable id) {userDaoImpl.delete(id);}@Overridepublic User findObjectById(Serializable id) {return userDaoImpl.findObjectById(id);}@Overridepublic List<User> 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配置文件中配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="user-action" extends="struts-default" namespace="/user"><action name="user_*" class="zhongfucheng.user.action.UserAction" method="{1}"></action></package></struts>
  • 添加user模块的Struts配置文件到总配置文件中
<!--User模块--><include file="zhongfucheng/user/config/user-struts.xml"/>

完成美工设计页面显示

对美工给的页面进行调整

导入到项目中:

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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


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

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

添加用户UI

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

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

这里写图片描述

确定添加用户

写上我们请求的路径:

这里写图片描述

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

这里写图片描述


列表展示

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

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

<s:iterator value="userList"><tr bgcolor="f8f8f8"><td align="center"><input type="checkbox" name="selectedRow" value="<s:property value="id"/> "/></td><td align="center"><s:property value="name"/></td><td align="center"><s:property value="account"/></td><td align="center"><s:property value="dept"/></td><td align="center"><s:property value="gender?'男':'女'"/></td><td align="center"><s:property value="email"/></td><td align="center"><a href="javascript:doEdit(<s:property value="id"/>)">编辑</a><a href="javascript:doDelete(<s:property value="id"/>)">删除</a></td></tr></s:iterator>

这里写图片描述


修改功能

这里写图片描述

    public String editUI() {//外边已经传了id过来了,我们要找到id对应的Userif (user.getId() != null && user != null) {//直接获取出来,后面JSP会根据User有getter就能读取对应的信息!user = userServiceImpl.findObjectById(this.user.getId());}return "editUI";}
  • JSP修改用户的界面是不用显示id的,但是我们在修改用户的时候,是根据id来修改的。因此我们加入一个隐藏域
<s:hidden name="user.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";}
  • 效果:

这里写图片描述


这篇关于纳税服务系统【用户模块之简单增删改查】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/359242

相关文章

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详