JavaWeb经典三层结构
我们常说的三层结构是由JavaWeb提出的,也就是说这是JavaWeb独有的!
所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。
(1) WEB层:包含JSP和Servlet等与WEB相关的内容;
(2) 业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;
(3) 数据层:封装了对数据库的访问细节;
IE浏览器向服务器发请求无非就是获取数据 服务器会交给相应的servlet来处理,servlet交给service来处理,
service会交给dao,dao专门与数据库交互获得数据,取出的数据用对象来封装,service调dao的方法,这样
dao通过返回值将获得的数据返回给service;这个时候service就拿到了javabean,service对数据进行一顿操作,
然后将操作的数据封装到另一个javabean中,通过方法的返回值,将结果返回给servlet,servlet将获得的数据
交给jsp,(比如说将javabean放到域里边,jsp从域里拿出javabean做显示),jsp显示执行,用户就可以看到要获取
的数据了;
为了将来便于维护,我们在层与层之间定义接口
ajax方式的请求能用jsp做响应吗?
JSP九大内置对象 request ,session ,pageContext ,application, Page, out ,config ,response ,exception;
//请求传过来的
final javax.servlet.http.HttpServletRequest request
javax.servlet.http.HttpSession session = null;
session = pageContext.getSession();
final javax.servlet.jsp.PageContext pageContext;
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
final javax.servlet.ServletContext application;
application = pageContext.getServletContext();
final java.lang.Object page = this
javax.servlet.jsp.JspWriter out = null;
out = pageContext.getOut();
final javax.servlet.ServletConfig config;
config = pageContext.getServletConfig();
//容器生成的
final javax.servlet.http.HttpServletResponse response
exception
1.反射使用的两个层次
1.编写通用的ResultSetHandler
2.工厂模式用于接收接口实现对象
2.JS如果被jsp外部引用, 那么在这个JS中能用 EL表达式 吗?
3.beanUtils.populate(,) 第二个参数必须是map吗?
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.为啥改变了src属性,验证码图片会自动刷新? 浏览器动态监听src的改变吗?
答: