一个web应用,通常可能分为前台,后台。后台通常是系统运营的管理者用来对系统的数据进行维护(增删改查,CRUD)的,前台通常是系统的客户对系统主营数据进行浏览、查看数据细节等操作、前台用户的信息管理。

后台:

一、 添加(C):

a) add.jsp:创建接收用户输入信息的添加的表单,html/jsp文件,用户在这个表单中填写所需的数据,并提交给处理数据的servlet

b) AddXXXServlet:用来处理用户提交的表单信息

i. 获取用户表单信息

ii. 将用户的表单信息封装在bean中,调用bean对应的dao类的addXxx()来进行数据insert操作

iii. 根据insert操作返回的受影响的行数,判断是否insert成功,返回相应的响应

c) 通常会返回到添加的页面,显示操作成与失败的信息

二、 查询(R)

a) ListXxxServelt:

i. 调用bean对应的dao类的方法进行查询数据,通常应该按分页查询

ii. 将查询到的结果保存在request中,forward到显示页面listXxx.jsp

b) listXxx.jsp

i. 使用表格,循环标签、EL表达式来显示数据

ii. 常用在listXxx.jsp页面中还链接其他的功能:编辑、删除、添加、搜索

三、 更新(U)

a) 用户在listXxx.jsp中点击编辑链接,在这个链接中会带有要更新的数据的id,请求获取相关详细数据的FindBookServlet

b) FindXxxServlet:

i. 获取要请求数据的ID

ii. 根据id使用bean对应的dao类进行查询

iii. 将返回的bean数据保存在request中,forward到updateXxx.jsp页面

c) updateXxx.jsp:这个页面与addXxx.jsp基本相同,区别有

i. 多一个id,这个id不能修改的

ii. 所有的表单元素的值是在bean中读取的

iii. 用户在此页面进行修改信息后提交表单到UpdateXxxServlet

d) UpdateXxxServlet

i. 获取用户表单信息

ii. 将用户的表单信息封装在bean中,调用bean对应的dao类的updateXxx()来进行数据update操作

iii. 根据update操作返回的受影响的行数,判断是否update成功,返回相应的响应

四、 删除(D)

a) 用户在listXxx.jsp中点击删除的复选框,选中要删除的数据,提交表单到DeleteXxxServlet

b) DeleteXxxServlet

i. 获取用户提交的要删除的数据id数组

ii. 根据这个数组将相关的数据删除

iii. 根据删除返回的受影响的行数判断是否删除成功

iv. 查询新的数据,也就是调用ListXxxServelt

五、 Web应用中的路径问题

a) 相对路径

i. 相对路径是相对当前文档的路径生成新的目标路径

1. 当前的url: http://localhost:9090/bookms/back/addBook.jsp

2. 相对路径为:addBook

3. 生成的目标绝对路径为:http://localhost:9090/bookms/back/addBook 

b) 绝对路径

i. 当前的url: http://localhost:9090/bookms/back/addBook.jsp

ii. 绝对路径:/bookms/addBook

iii. 生成的目标绝对路径为:http://localhost:9090/bookms/addBook 

c) 为了保证路径的稳定,在开发中统一写成绝对路径,实现方法为

i. 在jsp页面中添加<base href=”<%=request.getContextPath() %>/”>

ii. Jsp页面中所有的路径都写相对根目录路径

iii. 在servlet中如果是requestDispatcher使用的路径都以/开头,此处/就代表根目录,如果是使用response重定向,为了保证路径以根目录开头,路径字符串前应写request.getContextPaht()+”相对根目录路径”

d) 在服务器端,/可以表示服务器的根目录,也就是上下文路径

e) 在客户端,必须要写成/bookms才能表示成上下文路径