纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)

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

在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"/>


完成美工设计页面显示


对美工给的页面进行调整


导入到项目中:

0.png

这里写图片描述

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

1.jpg

这里写图片描述

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

2.jpg

这里写图片描述

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


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

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


添加用户UI


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

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

3.jpg

这里写图片描述


确定添加用户


写上我们请求的路径:


/*************注入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<User> userList;
    public String add() {
    userServiceImpl.save(user);
    //跳转到列表显示页面
    return "list";
    }


  • 配置跳转到列表显示页面的result【Action重定向的方式,防止刷新再次请求】


<!--返回列表展示页面,重定向到列表展示-->
            <result name="list" type="redirectAction">
                <param name="actionName">user_listUI</param>
            </result>
  • 效果:下面的列表展示还没有做呢,但是添加用户的效果已经做出来了。

4.gif这里写图片描述



列表展示


/************得到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>

image.gif这里写图片描述



修改功能

5.jpg

image.gif这里写图片描述


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来修改的。因此我们加入一个隐藏域
<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";
    }
  • 效果:

image.gif6.gif这里写图片描述



删除功能


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";
    }

这里写图片描述


批量删除

7.jpg这里写图片描述

响应点击事件:

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";
    }


前面我们在写用户模块的时候还有一些没有解决掉的问题:

8.jpg

这里写图片描述

目录
相关文章
|
1月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
29 1
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
111 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
39 1
|
2月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
139 3
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
43 2
|
2月前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
125 2
|
2月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
41 1
|
2月前
|
存储 NoSQL 关系型数据库
数据库管理系统
【10月更文挑战第8天】
149 1
|
2月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
2月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
下一篇
DataWorks