开场白:看你还记得不记得我在“第五篇”中的把“execute这个方法名该为“myDog”可以吗?现在你还不可以,以后我会告诉你怎么可以的啦。”
程序要求:程序开始,第一个页面要显示,以这样的信息,一个下拉框用来选择“用户的部门名称”,这个下拉框中的内容要从“部门信息表中取得”(当页面一生成的时候就要获得)。然后按下“提交”按钮,能显示所有该部门的员工。
分析:因为页面一生成的时候就要从“部门表”中获得数据,所以我要采用一种方式让页面生成的时候就能操作action获得数据。数据的显示不再是单一数据,所以在页面上设计到循环。显示出来的一项数据不再是一个数据。
建立数据表:还记得我们在上一篇中建立的数据库吗。
数据库名字叫“user”已经有一个表叫“userTable”,我们现在就在这个数据库中再建立一个
表“depatTable”
部门号码 depatNo 文本
部门名称 depatName 文本
填入几个值:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
001 生产部
002 工程部
003 人事部
程序开始
从现在开始,我们将按照真正项目开发的思想来做,模块的划分将细致起来
A模块:提供数据库连接
B模块:actionAndForm模块
C模块: 业务逻辑,提供数据的操作
D模块: 数据实体封装
这些模块实际上就是“包”的概念,在eclipse中建立“包”我就不想说了
A模块(2个类)——package dataConnectFactory
ConnectFactory类
//数据连接工厂
package dataConnectFactory;
import java.sql.*;
public class ConnectFactory
{
//定义数据库的驱动程序(以下给出的是连接odbc数据库的)
private static String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
//定义数据库的URL(名称)
private static String strConnection="jdbc:odbc:user";
//数据访问的用户名
private static String strUsername="";
//数据库访问的密码
private static String strPassword="";
public static Connection getConnectionByDriver()
throws MyException
{
Connection conn = null;
try
{
Class.forName(strDriver);//注册驱动
conn = //获得连接
DriverManager.getConnection( strConnection,
strUsername,
strPassword);
}
catch(ClassNotFoundException ex1)
{
ex1.printStackTrace();
throw new MyException("Class Not Found!");
}
catch(SQLException ex2)
{
ex2.printStackTrace();
throw new MyException("SQL Error");
}
finally {}
return conn;
}
}
MyException类
package dataConnectFactory;
//定义自己的异常类
public class MyException extends Exception
{
public MyException()
{
super();
}
public MyException(String message)
{
super(message);
}
}
B模块(3个类)——package action
UserAction类
package action;
//当第一个查询页面一生成的时候就把部门的信息得到并交给页面
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import biz.SearchBiz;
import entity.*;
public class UserAction extends DispatchAction
{
//转到查询界面
public ActionForward toSearch( ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
//定义错误信息封装
ActionErrors errors = null;
//获取页面表单信息
UserForm uf = (UserForm)form;
//定义部门实体数组
DepartmentEntity[] departs = null;
SearchBiz searchBizDept = null;
try
{
searchBizDept = new SearchBiz();
departs =
searchBizDept.selectDeptEntitys(
new DepartmentEntity());
uf.setDeparts(departs);
}
catch (Exception e)
{
errors = new ActionErrors();
e.printStackTrace();
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("system.exception"));
return mapping.findForward("error");
}
finally
{
if (errors != null)
{
saveErrors(request, errors);
}
}
return mapping.findForward("toSearch");
}
}
package action;
UserForm类
//将所有的实体封装到form中
import org.apache.struts.action.ActionForm;
import entity.*;
public class UserForm extends ActionForm
{
private UserEntity user = new UserEntity();
private UserEntity[] users = null;
private DepartmentEntity depart = new DepartmentEntity();
private DepartmentEntity[] departs = null;
public DepartmentEntity getDepart()
{
return depart;
}
public DepartmentEntity[] getDeparts()
{
return departs;
}
public UserEntity getUser() {
return user;
}
public UserEntity[] getUsers()
{
return users;
}
public void setDepart(DepartmentEntity depart)
{
this.depart = depart;
}
public void setDeparts(DepartmentEntity[] departs)
{
this.departs = departs;
}
public void setUser(UserEntity user)
{<sp
分享到:
相关推荐
内容概要:本文提供了详细的MongoDB分片集群的搭建指导,涵盖了从环境准备、配置文件编写、副本集的建立、主节点的选择、配置服务器和数据分片服务器的配置到最后的路由节点的搭建与操作整个流程,以及对数据库的哈希与范围两种分片策略的应用介绍和具体命令执行。 适合人群:熟悉NoSQL数据库概念并对MongoDB有一定了解的技术人员,尤其是在大型数据管理和分布式数据库架构设计中有需求的开发者。 使用场景及目标:帮助技术人员掌握构建高效能、高可用性的MongoDB分片集群的方法,适用于处理大规模、实时性强的数据存储与读取场景。 其他说明:文中通过实例演示了每个步骤的具体操作方法,便于跟随文档实操,同时也介绍了可能遇到的问题及其解决方案,如在没有正确配置的情况下试图写入数据时出现错误等情况的处理。
CPPC++_嵌入式硬件的物联网解决方案blinker库与Arduino ESP8266 ESP32一起工作
CPPC++_逆向调用QQ Mojo IPC与WeChat XPlugin
CPPC++_现代活动指标
CPPC++_Xournal是一款手写笔记软件,支持PDF注释,使用C语言编写,支持GTK3,支持Linux,如Ubu
资源概述: 本资源提供了一套完整的学生实习管理系统解决方案,涵盖了前台小程序页面与后台管理系统两大模块。前台小程序页面设计简洁直观,用户可根据不同身份(学生或企业)进行登录。学生用户能够方便地浏览并投递感兴趣的实习岗位,而企业用户则能轻松发布实习信息,吸引优秀人才。后台管理系统功能全面,包括个人中心、首页、学生管理、教师管理、企业管理、招聘管理、评分管理以及实习管理等多个方面,为管理员提供了强大的数据管理和操作工具。 技术栈亮点: SSM框架:系统后台采用Spring、Spring MVC和MyBatis Plus(简称SSM)作为核心开发框架,确保了系统的稳定性、可扩展性和可维护性。Spring作为控制反转(IoC)和面向切面编程(AOP)的容器,为系统提供了强大的业务逻辑处理能力;Spring MVC则负责处理Web请求和响应,实现了前后端的分离;MyBatis Plus作为持久层框架,简化了数据库操作,提高了开发效率。 MySQL数据库:系统采用MySQL作为数据库存储解决方案,支持大数据量的存储和高效查询。 如有侵权请联系我删除,谢谢
微服务闪聚支付项目
博客链接 https://blog.csdn.net/weixin_47560078/article/details/143714557 文章从原理介绍出发,实现了 Rust 与 Java 的互调。利用 JNI 技术,可以充分发挥 Rust 的性能优势,同时保持 Java 的跨平台特性。这种技术组合适用于对性能要求较高的应用场景,如图像处理、数据分析和系统级编程等。
cppc++
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
分布式事务lcn
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
cppc++
安卓手机与电脑的socket通信源码
Anaconda:JupyterNotebook使用教程.docx
Amazon S3:S3静态网站托管教程.docx
Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。 Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析
CPPC++_wechathookWeChatApi微信Api微信hook微信接口python微信接口java微信Ap