日期:2014-05-19  浏览次数:20657 次

【总结】Java EE知识点(持续更新)

【总结】Java EE知识点(持续更新)
2011年08月16日
      1、配置struts步骤:
    ①拷贝struts lib目录下的所有jar文件WEB-INF/lib下
    ②修改web.xml文件,配置ActionServlet
    ③提供struts-config.xml文件
  2、struts知识点:
    *ActionForm是做数据收集的,ActionForm中的属性必须和表单输入域的名称一致(也就是和表单中的name名称一致)。
    *ActionForm会自动收集来自客户端的表单数据,然后传给Action,Action可以直接使用ActionForm对象。然后就可以得到相应的数据了。
  3、jsp两种跳转的区别(标签跳转和response.sendRedirect()跳转)
    *属于服务器端跳转,跳转之后的地址栏的信息不会有任何的改变;而response.sendRedirect()属于客户端跳转,跳转之后地址栏是会改变的,变为跳转之后的页面地址。
    *在使用request属性范围时,只有是服务器端跳转才能够将request属性保存到跳转页;而如果是客户端跳转,则不行。
    *如果使用的是服务器端跳转,则执行到跳转语句时会立刻进行跳转;如果使用的是客户端跳转,则是在整个页面执行完之后才执行跳转。
  4、MVC设计模式:
    M:即model,模型,主要是业务逻辑,即javabean。
    V:即view,视图,在web中通常对应于jsp。
    C:即Controler,控制器,在web中对应于Servlet,主要是接收参数,调用模型层,转向的功能。
  5、hibernate知识点:
    hibernate是一个对象关系框架,它可以让我们面向对象的编程方式来操作数据库,它提供了Java类到数据表的映射,这样可以大大减少操作数据库的工作量。
    原理过程:
    *配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
    *服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系  *通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象  *得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现  *此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计  优点:①避免了大量的SQL语句,我们只需要操作对象,使开发更对象化了,提高了效率  ②数据库移植性很好 ③框架无侵入性,是一个轻量级的框架。我们在保存一个类对象时,此类不需要继承Hibernate中的任何类和实现任何接口。   缺点:不适合批量的操作。不适合对象间关系太复杂的映射。   hibernate中处理延迟加载的问题:
    通过HQL语句,join feth的方法,把所有需要的列都找到。
  6、spring知识点:
    *spring框架最核心的就是依赖注射。
    *Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),通过依赖注射,用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向切面的编程)的实现(其本质上就是一种动态代理设计模式)。使用这种方式,我们可以更多的去关注核心业务操作,而不用把太多的心思花在事务处理,资源的打开和关闭等方面了。而且spring提供了对已有的优秀框架的支持,比如struts、hibernate等框架都可以放到spring里面进行整合。
  7、jsp页面传值的方法
    *通过form表单传值。(request.getParameter()得到)
    *通过隐藏域传值,取得方法同上。
    *通过url传值,在jsp后面加上?id=aaa&name=bbb 取得方法同上
  8、Servlet和Struts的Action中的跳转
    在Servlet的doGet()或者是doPost()方法中,可以用request.getRequestDispatcher(url).forward(request, response) ;
    在Action中,则是mapping.findForward(url) ;
  9、让一个表单实现多个action
    一个表单,本质是是只能有一个action的,但是我们又想实现多个action,怎么办呢?我们就可以先不填表单的action,使用javascript来动态填写action,这样就实现了表面上的多action。
    示例代码:
    
    
  
  
    
  function serarch(){
  fname.action="findEmp";
  document.fname.submit();
  }
  function add(){
  fname.action="addEmp";
  document.fname.submit();
  }
  function update(){
  fname.action="updateEmp";
  document.fname.submit();
  }
  
  10、Http报文结构
    起始行、头部信息、Body
    Get和Post的区别:Get没有Body部分,不能上传文件等大数据量操作
  11、Java EE分层
    表现层、业务层、持久层
  12、Html元素
    调用外部CSS:
    调用外部javascript:
  13、两个div对齐问题
    打开firebug,调整边距
  14、下拉菜单
    JQuery
    filedIn   filedOut
    sliedUp  sliedDown
  15、限定IP访问
    通过过滤器,检查允许IP地址中是否有此链接的IP,没有就通过过滤器返回
  16、表合并
    Oracle:merge()
    存储过程:insert + update
  17、Ioc(控制反转),DI(依赖注射)
    其实就是一样的:Ioc(控制反转),纯理论;DI(依赖注射):实际实现
  18、什么是AOP
    面向切面编程,拦截器
  19、URL-Pattern映射的两种方式
    路径映射和后缀名映射
  20、如何让Filter转发请求
    FilterChain chain
    chain.doFilter(request, response) ;
  21、ibatis实现模糊查询
    mysql: select * from stu where name like concat('%',#name #,'%')
    oracle: select * from stu where name like '%'||#name #||'%'
    SQL Server:select * from stu where name like '%'+#name #+'%
  22、div、span、lable的区别
    div是块级别标签
    label标签主要用于绑定一个表单元素, 当点击label标签的时候, 被绑定的表单元素就会获得输入焦点
    span则是行级别对普通的文本的一种容器
  23、外部导入CSS、JavaScript
    CSS:
    JavaScript:
  24、ibatis的sqlmap中,#和$的区别
    用$$   有点宏替换的意思,如下列映射: 
     select   *