Struts2项目整合之人员管理系统(四)

简介

今天整理的是一个结合Struts2做的一个人员查询管理系统。开发历程没有写太多。整体项目开发比较简单,基于模版进行修改页面,编写action类

开发前奏

开发前奏
1. 导入人员管理项目
2. 建立数据库、表
	drop databse if exists struts;
	create database alice;
	create user [email protected] identified by ‘123‘; //添加用户
	grant all on struts.* to [email protected]//授权
	oracle一个数据代表一个服务,在这个库中有很多用户,每个用户有个表空间

	set character_set_client = gbk;
# 用户表
	CREATE TABLE S_User(
	userID INT  NOT NULL AUTO_INCREMENT, #主键ID
	userName VARCHAR(50)   NULL,  #用户姓名
	logonName VARCHAR(50)   NULL, #登录名
	logonPwd VARCHAR(50)  NULL,   #密码#
	sex VARCHAR(10)  NULL,        #性别(例如:男,女)
	birthday VARCHAR(50) NULL,    #出生日期
	education VARCHAR(20)  NULL,  #学历(例如:研究生、本科、专科、高中)
	telephone VARCHAR(50)  NULL,  #电话
	interest VARCHAR(20)  NULL,   #兴趣爱好(例如:体育、旅游、逛街)
	path VARCHAR(500)  NULL,      #上传路径(path路径)
	filename VARCHAR(100)  NULL,  #上传文件名称(文件名)
	remark VARCHAR(500)  NULL,    #备注
	PRIMARY KEY (userID)
	) 

目标功能:

搭建开发环境
struts2+javabean+DAO+DBCP+DBUtils+Mysql
导入jar包和配置文件
	web.xml
		index.jsp/index.html;
		<filter>加入核心控制器StrutsPrepareAndExecuteFilter
	struts.xml
	dbcpconfig.properties

SERVICE层/DAO层实现

1. 定义业务接口(根据功能需求来做)
BusinessService
	User login(String logonName, String logonPwd);
	List<User> findAllUsers();
	List<User> findUsersByCondition(String userName, String sex,String education,String filename);
	void addUser(User user);
	void editUser(User user);
	User findUserById(Integer userId);
	void delUser(User user);
2. 后台业务代码实现、测试
UserDao
	void save(User user);
	void del(User user);
	void update(User user);
	List<User> findUserByCoditions(Integer userID,String logonName,String logonPwd,String sex,String education, String filename);
	User findUserByUsernamePassword(String logonName, String logonPwd);
	List<User> findAllUsers();
	List<User> findUsersByCondition(String userName, String sex,String education,String filename);
	User findUserById(Integer userId);

3. 添加实现类UserDaoMysqlImpl
	1). 删除/更新用户判断传入的用户和用户id是否为空,如果为空抛出无效参数异常
	2). List<User> findUserByCoditions(Integer userID,String userName,String sex,String education, String filename);
		判断传入的参数是否为空,如果全部为空代表查询全部
		至少一个参数不为空
		List<Object> parameters = new ArrayList<Object>();
		if(userId != null) {
			sb.append("and userID=? ")
		}
		if(StringUtils.isNotBlank(username)) {
			sb.apppend("and userName like ? ")
		}
		if(StringUtils.isNotBlank(filename)) {
			if("true".equals(filename)) {
				sb.append("and filename is not null");
			} else {
				sb.append("and filename is null");
			}
		}

4. 业务实现类
	BusinessServiceImpl
	private UserDao dao = new UserDaoMysqlImpl();
5. 测试业务实现类	

功能实现

一、 登录功能
	1. 改造登录页面login.jsp
		# 修改主题:struts.ui.theme=simple
		<s:form action="userLogin">
		logonName/logonPwd/submit/reset
	2. struts-user.xml
		<action name="userLogin">重定向到登录之后转向的页面home.jsp,错误转到login.jsp
	3. UserAction类
		1). 使用ModelDrivern进行封装User数据
		2). 在applicationContext.xml中配置Spring容器进行注入业务实现类
		3). 建立用户登录方法
			调用业务方法获取用户,如果为空添加错误动作消息,返回input视图
			否则设置session域中,返回success
	4. top.jsp,修改用户名:<s:property value="#session.user.usernaName">	

二、 查询所有用户
1. 改造left.jsp
	<s:url action="findAllUser" namespace="/user" var="findAllUserUrl">
2. 添加<action anem="findAllUser"> 节点
		<result>转到list.jsp
3. 	改造list.jsp
	<s:iterator value="users" var="user">
	/用户名/性别/电话/学历
4. 查询用户改造,建立一个findUserByUsernamePassword();

三、 按条件查询
1. list.jsp-->
	<s:form action="listByCondition" namespace="/user">
	<s:textfield>用户姓名/性别<s:select list="#{}" headerkey=""
	学历/是否上传学历
	submit
2. struts-user.xml配置文件
	<action name="listByCondition">
3. 改造UserAction
	listByCondition();
四、 添加用户
1. list.jsp修改提交
	<s:submit type="button" >
2. add.jsp修改
	导入struts标签库
	<s:form action="addUser" enctype="">
	登录名/密码/用户姓名/性别<s:radio list="#{}" value={‘male‘}>
	学历/出生日期/电话/兴趣爱好<s:checkboxlist list="{‘‘}"/
	简历资料<s:file>
3. 添加<action>节点,重定向动作到redirectAction --->findAllUser
4. UserAction---addUser()
	isUpload/interests[]/upload/uploadFileName/
	1). 数据已经封装到了User对象中,除了爱好和简历存放路径
	2). 判断interests不为空并且长度大于0,
		遍历interest,拼接爱好,隔开。拼接后的字符串设置到user中
	3). 得到真实路径,将路径设置到user中
	4). 利用TokenHelper.generateGUID()生成新文件名称,设置到user中
	5). FileUtils拷贝到目的FileUtils拷贝到目的地
	6). 调用业务方法,将user对象添加到数据库中

五、 编辑功能
1. list.jsp
	<s:a namespace="/user" action="findOneUser">
		<s:param name="userID" value="<s:property value="#user.userID">
2. 添加action节点 name="findOneUser"
3. UserAction---->findOneUser()
	调用业务方法findOneUser();
	将user压入栈顶
	return SUCCESS;
4. edit.jsp页面
	兴趣爱好value="%{interest.split(‘,‘)}"
	简历资料
	下载
	重新上传
5. <action>中添加download动作
	<result type="stream">
		<param name="inputName">
		<param name="contentType">application/octet-stream</param>
		<param name="contentDisposition">attachment;filename=${}
6. 动作类中添加download方法
	根据id查询用户
	得到用户中的真实路径
	关联该路径文件,创建流对象
7. action节点中t添加editUser动作
8. UserAction类中添加editUser()方法
	如果upload不为空,重新上传
	否则的话
		用户没有选择重新上传,保持住原有的文件名和路径名
	调用业务方法editUser()方法
9. 查看功能
	list.jsp,<s:a namespace="/user" action="viewUser">
	viewUser动作方法
	view.jsp,改变为struts标签
10. 删除功能
	list.jsp
11. 空指针异常的问题
	如果文件不为空,才进行上传

六、 拦截器判断登录
	LogonCheckInterceptor实现MethodFilterInterceptor
	从session中获取user,判断是否为空,

	定义<interceptors>
			<interceptor name="logonCheckInterceptor">
				<param name="excludeMethods">userLogin</param>
			</interceptor>
			<interceptor-stack name="mydefault">
				defaultStack
				logonCheckInterceptor
	<global-results>
时间: 2024-08-06 20:04:41

Struts2项目整合之人员管理系统(四)的相关文章

eclipse环境下基于已构建struts2项目整合spring+hibernate

本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 实现步骤: 第一步:引入spring所需jar包,如下图所示: 第二步:导入hibernate所需jar包,如下图中被选中jar文件: 第三步:导入struts-spring整合包,暂且就这么称呼吧 第四步:导入MySQL驱动包: 第五步:所有准备工作就绪后,接下来创建spring与hibernate配置文件,命名为applicationContext.xml,配置如下所

疫情防控公益免费开源项目推荐-出入人员登记系统-学生健康报备管理系统-员工疫情筛查工具-物资管理系统-消毒检查登记系统

具体项目清单 项目1.出入人员登记系统 项目描述:疫情期间严格执行出入登记.支持出入人员自助扫码填表,支持管理员查看.统计.搜索和导出excel.还可根据车次.航班自动识别是否乘坐过确诊人员乘坐的交通工具.登记人员初次填写后,第二次填表将无需重复填写基本信息. 项目负责人:DCloud_UNI_GSQ(QQ群昵称) 项目体验地址:wlry.m3w.cn 源码地址:https://gitee.com/dcloud/xinguan2020-alien-registration 截图: 案例: 已经在

Maven学习归纳(三)——依赖添加依赖排除与项目整合

一.Maven的坐标 1. 坐标的定义 数学意义上的坐标可以是平面上的(x,y)也可以是空间上的(x,y,z),都可以确定一个质点的位置和方向. Maven中有很多构件,为了能够自动化解析任何一个构件,需要将它们做成唯一标识,即依赖管理的基础——坐标,通过坐标确定jar的位置 2. 为什么需要坐标 在没有坐标之前,当我们需要一些jar包的时候,总需要到各个网站上下载.这样一来,就浪费了很多时间,提高了程序开发成本. 另一方面,下载没有统一规范,导致版本不统一等,又严重提高了运维成本. 拥有了统一

PMP:4.项目整合管理

====================项目整合管理======================== 项目整合管理包括对隶属于项目管理过程组的各种过程和项目管理活动进行识别.定义.组合. 统一和协调的各个过程. { 4.1 制定项目章程 - 编写一份正式批准项目并授权项目经理在项目活动中使用组织资源的文 件的过程. 4.2 制定项目管理计划 - 定义.准备和协调项目计划的所有组成部分,并把它们整合为一份综合项目管理计划的过程. 4.3 指导与管理项目工作 - 为实现项目目标而领导和执行项目管理计

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

SpringBoot和Mycat动态数据源项目整合

SpringBoot项目整合动态数据源(读写分离) 1.配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据一致性的处理.由于此方法相对易懂,简单,不做过多介绍. 2. 动态切换数据源,根据配置的文件,业务动态切换访问的数据库:此方案通过Spring的AOP,AspactJ来实现动态织入,通过编程继承实现Spring中的AbstractRoutingDataSource,来实现数据库访问的动态切换,不仅可以方便扩展,

IdentityServer4实战 - 与API单项目整合

原文:IdentityServer4实战 - 与API单项目整合 一.前言 我们在实际使用 IdentityServer4 的时候,可能会在使用 IdentityServer4 项目添加一些API,比如 找回密码.用户注册.修改用户资料等,这些API与IdentityServer4怎么共存在一个项目呢? 二.整合 1.首先在 Startup.cs 中添加 IdentityServer4 services.AddIdentityServer(options=>options.Authenticat

Swagger与SpringMVC项目整合

Swagger与SpringMVC项目整合 为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明: Step1:项目中引入相关jar包: <properties> <project.build.sourceEncoding>UTF-8</project.bu