5 月份实习遇到的一些问题

5.9 关于js 的json问题

首先是两个概念:json字符串=’{“xx”:xx,”xx”:xx}’

json 对象={“xxx”:xx,”xx”:xx}

1:两者是如何转化的:(需要添加json.js)

Json字符串-》json对象:JSON.parse(jsonStr);jsonStr.parse();eval(‘(‘+jsonStr+’)’)

Json对象-》json字符串:jsonObj.toJSONString();JSON.stringify(jsonObj);

2:

  VarjsonObj = {“persons”:[{“name”:”xx”,”sex”:man}]}

数组最后添加一条记录:

Var person = {“name”:”yaoming”,”sex”:man}

jsonObj.persons.push(person);//添加一条记录

jsonObj.persons.pop();//删除最后一条记录

 

5.9:关于innerHtml,outerHtml,innerText 的区别

1:innerHtml: innerHTML是用来获取元素内的html内容和文本.

2:outerHtml: outerHTML可以用来更改或获取元素内所有的html和文本内容,包含引用该方法元素自身的卷标.

3:innerText:获得标签内的文本;

 

5.9:下面一段代码是关于window.parent和window.opener区别 来讲的,我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElementById(name).value= uvalue;这种形式哦。

window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。

可以用这一点特性来判断这个窗口是否是顶层窗口

 

5.9:/jquery.selectseach.min.js:智能select文本搜索插件;

注意select 需要添加:m=”search”

$(document).ready(function(){

       $(‘#selectId’).selectseach();

})   

 

5.9: functiongetOffsetTop (el, p) {
    var _t = el.offsetTop;     //将该连接对象的相对父容器的TOP偏移量赋给_t
    while (el = el.offsetParent) {     //这里的这句表达式,要完成的功能是判断el的父容器是否存在,如果是null的话,那么el在这里面就会被执行成false;
        if (el == p) break;  //这里就是一般的对比了,判断el和P是不是一样的,如果是一样的调处while
        _t += el.offsetTop;   //对_t累加,得到一个_t
    }

   return _t;
}

5.9:关于如何设计一个联想控件:

1:首先把所有记录取出来:以json的形式;

初始化json的sname属性(根据json的某个属性对应而来)

比如:设置一个拼音对应汉字的集合-》产生一个汉字对应的开始大写字母(徐超—>XC)

2:当在输入框输入值时候(obj.onfocus = xxxfunction())

3:关于xxxfunction();根据输入的字符(已经根据拼音对应获得的首字大写)长度来截取json[i].sname.str(i,输入字符长度);

4:当符合要求的时候将json的对应属性放到下拉列表中(如下);

关于下拉显示框的设置:

1:确定位置:showObj.offsetTop = obj.offsetHight + getTop(obj);

            showObj.offsetLeft = getLeft(obj);

getTop(obj){

       var tops = 0;

el = obj;

while(el){

       tops = tops + el.offsetTop;

    el = el.offsetParent;

}

Return tops;

}

getLeft(obj){

       var lefts = 0;

el = obj;

while(el){

       lefts = lefts + el.offsetLeft;

    el = el.offsetParent;

}

Return lefts;

}

@NamedQuery

在使用 JPA 持续性提供程序的应用程序中,可以使用实体管理器动态创建和执行查询,也可以预定义查询并在运行时按名称执行。

使用 @NamedQuery批注创建与 @Entity  @MappedSuperclass 关联的预定义查询,这些查询:

使用 JPA 查询语言(请参阅 JSR-000220 Enterprise JavaBeans v3.0 规范,第 4 章)进行基于任何基础数据库的可移植执行

经常被使用

比较复杂并且难于创建

可以在不同实体之间共享

只返回实体(从不返回标量值),并只返回一个类型的实体

如果有多个要定义的 @NamedQuery,则必须使用 @NamedQueries

Eg:

  @NamedQueries(

         {

                   @NamedQuery(name= “entity.name”, query = “select a from SsGoodsMskuEntity a  where a.msk = ? ”),

            ……………………………..

}

)

@NamedQuery 预定义的sql的使用;

AtomicReference<String>hql = new AtomicReference<String>(“实体名称.预定义query名称”);

List list =HibernateTemplate().findByNamedQuery(hql,namedQuery 的参数1,nameQuery 参数2,。。。。);

 

 
 
 
 
5.11 the JSP specification requires that an attribute name is preceded by whitespace
Jsp 页面两个属性间缺少空格;
 
5.11:<s:select> 的使用
<s:select list=”${list}” listKey=”id” listValue=”value” headerKey=”defaultKey” headerValue=”defaultValue”key=”xxx”value=”xxx”>
 
5:14 :hibernate 一对多的保存问题:
在一的一方上设置:设置级联
@OneToMany(cascade = CascadeType.ALL, mappedBy = "sku", fetch = FetchType.LAZY)

 

5:14 :oracle  字符串为空判断: 只能用 is not null ;不能用 <>  或者!=

 

5:15 : <s:iterator >

有三个属性:value:被迭代的集合 , status:迭代元素的索引 , id:迭代元素的别名;

<s: iterator value=’page.result’ var=”obj”>

       <s:propertyvalue=”#obj.xxx”>

</s:iterator>

 

5:15: js  String.indexOf(str)

判断str在String中第一次出现的位置(从0);若结果为-1:则表示不在该String中;

因此可以用String.indexOf(str)==-1来判断String是否包含str这个字符串;

 

5:15:

    com.opensymphony.xwork2.ActionSupport.getText(StringaTextName)
    login.text = 登录//property
login.title = %{getText("login.text")}
页面
    getText(key);可以得到国际化的属性文件中对应key 的值

 

5:15:hibernate 对对象查询条件进行面向对象的封装

DetachedCriteria dc =DetachedCriteria.forClass(obj.class);

dc.add(Restrictions.like(“attribute”,”value”));//设置xx like xx

dc.add(Restirctions.isNotNull(“attribute”));//设置 xx is not null

dc.addOrder(Order.desc(“attribute”));//设置排序

dc.setProjection(Projections.projectionList()
        .add(Projections.rowCount().as("catCountByColor") )
        .add( Property.forName("weight").avg().as("avgWeight"))
        .add(Property.forName("weight").max().as("maxWeight") )
        .add(Property.forName("color").group().as("color" )
    )//设置查询的属性

dc.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);//对结果集进行过滤

1.      dc.list();//获得结果集方法1

2.      getHibernateTemplate().findByCriteria(criteria,index, size);

index:取得结果集的起始位置

size:取得结果集的大小;

 

 

5:15: linux 下火狐安装flash 插件

1:下载flash_player;

2: 解压-:tar zxvfflash_player.gz

3:将解压后的 libflashplayer.so文件 放到 /usr/lib/mozilla/plugins/下

4:重启浏览器即可

 

5.16: html 调用 js 变量:

在html需要显示js变量的位置添加

<script>

       Document.write(js变量);

</script>

 

 

 

 

5.16:Executors.newFixedThreadPool(int )的实现

1.                public static ExecutorService newFixedThreadPool(int nThreads) {  

2.                        return new ThreadPoolExecutor(nThreads, nThreads,  

3.                                                      0L, TimeUnit.MILLISECONDS,  

4.                                                      new LinkedBlockingQueue<Runnable>());  

5.                    }  

 

5.16:如何将每天的增量数据放到对应的挖掘数据库中:

每个表均设置一个时间字段:之后按时间取出增量信息

 

5:17: 消息队列本身是异步的,它允许接收者在消息发送很长时间后再取回消息,这和大多数通信协议是不同的。例如WWW中使用的HTTP协议是同步的,因为客户端在发出请求后必须等待服务器响应。然而,很多情况下我们需要异步的通信协议。比如,一个进程通知另一个进程发生了一个事件,但不需要等待响应。但消息队列的异步特点,也造成了一个缺点,就是接收者必须轮询消息队列,才能收到最近的消息。

 

5:17:Queue接口:

实现类:LinkList

方法1:移除返回:remove()à队头为空的时候抛出异常;poll()à队头为空的时候放回null

     2:插入一个元素:offer();

3:获取但不移除:element();peek();

 

5:17:StringBuffer 底层实现:是根据char[]

 

5.17:根据excel 模版生成excel 文件(JXLS使用

 

 newXLSTransformer().transformWorkbook(workbook1, map);

<jx:forEachitems="${detaillist}" var="detail" varStatus="status">

${status.index+1}//序号

</jx>

Eg: Resource resource = new ClassPathResource(getText("export.xls.porder"));

        HSSFWorkbook workbook1 = new HSSFWorkbook(resource.getInputStream());

        int count = workbook1.getNumberOfSheets();

        for (int i = count - 1; i >= 0; i--) {

            String sheetName =workbook1.getSheetName(i);

            if (!sheetName.equals(sheet)) {

                workbook1.removeSheetAt(i);

            }

        }

        new XLSTransformer().transformWorkbook(workbook1,map);

 

        setFileName(URLEncoder.encode(sheet,"UTF-8") + ".xls");

 

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        workbook1.write(baos);

        baos.flush();

        byte[] aa = baos.toByteArray();

        setExcelStream(new ByteArrayInputStream(aa, 0, aa.length));

        baos.close();

 

5:struts2 向浏览器发送inputStream

<action name="exportPorder"class="porderAction" method="exportPorder">

            <result name="success" type="stream">

                <param name="contentType">application/vnd.ms-excel</param>

                <param name="inputName">excelStream</param>

                <param name="contentDisposition">attachment;filename="${fileName}"</param>

                <param name="bufferSize">1024</param>

            </result>

        </action>

 

5.18: struts 实现ajax

Action 返回值 null

Jsp:

$.ajax({

    url:””,

    data:””,

   cache:,

   type:””,

   sync:false/ture,//默认是true

    success:function

});

 

 

 

 

 

 

 

5.18 java 批量提交

1:预处理

  conn = DBToolkit.getConnection();

  String sql ="insert into testdb.book (kind, name) values (?,?)";

  PreparedStatement pstmt= conn.prepareStatement(sql);

  pstmt.setString(1,"java");

  pstmt.setString(2,"jjjj");

  pstmt.addBatch();                    //添加一次预定义参数

  pstmt.setString(1,"ccc");

  pstmt.setString(2,"dddd");

  pstmt.addBatch();                    //再添加一次预定义参数

  //批量执行预定义SQL

pstmt.executeBatch();

2:执行静态的sql

Statement stmt = conn.createStatement();

  //连续添加多条静态SQL

  stmt.addBatch("insertinto testdb.book (kind, name) values ('java', 'java in aciton')");

  stmt.addBatch("insertinto testdb.book (kind, name) values ('c', 'c in aciton')");

  stmt.addBatch("deletefrom testdb.book where kind ='C#'");

  stmt.addBatch("updatetestdb.book set kind = 'JAVA' where kind='java'");

  //注意批量执行不支持Select语句

  //执行批量执行

  stmt.executeBatch();

 

 

5:18

   prePareStatement和 statement 的区别

   1:prePareStatement: 只用许绑定一条sql; 执行的时候:prePareStatement.execute();

   2:statement:允许执行多条sql;执行的时候:statement.execute(sql);

3:对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。 
4:当需要外部变量的时候,pstm的执行效率更高.

5:18

$.ajax({

type:"get",

url:"xxx/xx.action",

data:"id="+id,

cache:false,//false将不会从浏览器中加载缓存的信息

success:xxfunction

});

 

5:21

checkBox 后台action的取值问题;

在action 中获得的值为string[]

eg: String[] values = request.getParameterValues(“name”);

 

5.21

Struts action配置中

Action 没有class 则默认为:actionSupport

Action 没有method 则默认为:execute();

 

5.22

Eclipse 中web app libraries 中没有jar 包;

解决:

    到工程目录下.settings 下的 org.eclipse.wst.common.component

    配置对wb-resource:对应到相应的lib所在的顶级目录

    Eg:

<?xml version="1.0"encoding="UTF-8"?>

<project-modulesid="moduleCoreId" project-version="1.5.0">

   <wb-module deploy-name="tt.cn">

       <wb-resource deploy-path="/" source-path="/WebRoot"/>

       <wb-resource deploy-path="/WEB-INF/classes"source-path="/src"/>

       <property name="context-root" value="tt.cn"/>

       <property name="java-output-path" value="/tt.cn/build/classes"/>

   </wb-module>

</project-modules>

 

 

5:22  在java 中获得月份的天数

//获得每个月的实际天数

    public int getNum4Month(Stringdate){

    Calendarcal = new GregorianCalendar();

    SimpleDateFormatsimDate = new SimpleDateFormat("",Locale.ENGLISH);

    simDate.applyLocalizedPattern("yyyyMM");

    try{

         cal.setTime(simDate.parse(date));

    }catch(Exception e){

         e.printStackTrace();

    }

    int num = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

    return num;

    }

 

5:24 后台线程:

     后台线程不属于程序中不可或缺的部分;故当所有非后台线程都结束时候后台线程也将被销毁;

     后台线程的定义:

   Thread th  = new Thread(newRunndable);

   th.setDaemon(true);

   th.start();

 

5:24 写一个继承于ThreadFactory

     作用:可以指定Executors.newCacheThreadPool 的实现方式;

     Eg:

       Public class DaemonFactory implement ThreadFactory{

     PublicThread newThread(Runnable r){

    Threadt = new Thread(r);

    t.setDaemon(true);

    return t;

}

}

   Class   xxx{

Publicvoid xxx(){

     ExecutorServiceex = Executors.newCacheThreadPool(new DaemonFactory());

     Ex.executor(newxxxxrunnable());

}

}

 

5:24 js获得页面高度

<script> 
function getInfo() 


var s = ""; 
s += " 网页可见区域宽:"+document.body.clientWidth; 
s += "
网页可见区域高:"+document.body.clientHeight; 
s += "
网页可见区域宽:"+document.body.offsetWidth + " (包括边线和滚动条的宽)"; 
s += "
网页可见区域高:"+document.body.offsetHeight + " (包括边线的宽)"; 
s += "
网页正文全文宽:"+document.body.scrollWidth; 
s += "
网页正文全文高:"+document.body.scrollHeight; 
s += "
网页被卷去的高(ff)"+document.body.scrollTop; 
s += "
网页被卷去的高(ie)"+document.documentElement.scrollTop; 
s += "
网页被卷去的左:"+ document.body.scrollLeft; 
s += "
网页正文部分上:"+ window.screenTop; 
s += "
网页正文部分左:"+ window.screenLeft; 
s += "
屏幕分辨率的高:"+ window.screen.height; 
s += "
屏幕分辨率的宽:"+ window.screen.width; 
s += "
屏幕可用工作区高度:"+window.screen.availHeight; 
s += "
屏幕可用工作区宽度:"+window.screen.availWidth; 
s += "
你的屏幕设置是 "+window.screen.colorDepth +" 位彩色"; 
s += "
你的屏幕设置 "+window.screen.deviceXDPI +" 像素/英寸"; 
//alert (s); 

 

524  判断是否ie浏览器 

<script> 
if(!+[1,])alert("这是ie浏览器"); 
else alert("这不是ie浏览器"); 
</script>

5:28 eclipse 项目无法转化为web 2.5

    解决:打开.setting

         修改:org.eclipse.wst.common.project.facet.core.xml

 <installed facet="jst.web"version="2.5"/>

 

5:28: 在eclipse 中项目需要具有的libraries

       1:Web App Libraries

       2:JRE System Library

       3:Apache Tomcat v6.0

 

 

5:29  mybatis 如何实现多参数查询;

    在xxMapper.java 中的的方法:

       Public T getAccount(@Param(“name”)Stringname,@Param(“pwd”)String pwd);

 

在xxx-mapper.xml中

<select id=”xxx”>

     Select* from account where username=${name} and password=${pwd}

</select>

    

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值