`
el447el
  • 浏览: 11399 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

【总结】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   *   from   a   $name$  ,则在传入参数可以queryForList( "users ",   "where   name= '张三 ' ");
    用##则是预编译处理,传入的是什么类型就是什么类型,如下列映射:
     select   *   from   a   where   a.name=#name#  ,
    你在传入参数时可以queryForList( "users ",   "张三 ");则生成的sql语句是select   *   from   a   where   a.name= '张三 '。
    #表示参数的方式传入类似于jdbc语句里的?,$就是简单的字符串替换,用相应的值替换$$里的内容。由此我们可以发现,使用$$是一件很危险的事情,有导致sql注入漏洞的风险。
  25、sql更新多列的操作
  UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'
  26、将oracle查询记录导出到文件
    spool d:\output.txt;
    select * from employees;
    spool off;
    这样就可以将查询结果保存到D盘的output.txt文件中了。
  27、不能运行tomcat里面的startup.bat文件解决办法
    出现这个问题是因为在配置JAVA_HOME的时候出了点问题,如果JDK装在D盘,应该配置成:D:\jdk1.6.0_22\ 最后是一个斜杠,而不是分号。
  28、js里面遇到要用到某个函数的时候怎样判断加不加括号
    搞清楚就知道一点不乱了:
    函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
    不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
  29、Ext renderer参数相关
    renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){   
    .....
    }
    value是当前单元格的值
    cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。
    record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。
    rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。
    columnIndex列号太简单了。
    store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据,你都可以随便调用,唉,太厉害了。
  30、javascript实现网页局部打印
    方式一:
      function Printpart(id_str)//id-str 内容中的id
  {
  var el = document.getElementById(id_str);
  var iframe = document.createElement('IFRAME');
  var doc = null;
  iframe.setAttribute('style', 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;');
  document.body.appendChild(iframe);
  doc = iframe.contentWindow.document;
  doc.write('' + el.innerHTML + '');
  doc.close();
  iframe.contentWindow.focus();
  iframe.contentWindow.print();
  if (navigator.userAgent.indexOf("MSIE") > 0)
  {
  document.body.removeChild(iframe);
  }
  }
  将要想打印局部内容,将包含内容的标签ID 当参数放入函数就可以了。
  方式二:
  JS 弹出新窗口实现打印功能(支持FIREFOX)
  function doPrint() { 
  bdhtml=window.document.body.innerHTML; 
  sprnstr=""; 
  eprnstr=""; 
  prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); 
  prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); 
  OpenWindow = window.open(""); 
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("PrintPage");
  // 这里写你的CSS地址
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.write("");
  OpenWindow.document.getElementById("p").innerHTML=prnhtml; 
  OpenWindow.document.close();
  OpenWindow.print(); 
  }
  HTML调用:
  
  xxxxxxxxxxx
  
      
  31、oracle创建用户,sequences相关
    create user nange identified by nange;
    grant resource,dba,connect to nange;
    //查询数据库中所有的sequence
    select SEQUENCE_NAME from user_sequences
      //查询下一条
    select SEQ_DEPOSIT_SCH.nextval from dual
    //查询当前条
    select SEQ_DEPOSIT_SCH.currval from dual
  32、将JSON格式字符串转变为JSON对象
    var jsonStr = '{"name":"jack","age":"18"}';
    var jsonObj = eval('('+jsonStr +')')
    alert(jsonObj.name);//输出jack
    可以写成一个方法:
    function parseToJSONData(object){
  return eval("(" + object + ")");
  }
  33、javascript获取浏览器实际宽度和高度
    宽度:document.documentElement.clientWidth
    高度:document.documentElement.clientHeight
  34、当Tomcat启动时出现下面的错误
    
  [ERROR] org.apache.catalina.session.ManagerBase - IOException while loading persisted sessions: java.io.EOFException 
  或者 
  严重: IOException while loading persisted sessions: java.io.EOFException 
  严重: Exception loading sessions from persistent storage 
  原因是: 
  是因为保存在硬盘上的session数据读取失败,问题似乎不大,但是如果不处理一下,每次启动都会出现这个问题,处理方法如下: 
  将work(例如:tomcat5.5.20\work\Catalina\localhost\_下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser亦可。 
  根据上面所说,我把我的\work\Catalina\下的内容全部删除,问题成功解决。在此感谢,要不然有时候启动tom大傻猫的时候就会见到这个异常 很烦的!
  35、ibatis自动生成的类的含义
  int updateByPrimaryKey(User record) thorws SQLException:按主键更新
  int updateByPrimaryKeySelective(User record) thorws SQLException:按主键更新值不为null的字段
  updateByPrimaryKey应该是根据record里面的ID,然后更新record改变的值。这里是更新所有的字段
  而updateByPrimaryKeySelective只是根据主键更新不为空的字段
  36、Servlet设置编码问题
  request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值
  response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
  前者是设置动态文字(参数,数据库),后者设置页面静态文字
  response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码.
  response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.
  37、使用javascript获取下拉列表框中的文本值
  近日碰到一个问题,就是需要将用户点击下拉列表当中某个选项后,将其所选的内容保存起来,例如下面的HTML代码:
  
  北京
  上海
  广州
  
  也就是说当用户选择“上海”这一列时,需要将“上海”这个名称保存起来。其实方法很简单。看下面javascript代码:
  function isSelected(value) {
  var cityName;
  var city = document.getElementById("city");
  //获取选中的城市名称
  for(i=0;iReferenceError错误。不过,从代码的规范性考虑,最好还是对第二行加上 var:
    if(!window.myObj) {
           var myObj={ };
    }
    或者写成这样:
    if(!window.myObj) {
         window.myObj={ };
    }
    上面这种写法的缺点在于,在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改写成:
    if(!this.myObj) {
          this.myObj={ };
    }
    在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。
  ③还可以使用typeof运算符,判断myObj是否有定义。
    if(typeof(myObj)=="undefined") {
         var myObj={ };
    }
    这是目前使用最广泛的判断javascript对象是否存在的方法。
  推荐使用第三种。
  40、Ext判断浏览器
  var ua = navigator.userAgent.toLowerCase(),
  02        check = function(r){
  03            return r.test(ua);
  04        },
  05        isOpera = check(/opera/),
  06        isChrome = check(/chrome/),
  07        isWebKit = check(/webkit/),
  08        isSafari = !isChrome && check(/safari/),
  09        isSafari3 = isSafari && check(/version\/3/),
  10        isSafari4 = isSafari && check(/version\/4/),
  11        isIE = !isOpera && check(/msie/),
  12        isIE7 = isIE && check(/msie 7/),
  13        isIE8 = isIE && check(/msie 8/),
  14        isIE6 = isIE && !isIE7 && !isIE8,
  15        isGecko = !isWebKit && check(/gecko/),
  16        isGecko3 = isGecko && check(/rv:1\.9/),
  17        isBorderBox = isIE && !isStrict,
  18        isWindows = check(/windows|win32/),
  19        isMac = check(/macintosh|mac os x/),
  20        isAir = check(/adobeair/),
  21        isLinux = check(/linux/);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics