1. 创建数据表

a) 确定表名(如:role)

b) 确定表中的业务列(如:role_name、role_desc)

c) 添加其它基本列

i. 如:role_id(主键)、status(数据状态,用来支持逻辑删除)、remark(给数据库管理员或程序员用的备注)、creater(用来记录数据的创建人)、create_time(用来记录数据的创建时间)、updater(用来记录数据的最后更新人)、update_time(用来记录数据的最后更新时间)

d) 检查列属性是否正确(如:自增、主键、不能Null、默认值、类型、长度)

e) 检查列名及表名是否正确(确保没有拼写错误)

2. 创建模块类(下面以Role模块为例)

a) 在com.zhiyou100.crm.model中创建Role类

b) 按照role数据表为Role类添加属性(注意驼峰命名法)

i. 注意日期时间用Timestamp类型

c) 添加toString()方法,以方便打印Role对象

d) 为属性生成getter/setter方法,一定要使用Eclipse生成,不要自己手敲

3. 创建RoleDao接口

a) int add(Role role); 用来添加数据

b) int update(Role role); 用来更新数据

c) int remove(int roleId); 用来删除数据

d) 上面3个方法返回的都是受影响的行数

e) Role get(int roleId); 根据id查出单条数据

f) List<Role> list(); 查出所有有效数据

g) 上面2个方法返回的是业务数据

4. 创建RoleDaoImpl类

a) 实现RoleDao接口

b) 实现RoleDao接口中定义的各个方法

c) 实现add、update、remove方法都是4步

i. 拼SQL

ii. 建连接和语句对象

iii. 设置SQL参数

iv. 调用executeUpdate()方法

d) 实现get、list方法是5步

i. 拼SQL

ii. 建连接和语句对象

iii. 设置SQL参数

iv. 调用executeQuery ()方法

v. 将数据从ResultSet中读取到Role对象中

5. 创建RoleService接口

a) 添加 int add(Role role); int update(Role role); int remove(int roleId); 方法

b) 添加 Role get(int roleId); List<Role> list(); 方法

6. 创建RoleServiceImpl类

a) 实现RoleService接口

b) 实现RoleService接口中定义的各个方法

c) 都是通过调用RoleDao(RoleDaoImpl)中的方法实现

7. 添加列表页面(先不实现数据展示功能)

a) 在/WEB-INF/view/中新建role文件夹,role模块的视图都放在这个文件夹中

b) 在/WEB-INF/view/role中新建list.jsp,将列表页的HTML复制进去

i. 修改文字

ii. 修改各处URL为<c:url value=”” />,注意添加taglib指令导入JSTL标签库,下面不再提示!

c) 在com.zhiyou100.crm.servlet.role中创建ListServlet,设置映射URL为/role/list

i. 在doGet()方法中,将请求转发到 /WEB-INF/view/role/list.jsp,以显示列表页面

d) 修改list.jsp页面中的“新增”按扭的URL为<c:url value=”/role/add” />,以便跳到新增页面

8. 新增功能开发

a) 在/WEB-INF/view/role中新建add.jsp,将前端给的HTML复制进去,修改文字

i. 注意检查<form>的action属性中的URL及method是否为POST

ii. 注意检查<input>等表单控件的name属性是否拼写正确

b) 在com.zhiyou100.crm.servlet.role中创建AddServlet

i. 设置映射URL为/role/add

ii. 在doGet()方法中将请求转发到/WEB-INF/view/role/add.jsp,以显示新增表单页面

iii. 测试点新增按扭时能否跳到新增页面

iv. 在doPost()方法中收集表单传过来数据

1. roleName、roleDesc

2. 实现化一个Role类,将上面的数据set进去

3. 然后给role对象设置添加人、添加时间

4. 调用roleService.add()方法

a) 添加成功(返回值大于0)则重定向到/应用路径/role/list

b) 不成功则在请求中添加role对象和errorMessage,转发到/WEB-INF/view/role/add.jsp,以显示用户填写的数据和错误提示

c) 测试新增功能是否正常(新增成功后返回列表页,在数据库中可以看到新增加的数据)

9. 列表功能开发

a) 在ListServlet的doGet()方法中调用roleService.list()方法查询所有正常的数据

b) 将list数据放入请求对象中(请求已被转发给list.jsp)

c) 在list.jsp中,使用<c:forEach var=“r” items=”${requestScope.list}”> 渲染数据行</c:forEach>

d) 测试列表功能是否正常显示

i. 注意把鼠标入到编辑图标和删除图标上时,左下角的链接地址是否带有正确的id值

10. 删除功能开发

a) 添加RemoveServelt

b) 获取传过来的id值,转成整型roleId

c) 调用roleService.remove(roleId)方法删除数据

d) 重定向到列表页

