根据操作判断该功能包括几个请求
********************************************************************************************
如果照我说,
查询页面模块 应该叫做资费管理模块
首先从(哪)浏览器进入资费管理页面fee_list.html
在这里可以查到各种套餐?
可以查看到套餐名,基本费用,开通时间,是否开通等状态
这些数据全部都存储在数据库中,
根据MVC模式,浏览器请求数据,servlet从DB中查询数据,通过jsp将信息反馈给用户
第一步,先根据dao去数据库把数据查找出来。通过list集合将查询出来的数据存储到集合中。
servlet将数据转发给jsp,在动态页面中显示查询的实时数据。
第二部,用一个MainServlet处理所有的请求。使用后缀区分调用不同的模块。在查询数据的servlet中,只将数据转发给jsp,由jsp把信息反馈给用户即可。注意图片和样式需要放到webapp目录下
转发到find.jsp的时候,样式图片等静态资源,浏览器是层层加载HTML-css-img...相对浏览器而言
它们的路径就是紧接着/netctoss/style/....类似这样,稍后调试看看结果
注意status的判断,他有开通和关闭两种状态
********************************************************************************************
查询功能开发之后,就是增加功能。在右上角有一个增加按钮,增加资费。
先分析一下有几个请求,一般了来说,超链接,重定向等,就是一个请求
请求1,点击增加按钮,这应该是一个超连接,浏览器链接到toAddCost.do(增加资费的页面),Servlet什么都不用做直接转发到jsp,jsp上是一个表单。提交→addCost.do,将数据存储到DB中,
请求2,表单提交是一个请求。首先Servlet获取页面上表单信息,作为一个Cost对象并保存到数据库,通过dao (save()),ps:经过千辛万苦写完dao。
然后重定向到资费管理模块,查询数据
获取add.jsp 表单上的数据,注意输入中文。。。。
重要的事说三遍,不要回退,要刷新、、、、、、、、、、
重要的事说三遍,不要回退,要刷新、、、、、、、、、、
重要的事说三遍,不要回退,要刷新、、、、、、、、、、
分析每个请求代码的执行过程
逐个请求按照步骤开发
********************************************************************************************
修改资费
几个请求
修改按钮,单击事件。点击链接到修改页面toUpdateCost.do,
/*先在findCost.do通过地址栏获取需要修改的costID唯一。*/
上面那句话不太正确,要结和find.jsp中修改按钮的超链接来看,find.jsp中在连接到toUpdateCost.do
的同时也获取到本条记录的id。通过
toUpdateCost.do?id=${c.costId } ?后面就是所绑定的id,这个链接会在地址栏上,?id=xxx
于是我们就可以通过地址栏获取id的信息,与获取表单控件value值,类似,也可以getParameter获取
id值,进一步在数据库中查询有关信息。
在update.jsp中选择套餐类型,为什么不能写作 可以,之前属性写错
<input type="radio" name="radFeeType" <c:if test="${c.costType==1 }">checked</c:if> id="monthly" onclick="feeTypeChange(1);" />
选择三目
<input type="radio" name="radFeeType" ${c.costType==3?"checked":"" } id="timeBased" onclick="feeTypeChange(3);" />
修改阶段
请求 当前页面toUpdateCost.do 由jsp(update.jsp)来显示内容
Servlet接受当前表单里的信息,通过dao(update 修改信息)保存之后转发给update.do处理保存的信息。
/*
这个过程怎么和保存的过程很像,,还是有差别的,addCost是插入INSERT新增一条信息,
updateCost是修改当前信息
*/
然后重定向到findCost.do
有一个bug,修改costType的时候数值也确实修改了,但是该选的还是能选
id传递给DB查找完整信息,因为,企业用户较少,在保证业务正确的前提下,忽略查询时间,提高代码的复用率。时间忽略。
findById() 转发到Update.do, 也是一个表单,表单上显示id 等信息。进行修改操作,重定向findCost.do
********************************************************************************************
Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。
删除 相对来说较为简单
请求,应该就一个。delete.do Servlet 获取id,到数据库中dao (delete)删除这条数据。重定向到findCost.do
********************************************************************************************
登陆页面
请求,进入登陆页面首先看到的是账号密码,如果正确则跳转到主页
登陆按钮是一个请求,toLogin.do验证账号密码。错误分别给予提示。
在浏览器输入toLogin.do,这就是一个请求。啥事也不做直接转发给login.jsp,dao (login)在数据库中通过个验证账号密码
在单机登陆的时候也是也一个请求。
如何做到一条sql语句就能区分账号还是密码错误
根据账号查询Amin用户,判断账号,密码,全对的情况
错了就告知账号,密码错误,转发给到本页面也就是toLogin.do
对了就重定向到login.jsp
********************************************************************************************
想要在登陆界面保留账号密码,可以使用EL表达式获取填入的参数
剧透,EL{$param.参数名} 此处的参数名是表单控件的名字
原本的想法有些不对,就是把admin对象传过来,通过这个对象把账号,密码。作为保留的账号,这有点不对
********************************************************************************************
然后是导航
在资费查询界面,以及主页等都需要用到。所以不可能每次都去单独修改,复用
提取出导航,menu.jsp通过jstl复用
<c:import url=".../">
也可以不推荐<@includ file="../">
********************************************************************************************
进一步制作又好的页面,当发生错误的时候跳转到error.jsp login.do
********************************************************************************************
配置信息
findCost.do 转发→find.jsp 资费管理模块 (增加) 超链接 fee_list.html
toAddCost.do 转发→add.jsp 提交→addCost.do重定向→findCost.do fee_add.html
findCost.do 超链接→toUpdateCost.do 获取id,查找数据 转发→updateCost.do 更新修改数据 重定向→findCost.do
toUpdate.do 保存 转发→update.do 重定向→findCost.do
login.html
原文:http://www.cnblogs.com/Shum1n/p/6057528.html