一个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才能表示成上下文路径