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

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

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方