5月29日p2p项目总结

1.JavaWeb经典三层结构
 


我们常说的三层结构是由JavaWeb提出的,也就是说这是JavaWeb独有的!


所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。


(1)  WEB层:包含JSP和Servlet等与WEB相关的内容;


(2)  业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;


(3)  数据层:封装了对数据库的访问细节;


2.IE浏览器向服务器发请求无非就是获取数据 服务器会交给相应的servlet来处理,servlet交给service来处理,
service会交给dao,dao专门与数据库交互获得数据,取出的数据用对象来封装,service调dao的方法,这样
dao通过返回值将获得的数据返回给service;这个时候service就拿到了javabean,service对数据进行一顿操作,
然后将操作的数据封装到另一个javabean中,通过方法的返回值,将结果返回给servlet,servlet将获得的数据
交给jsp,(比如说将javabean放到域里边,jsp从域里拿出javabean做显示),jsp显示执行,用户就可以看到要获取
的数据了;




3.为了将来便于维护,我们在层与层之间定义接口


4.ThreadLocal 其实是维护了一个map ,被所有线程共享, 每一个线程都可以往里边存数据(key ,value),
并且数据(key ,value)中的Key就是 当前线程, ps:线程与线程之间在这个map中存的数据隔离;


5.json在web层做浏览器与服务器之间的数据传递很流行 .这个json数据是对象的封装


6.就是: 第一步 : List list = new ArrayList();
第二步 : session.setAttribute("list",list);
第三步 : list.add(book);
第四步 : 从session中获取book可以获取到吗?

也就是说刚开始list放入session时,list是空的,然后我给list添加东西,那么最后这个session中的list
数据也更新了吗?
答,也更新了,也就是说,你可以从session中拿到list在拿到book,虽然我没有验证,但的确更新了,下面我试着
解释一下这个现象:因为所有的对象都是一个实体,我们平时的变量都是对对象实体的引用,这里的list只是对
new ArrayList()这个实体的引用(或者说是一个指针指向),当我们把list放入session时,实际是把 new ArrayList()
的指针list 放到session中了,这个时候其实session 其实是new ArrayList()的二级父指针,而list是ArrayList()的
一级父指针,所以两个都可以对它进行操作;


7.关于数据传递:
层间传递: 数据个数大于三个就建立bean对象,用bean对象传递
web层和浏览器间传递: 
浏览器的表单数据要转成json发送ajax给服务器,服务器将数据封装成bean对象
服务器给浏览器发送数据,要先转成json,然后在json端,用eval()解析;
ps:表单的error信心应该封装到一个bean中, 如果是整个页面刷新就存到session中
如果是ajax刷新,就转成json发送给浏览器




8.注意用没有事务时dao层的 的CRUD的操作执行时要传入conn
9.外部js文件导入一定要在</body>结束标签之前放置
10.bean类一定要给无参构造
11.ajax请求方式,请求发送到servlet,但在servlet中似乎无法实现页面重定向,
但是在客户端的回掉函数中可以使用:location.href="/p2p_home/space.jsp";来完成重定向;
12.关于ajax传参问题,因为这个时候在浏览器端页面没有域对象,所以只能通过servlet的response将数据返回的客户端,
这数据传递就存在一个打包问题,根据这两天敲代码的经验:可以建立一个result类,来封装要回显的信息,然后将数据
封装到一个map中,map的key是这个回显信息项的名称,value是这个回显信息项,这样可以在浏览器端获得多个回显信息
但是要注意一点:可能需要给map中的内容初始化,以便浏览器端js代码对回显data的操作;
13.关于层间数据传递问题,如果数据个数大于三个,比较建议封装成bean对象,因为层间传递就应该是用bean对象来传递;
14.关于web层内部数据传递,当然是用域对象比较方便;
15.web层和浏览器端数据传递,如果是文本数据当然用字符流;如果是非文本,用字节流比较合适;
如果是文本数据,并且是ajax请求,那么一般用bean来封装原始数据,并且用JSONObject.toJSONString(原始数据),将bean对象
转化为json数据类型(字符串)来传递数据;在浏览器端,我们用 var json = eval("("+data+")");来解析返回的数据;这个json
就是一个dom对象;在js中就便于操作了;

16.在浏览器端,我们多通过表单向服务器发送数据,使用: var json = $("#loginForm").serializeJson();来将表单数据转化为
json数据,传递给服务器,servlet来解析,使用:BeanUtils.populate(customer, request.getParameterMap());来将浏览器端
传过来的json数据进行bean封装;这样就便于使用java来处理了;

17.还有一个原则:就是我们每次对数据操作前先判断;

猜你喜欢

转载自blog.csdn.net/weixin_36898943/article/details/80754560
P2P