1.模式应用
1.1 MVC模式
1.2 装饰器模式(前端控制器)
1.3 工厂模式
1.4 复合视图模式
1.5 数据访问对象模式
2.调试分析
2.1 ResultSet.close()不可以关闭两次,Connection关闭的时候ResultSet会随之关闭
2.2 改变JavaBean之后,一定要重新编译JavaBean才能够达到预期的效果。
2.3 对象要初始化后才能使用,ResultSet.close()后ResultSet对象不会为null
2.4 在执行完数据库操作以后,必须调用Connection的close方法关闭连接,但是由于使用了连接池,连接并不是真正关闭了,
只是容器将连接放到了缓冲池里,下次再建立连接时,直接从缓冲池里取出来,这样速度会快很多,所以这样做还是有很大优势的。
关于搂主说的"可是如果关闭了Connection,ResultSet怎么弄呢?",你可以将查询结果先放到一个Vector里面,然后关闭
连接后从Vector中取数据。
3.学习摘要
3.1 转发请求:
response.setContentType("text/html; charset=GBK");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
3.3 Servlet中对象了解还不够清楚,同时对象的方法了解得也不够透彻
3.4 Servlet乱码问题:
response.setCharacterEncoding( "UTF-8 ");
response.setCharacterEncoding( "gbk ");
request.setCharacterEncoding( "GBK ");
3.5 改动JavaBean后tomcate重启
<Context path="/J2eeLargeAssignment" docbase="D:\j2ee\J2eeLargeAssignment\WebRoot" reloadable="true"/>
3.6 rs.getObject()取不到数据
3.7 文件的相对路径,从一个包的里面跳到外面,尤其是servlet转发的时候就会出现问题,会转错地方
3.8 2、客户端的地址
所有的html中的相对地址都是相对于http://192.168.0.1/的,而不是http://192.168.0.1/webapp/的。
Html中的form表单的action属性的地址应该是相对于http://192.168.0.1/的,所以,如果提交到a.jsp为:action=”/webapp/user/a.jsp”;提交到servlet为action=”/webapp/handleservlet”
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
1、服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
forwarder:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forwarder到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
3.9 所以在服务器端不需要加/webApp(如request.getRequestDispatcher("/jsp/manager.jsp").forward(request,response)),但是在客服端要加/webapp(如/webapp/css/styple.css或者/webapp/ServletLogin),就是上面所说。
3.10 当表单(frmResult)中有CheckBox的时候不能用
document.frmResult.action="/J2eeLargeAssignment/ServletWorker?operateType=delete传值
可以通过隐藏类型的数据传值,如<input type="hidden" name="operateType">
document.frmResult.operateType.value="delete";
3.11 javascript new Date()对象getYear()方法的到的要前1900年,要进行处理
year=(year > 200) ? year : 1900 + year;
3.12 response.getWriter().print("<script language='javascript'>alert('删除失败!')</script>");会出问题写到别的地方去,应该用
response.getWriter().write("<script language='javascript'>alert('删除失败!')</script>");
3.13 servlet传多个参数的时候,如 request
.getRequestDispatcher(
"/jspFiles/modifyPerson.jsp?operateReturn="
+ resultReturn + "&deleteArray="
+ personNumber).forward(request,
response);
在modifyPerson.jsp中
<%String operateReturn = request.getParameter("operateReturn");
if (operateReturn != null) {
if (operateReturn.equals("1")) {
response
.getWriter()
.write(
"<script language='javascript'>alert('修改成功!')</script>");
} else if (operateReturn.equals("0")) {
response
.getWriter()
.write(
"<script language='javascript'>alert('修改失败!')</script>");
}
}
%> 打印不出来,而且会把信息写到别的地方那个去(select控件中去,挺悲哀的).
换成 <%String operateReturn = request.getParameter("operateReturn");
if (operateReturn != null) {
if (operateReturn.equals("1")) {
%>
<script language='javascript'>alert('修改成功!')</script>
<%} else if (operateReturn.equals("0")) {%>
<script language='javascript'>alert('修改失败!')</script>
<%}
}
%>就可以了。
3.14 打了包的servlet最好在uri属性上面加一个应用的头/webApp(同学说的,没有尝试过)
3.15 UserBeanDTO应该封装表中一条记录的值,还应该封装表字段的名称
UserBeanDTO包含对UserBeanDTO对的操作,当然UserBeanDTO可以直接对数据进行操作
但是对数据库操作还可以分离出来,用一些对象进行封装。
3.16操作过程:
用户通过操作界面填写信息,递交页面,servlet接受页面上递交过来的信息,有的servlet根据这些信息
直接转到别的页面,有的servlet通过DTO封装数据,并调用DAO操作DTO对象,根据DAO返回的结果判断如何转发请求
这个过程当中包括两个方向,一个是插入数据,另一个是从数据库中读出数据,插入数据的过程是这样的
用户填写插入的信息,递交到servlet后,servlet用DTO进行封装,通过DAO对象对DTO进行插入操作(DAO通过得到的DTO
组织成一条命令语句对数据库进行操作)。DAO返回插入结果信息(是成功还是失败),servlet把这些信息转发给用户。
读取数据是这样的:用户填写查找的信息,递交到servlet,servlet同样用DTO进行封装,通过DAO对象对DTO进行查找操作(DAO通过得到的DTO
组织成一条命令语句对数据库进行操作)。DAO返回插入结果信息(是一个结果集,这个集合可以是ResultSet,也可以是ArrayList,Iterator,Vector)
,servlet把这些信息转发给用户。总之传递过程中都是以对象的方式。
3.17 获取Session对象request.getSession();
3.18 本系统设计的错误是有一个TableDTO,此对象应该用UserBeanDTO,RepairDTO等具体的类代替,例如UserBeanDTO包含
private String userName;//一条记录中的一个值
private String password;//一条记录中的一个值
private boolean isLogin = false;
private String tableName;//表名称
private String[] tableFieldNames;//表字段名
3.19 第二个弥补是要在UserBeanDAO中加入
private String operateType;//对UserBeanDTO的操作类型,是insert,update,delete or select
等等的一些方法
3.19 本系统有一个有个优点,LightRowSet类对数据进行了封装,个人觉得很好,返回的ArrayList or Vector对象
读取数据不仅快,而且操作起来方便。一条一条记录读而不是一个一个字段读。
DbHelper相当是运用了facade模式
没有合适的资源?快使用搜索试试~ 我知道了~
j2eeMVC等模式的应用(学校课程设计的题目)
共67个文件
class:17个
java:17个
gif:11个
需积分: 10 17 下载量 161 浏览量
2008-12-05
20:05:30
上传
评论
收藏 378KB RAR 举报
温馨提示
基于j2ee设计模式做的一个管理系统,同时包含一些javascript的验证。servlet,jsp,DTO,DAO,filter. 数据封装
资源推荐
资源详情
资源评论
收起资源包目录
J2eeLargeAssignmentAddProcedure.rar (67个子文件)
J2eeLargeAssignment
.project 1KB
.myumldata 66B
.mymetadata 330B
WebRoot
css
shared.css 1KB
fireEquip.css 5KB
WEB-INF
web.xml 2KB
lib
classes
ctrl
ServletLogin.class 3KB
FilterJspFiles.class 2KB
ServletWorker.class 6KB
ServletRepair.class 2KB
model
DAO
DbHelper.class 8KB
WorkerBeanDAOFactory.class 447B
RepairDAO.class 478B
IUserBeanDAO.class 387B
IWorkerBeanDAO.class 397B
WorkerBeanDAO.class 1KB
UserBeanDAOFactory.class 435B
UserBeanDAO.class 2KB
DTO
RepairDTO.class 1KB
UserBeanDTO.class 940B
WorkerBeanDTO.class 1KB
LightRowSet.class 2KB
TableDTO.class 1KB
index.jsp 1KB
META-INF
MANIFEST.MF 39B
instruction.txt 6KB
jspFiles
manager.jsp 635B
repairRecord.jsp 3KB
title.htm 1KB
modifyPerson.jsp 8KB
exit.jsp 465B
addPerson.jsp 8KB
menu.jsp 2KB
servicePerson.jsp 8KB
dbase
AfterServiceSystem_Data.MDF 1024KB
AfterServiceSystem.mdb 1.08MB
AfterServiceSystem_Log.LDF 1024KB
images
ss.gif 3KB
line.gif 108B
corner4.gif 178B
corner3.gif 176B
main.bmp 202KB
liner400.gif 145B
coner2.gif 176B
corner1.gif 178B
arrow.gif 2KB
linec400.gif 286B
linec400d.gif 145B
liner400d.gif 286B
.myeclipse
src
ctrl
ServletLogin.java 2KB
FilterJspFiles.java 1KB
ServletRepair.java 1KB
ServletWorker.java 7KB
model
DAO
UserBeanDAO.java 1KB
WorkerBeanDAOFactory.java 215B
DbHelper.java 10KB
IWorkerBeanDAO.java 675B
IUserBeanDAO.java 567B
UserBeanDAOFactory.java 209B
WorkerBeanDAO.java 880B
RepairDAO.java 178B
DTO
WorkerBeanDTO.java 790B
UserBeanDTO.java 961B
RepairDTO.java 718B
LightRowSet.java 2KB
TableDTO.java 846B
.classpath 340B
共 67 条
- 1
资源评论
格林-scorpio
- 粉丝: 26
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功