11. 更新功能开发

a) 添加/WEB-INF/view/role/update.jsp

i. 注意在这个页面中,比add.jsp多了一个<input type=”hidden” name=”roleId” value=”${requestScope.role.roleId}” >,用来向UpdateServlet的doPost请求传递roleId数据

b) 添加UpdateServlet,实现编辑表单数据的显示

i. 在doGet()方法中获取id值,转成整型roleId

ii. 调用roleService.get(roleId)获取role对象

iii. 设置role对象到request对象中

iv. 转发到/WEB-INF/view/role/update.jsp

v. 测试更新页面能否正常打开

c) 实现数据更新

i. 在doPost()方法中获取传过来的roleId和roleName等业务数据

ii. 实例化并设置数据到role对象中

iii. 设置role对象的更新人、更新时间

iv. 调用roleService.update(role)方法更新数据

v. 更新成功则重定向到列表

vi. 失败则将role对象和errorMessage设置到request中,转发到update.jsp

java模块开发关键步骤的更多相关文章

  1. SpringMvc+jquery easyui模块开发7步骤

    搞了一段java的开发,总结出模块开发经验: SpringMvc+jquery easyui模块开发7步骤:1) 数据表(table):                定义表结构并创建数据表t_use ...

  2. java的开发步骤----

    首先老师给了一个 视频给我:叫我理解java的简单开发步骤: 上两张图: 然后我就理解成了这样::: 简述java开发步骤:第一步: 编写源代码,把源代码写好 :第二部:源代码通过编译器编译成字节码c ...

  3. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  4. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  5. 安装配置JDK1.8开发环境以及配置java环境变量的步骤

    1.安装JDK开发环境 下载网站:http://www.oracle.com/ 开始安装JDK: 修改安装目录如下: 确定之后,单击“下一步”. 注:当提示安装JRE时,可以选择不要安装. 2.配置环 ...

  6. 敏捷开发中高质量 Java 代码开发实践

    Java 项目开发过程中,由于开发人员的经验.代码风格各不相同,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维护,需要较大的测试投入 和周期等问题. 这些问题在一个项目组初建.需 ...

  7. Java中级开发工程师知识点归纳

    (一)Java 1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法. ②抽象类中可以有普通成员变量,而接口中不能有普通成员变量. ③抽象类中可以包含非抽象的普通方法,而接口中所有 ...

  8. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  9. ssm集成(maven)& 分模块开发--详细教程

    1 maven版本的ssm 1.1 最简单的版本步骤: (1) 创建maven web项目 (2) 在pom.xml中导入依赖的jar包 (3) 再写配置文件: web.xml <!DOCTYP ...

随机推荐

  1. android:Notification实现状态栏的通知

    在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息一般会显示到手机屏幕的状态栏上. Android也提供了用于处理这些信息的类,它们是Notification和Notif ...

  2. sqlzoo练习答案--SUM and COUNT

    World Country Profile: Aggregate functions This tutorial is about aggregate functions such as COUNT, ...

  3. mysql实现topN top1

    有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,像在hive中是有窗口函数的,可以通过它们来实现,但是MySQL没有这些函数,可通过下面的方法来实现 1.准 ...

  4. oracle 表空间 数据文件 表的关系

    数据文件是表空间的容器,增加数据文件是增大表空间的容量,而不是往表空间里添加数据因此数据文件肯定能添加,如果表空间用完了,再添加新的数据就会报错你可以这样理解,数据库是一个箱子,表空间是箱子里的抽屉, ...

  5. 混合模式程序集是针对“v2.0.50727”版的运行时生成的

    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. 由于“system.data.sqlite.dll”不完整造成的. 在 ...

  6. Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解

    本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifier,@Pos ...

  7. Unix系统编程()信号处理器简介

    信号处理器简介 信号处理器程序(也称为信号捕捉器)是当指定信号传递给进程时将会调用的一个函数.这里会学习信号处理器的基本原理,后面将继续学习. 调用信号处理器程序,可能会随时打断主程序流程:内核代表进 ...

  8. C语言 · 图形输出

    算法提高 图形输出   时间限制:1.0s   内存限制:512.0MB      编写一程序,在屏幕上输出如下内容: X | X | X ---+---+--- | | ---+---+--- O ...

  9. 1.phpmyadmin的配置

    一.解压后得到一个目录,进入相关目录中的\libraries目录,找到 config.default.php文件copy份到上级目录,并命名为config.inc.php ; 二.修改confing. ...

  10. Entity Framework(七):Fluent API配置案例

    一.配置主键 要显式将某个属性设置为主键,可使用 HasKey 方法.在以下示例中,使用了 HasKey 方法对 Product 类型配置 ProductId 主键. 1.新加Product类 usi ...