1、 - ========================================J2SE======================================= 1. 形参中有可变数组参数时,可以直接在实参中,用逗号隔开来写上多个。 如void findUniqueResult(String hql, Object[] values){} vs.findUniqueResu
2、lt("from Vocation where name=? and id=?", "保3",Long.valueOf(2)); 2. 一个Object[]的数组中可以同时存放各种类型,如String ,Long 3.如果要对boolean的属性使用EL表达式,要将其isXX()方法改成,getXXX(); 4.如何获取date的下一天? 先new Caledar的子类实例。 调用实例的cal.setTime(date)的方法将date转换成calendar类型. 调用cal.add(cal.DATE,1);获取当前日历的下一天 调用cal.getTime();再将cal
3、endar转换成date类型。 5.比拟list集合中是否有指定对象obj出错。 问题描述:list中明明有一个对象与obj完全一样,但是调用list.contains(obj) 方法始终返回false,for遍历这个集合中的对象与obj比拟,是有一个对象与obj 相等的。 错误的原因:这个obj对象重写了hashcode与equals方法,去掉就可以了。并且集合的比拟要用equals。 6. set<>可以用增强for来循环输出吗?可以的,只不过输出的顺序与保存的顺序是不一样的。 ========================================J2EE
4、 1.no gramar constraints(XSD or DTD Schema) detected for the document警告 2. 在JSTL标签中使用EL表达式获取效劳器传来的数据与页面数据比拟时,要将页面中的数据放到${},放在外面不能比拟。正确的写法是:${cal.id>5} 3.如何在jsp页面中获取当前action路径。 1)${request.requestURL}获取到的是跳转后的jsp的路径。 2)window.location.href是在js中获取请
5、求路径 3)<%=request.getHeader("referer") %> 可以获得action请求的完整路径,而不是当前地址栏的路径。 只是怎么通过EL表达式来取有参数的值呢?localhost:8080/jshou/mng/friend_getAllUser.action ${header['Referer'] } 4) <%=basePath%>获得的是工程的路径localhost:8080/jshou/ ====前面的错误在于获取到的并不是当前地址栏中的路径 解决方法:在action中获取到请求的uri,
6、getRequest().getRequestURI(),再传递到页面中去。
4.
7、 image/bmp,image/png,image/gif,image/jpeg 7.页面中判断集合是否为空时,不需要用fn:length ,可以用${empty list} ========================================SSH======================================= spring 1.beanFactory报空指针异常。 错误是因为new的Dao实例,进展调用,以至于出现Dao中注入的Sessionfact
8、ory空指针。 使用spring的注入时,要先对需要注入的对象添加声明,再注入,注入的属性要提供setter方法。 2.业务基类报空指针异常的问题:有几种可能性 1)没有为具体的业务的set方法中注入基类的属性。 2)Autowired添加到了属性上,应该添加到get()方法上,否那么父类没法注入。 3..明明已经删除的类,却报spring的注入引用为空? --处理方法,将工程删除再重新导入就可以。至于为什么会这样,还没想到。 4. 已经翻开了OSIV,还有报延迟加载异常? --处理方法,设置lazy="false"。hibernate3的默认的lazy="
9、true"。推测在哪加上,就在对应的这端起作用。 要想在另一端起作用,还得另外再添加。测试所得,这样也不会影响load()方法的使用。也有可能这样做只是把延迟加载关闭了, OSIV仍然没有直到作用。 5.session必须是全部纳入spring管理,openSessionInviewFilter才能起作用是这样吗? 6.使用定时任务调度器: 方法中只有一行结果,但是执行了两次,为什么? 因为配了两个定时任务调度的配置文件,二者都在做一样的事情,会互相影响。 7.缓存配置文件中的声明文档?
10、C
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"
11、 1) 不能直接new一个DAO的实例,而应该通过spring的配置文件自动初始化session bean,然后再通过spring得到该DAO的引用,否那么在调用getHibernateTemplate()时,会获得一个null的空指针异常。 2) 在DAO的sql语句中,from后面的应该是POJO bean的类名,而不是数据库的表名。 也就是说,在引入spring的ioc时,所有的bean都在里面统一管理配置。在action里获得的那个dao并不是从spring的bean管理中〔applicationContext.xm
12、l〕获得的,因此也就没有获得象 datasource等资源,改正方法,在action里注入dao的引用就可以了。 Spring不是执行时通过web.xml进展配置的,是在启动效劳时就配好了的,所以在执行时只需调用注入进来的,如果这时候再new一个对象,是不会出错,只不过这个对象不是Spring注入进来的对象,所以在获得SessionFactory时抛出空指针。 Hibernate 1.hibernate语句正确,但是不往数据库中添加怎么回事? 1)事务没有提交! 2)hbm2ddl.auto 选项将自动生成数据库模式〔schema〕-直接参加数据库中。 2.为什么user_ho
13、bby表不报没有主键的警告??因只写了单向关联,没有写双向关联。 user_hobby中为什么不报没有主键的错误,反而有两个主键。参考建表语句。是因为用的是set吗?可是这有什么关系? --错误的原因在于primary key (user_id, hobby_id)不是指两个主键,而是指联合主键。 可能因为用的set不能有重复记录,生成了联合主键,来控制中间表的不重复。 3.org.hibernate.MappingException: Unsupported cascade style: true:有误写了cascade="true"的属性--Portrait的配置文件
14、中 4. Location中的关联属性的名字与配置文件中不一样 5.乐观锁版本号,不可以是Long型的。因为数据库中默认的是int类型。 6.一对多关联中,如果在配置了cascade="save-update"时,就算没有set一端的引用,也会 先往多端的数据库中发起一条insert语句,再保存本身??错误的原因在于,实体关联中new了对象。 7.为什么要在一端配置cascade="delete",因为不这样做的话,当有外键引用自本条记录时,这条记录是删不掉的。 8.根据Long型的id去获取记录时,需要显示进展类型转换,否那么会报错。如Long.valueOf(3)。
15、9. 保存一对多关系时,要先将获取到一端的对象,再去添加,这样会影响执行效率的。
--错误的原因在于使用了立即获取对象,应该用load()去延迟加载,返回代理对象Id。
10. 怎么实现多对多的关联查询??
--解决方法,不要用两个一对多,直接用
16、y 默认是false,即时加载
补充一点,你的lazy之所以没有“TRUE〞可以选,那是因为你的lazy应用对象是普通类型字段〔String〕而非集合类。
普通字段的lazy就是这样的,proxy表示用jdk动态代理实现lazy=true, no-proxy表示用cglib的类增强方式代理实现lazy=true。
,
17、y/non-proxy,一般来说两者差不多,看你喜欢哪样了,cglib 的代理是通过修改*.class字节码实现的。
12. 在test类中获取load对象获取不到。
--错误的原因在于使用了已经关闭的session。要获取load对象,需要在受session管理的X围中。
13.使用多个配置文件不起作用。错误的原因在于路径不对,不要写成. ,应该写成
18、 session,只能在同一个中去使用。如果一定要用,可以先将原来的对象变成持久化对象,懒加载上来,再去加载。 15.OSIV开启后可以级联很多个,如user.vocation.name 16. HQL中也可以通过关联对象的id来查询对象,如from Student where user_id =?(Student中的是User). 推测可能是HQL中的字段使用数据库中的和对象中的都可以,只不过,对象中的HQL会自动转成 对象.字段名,where calendar0_.start_time and user_id=? 而写成数据库字段名时会直接显示 whe
19、re start_time and user_id=? 15.如何执行HQL的多表关联查询? FORM article,type WHERE article.Article_Type = type.id" 这里type.id是你type表里面栏目的id,对应你article表里面的Article_Type。 16.如何在多表关联查询中添加条件。 1)自己写SQL语句: from A a left join a.user b where a.id=? 17.多对多关联实现分页查询时,要注意: 1)写参数时一定要主动进展类型转换:如Long.valueOf(1)
20、2)注意多对多查询总记录时不能用count(*),因为多对多查询出来的结果可以是各种各样的。 18. 多对多查询的排序和分页不能同时实现??? "select friends from User as user left join user.friendList as friends where user.id=? order by friends.id desc";排序与分页是可以同时实现的。 19.分页标签中使用组合查询时,每次点击上、下页之后就会自动变成查询所有的分页。 根据推测是跳转路径出错,解决方法是从action中传递一个请求过来。 put2ActionContext("
21、uri", getRequest().getRequestURI()); 20.往多对多关联表的中间表中插入数据时,要用insert into rel_u2f values(2,1);直接插入; 不能指定表的字段名,否那么会报引用了两个外键的错误。 21.使用组合查询要注意: 1)拼sql语句,sb="...where 1=1" 拼可变条件参数:List
22、得加"%",否那么查不到结果 3〕查询时将参数转换,sb.toString(),params.toArray(); 22. moveService已经添加自动注入,并且提供了getter/setter方法,执行到userService时报空指针异常。 原因:创立表时外键名与原有的重复,没创立上。 另一个重要的原因是没在set方法中添加setBaseDao。 23.有一个对象user,是从session中取到的,如果要用user的普通属性直接 调用如user.getName()就可以了,但是如果要用到user中的集合属性,比方说 user.getFriendList(),
23、那么需要先调用userService.load(user.getId())为这个user开启一个session才能使用。 24.Caused by: org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1 问题:多了hql参数 25.Hibernate会将解释不了的hql语句,原封不动地转成sql语句,所以sql语句中能
24、用的语句在hql中都是可以使用的。 26.hibernate中设置默认值:在配置文件的属性中添加 Not-Null='true' 27.组件类需要提供toString()方法来测试吗?组件的增加,删除hibernate是怎么去实现的? 28.组件映射中 class=".jshou.friend.bean.Contact"一定要指定吗? 29.外键名的指定应该在引用端,而不是在被引用端。 30.多对多关联中,两个外键名注意不要取成一样的。 31.在POJO类中添加Hibernate的映射关系时,关联的对象的引用是不需要new出来的。 32. HQL中很多用户发现使用完全大写
25、的关键字会使查询语句的可读性更强, 但我们发现,当把查询语句嵌入到Java语句中的时候使用大写关键字比拟难看。
33. 如果有很多类中需要用到一样的方法名,可以先写一个基类,再通过重写方法来实现。
34.
26、not-null="true",或者使用双向关联,并标明inverse="true". 35.将好友改成密友时需要在密友_用户表中添加关联,还要在好友_用户中移除关联。 36.组件映射:组件元素的非空问题?? 37.写实体类时最好先写普通属性,重写完hashCode(),equals(),toString()方法之后再添加关联属性。 38. 级联保存数据的时候,为什么多对多的set中,调用了user.setHobbySet(hobbySet)只会保存set中的第一行数据? 39.多对多中间表的删除需要那么复杂吗? 40. 对多对多关联的维护,设置了inverse之后,就只能对
27、中间类进展维护,而不能只维护一端了吗? 41.当有互相关联的时候,初始化数据的先后顺序是怎么样的?只能通过更改去实现是吗? 42.有一个查询中,如果不输入分类,就会出错,需要添加条件判断一下。 Struts 1.struts2中怎么配置从一个action跳转到另一个action? Result(name="postSucc", location="/bbs/topic.htm?id=${id}", type="redirect")} 2.struts配置的action中有包名时,配置说The requested resource (/jshou/mng/remind/li
28、st.action) is not available. 错误的原因在于没有在Action前面加上spring的注解。 3.关于struts2的配置。namespace有开场/ ,没有完毕/, action中没有前后/ 4. 使用struts2时,如果JSP页面中有date类型的字段,那么需要添加日期转换器,否那么容易出现找不到action的错误。 5.struts2的两个action之间怎么传递参数? 直接用OGNL表达式,在action的路径后面加上?id=${#id} ?这里一定要加#吗? 6.Struts has detected an unhandled
29、exception: net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 错误导致HQL语句的参数设置不上,原因在于参数的类型不匹配,比方用的id为Long型的。 设置参数时设置成setParam(0,1)这样就会报上面的异常。还有hql的参数下标是从0开场的。 7.执行到action,但是返回时总不跳转指定的result页面,并且参数也获取不到。 传递参数时少写了$,应该写成id=${id} 8. struts2中自己写验证时要注意: 1) 继承自ActionSupport类 2)命名规那么:val
30、idate+方法名首字母大写 :如 void validateAdd(){}
3)通过this.addFieldError("msg","错误信息提示");来阻止继续访问
5)在页面中通过
31、ts中动态显示下拉框中的内容
32、独的name="token"的action。 3)配置正确,拦截器却不起作用??? 原因在于,拦截器的action要放在其它action之前。 16.当路径正确,在地址栏中直接输入可以跳转到action里面的方法,通过form不进Action时,检查js与form元素的属性。 17.ActionContxt类中的getContext()中的put方法是怎么回事??? 18.struts2中可以用级联级联再级联来获取对象: 比方:user.vocation.id,Action类中就可以通过user.getVocation().getId()来获取 19.action配置文件
33、中传递多个参数时,不有&隔开,用;隔开。 20.使用token有一个前提,就是表单必须使用html:form标签来完成。另外struts2是用拦截器来实现的。 21.struts2中实现去掉后缀及url重写的方法。考虑:页面中的form直接用struts标签可以吗? 22.当时是因为什么原因,要用uri来传递分页中的地址。现在进展一对多查询时会报错???但是突然又不报错了??报错的原因在于将参数uri写成了url。 23.Struts2中的使用OSIV加载配置文件时,要将hibernate..OSIV,改成hibernate3.。 24. 为什么FriendAction
34、中没有添加Spring的注解也可以运行??到底在Action中添加注解是做什么用的? 并没有地方需要通过注解来调用到Action??? 25.如何防止表单的重复提交? Token ========================================Server======================================= ========================================数据库======================================= 1. MySQL> select *from rel_u2
35、f; ERROR 1064 (42000) -- 错误的原因在于sql语句中有空格,去掉空格即可。 2. 数据库的命令行出现中文乱码的问题? 3.SQL中的中文不能按照首字母的顺序来排序,是按一种树的顺序来排列的。 sql2005 中:collate Chinese_PRC_CI_AS ,Chinese_PRC是按照中文排序。 参考wenku.baidu./view/caf98a254b35eefdc8d3332d.html 4. between 包上不包下,也就是说,前面的你需要减一天,而后面的保持不变 比方要查询8号的,你就该查询 betwee
36、n 7 and 8 5.create table emp_his as select * from emp where 1!=1; 这是创立一个和EMP表的备份表但它只有EMP表的构造里面的数据为空: create table emp_his as select * from emp where 1=1; 这才是创立EMP表的备份表 9.hibernate中执行批量更新: String hqlupdate="update User set name=:newName"; int updateEntities=session.createQuery(hqlupdate)
37、 .setString("newName", "我不是一个人") .executeUpdate(); 6.mysql中如何计算时间差? SELECT TIMESTAMPDIFF(MINUTE, '2010-04-23 17:53:38', '2010-04-22 15:49:43'); 7.mysql计算时间差?格式化时间? from Calendar where TIMESTAMPDIFF(MINUTE,'" + temp+ "',startTime)<0 temp表示的是当前时间,这句hql语句指查询出大于当前时间的日程。 8.state为int类型,如果添加
38、时不指定,保存到数据库中的是0还是null?--数据库默认值问题。 9.表中字段没有添加not null,unique约束。 10.表中哪些字段需要设定初始值。 11.保存到数据库中的date的类型没有指定。timestamp??? 12.并不是所有的数据库中取出来的数据都需要单独添加超去查看,可以在存储数据的时候就写好。 如content='好友' ========================================IDE工具======================================= 1.工程可以在MyEclips
39、e中启动,但是直接打成.war包在Tomcat下启动有问题。 错误的原因可能是.war包打得不对。 目前有个很笨的解决方法:先在MyEclipse中部署工程,启动后关闭MyEclipse,然后将带有工程的Tomcat整个文件复制到其它电脑上用就可以了。 另外,工程不可以放到tomcat6.0.26与24下,这两个版本有一个关于ThreadLocal的bug,使用稳定的tomcat6.0.20比拟好。 这个问题可能跟用的jar包的版本出错,或者是工程部署有问题,或者是跟打.war包的方法不对,或者是少了jar包。也有可能跟tomcat目录的绝对路径有关系。 2.工程运行时可以正
40、常运行,但是发布到效劳器上时就找不到路径? 错误的原因:工程中用到的所有路径,最好都不要直接写出来,而是直接通过contextPath去获取。 3.工程部署问题: 1.将编译好的工作空间中工程下的WebRoot包全复制到Tomcat中的webapps下; 2.将所有的jar包复制到WebRoot下的lib包中;注意JDK1.5开发的要加JSTL包。 3.将WebRoot改成工程名。 4.运行bin下的start.bat直接访问就可以了。 注意:WebRoot下要有编译好的classes文件。\ ==========================
41、其它======================================= 1.写工程时要多注意添加判断条件。否那么容易出错。 2.log4j的配置,只对框架起作用,对自己的工程不起作用? 原因:导包错了。 应该导入:import org.apache.mons.logging.Log; import org.apache.mons.logging.LogFactory; 错误在于:导了sun的包 //import .sun.org.apache.mons.logging.Log; //import .sun.org.apache.mons.logging.LogFactory; 3.加密公开这个问题。 4.权限管理。 - word.zl.






