JAVA开发中遇到的问题和异常_第1页
JAVA开发中遇到的问题和异常_第2页
JAVA开发中遇到的问题和异常_第3页
JAVA开发中遇到的问题和异常_第4页
JAVA开发中遇到的问题和异常_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精选文库=J2SE=1. 形参中有可变数组参数时,可以直接在实参中,用逗号隔开来写上多个。 如void findUniqueResult(String hql, Object values) vs.findUniqueResult(from Vocation where name=? and id=?, 保3,Long.valueOf(2);2. 一个Object的数组中可以同时存放各种类型,如String ,Long3.如果要对boolean的属性使用EL表达式,要将其isXX()方法改成,getXXX();4.如何获取date的下一天?先new Caledar的子类实例。调用实例的cal.setTime(date)的方法将date转换成calendar类型.调用cal.add(cal.DATE,1);获取当前日历的下一天调用cal.getTime();再将calendar转换成date类型。5.比较list集合中是否有指定对象obj出错。问题描述:list中明明有一个对象与obj完全一样,但是调用list.contains(obj)方法始终返回false,for遍历这个集合中的对象与obj比较,是有一个对象与obj相等的。错误的原因:这个obj对象重写了hashcode与equals方法,去掉就可以了。并且集合的比较要用equals。6. set可以用增强for来循环输出吗?可以的,只不过输出的顺序与保存的顺序是不相同的。=J2EE=1.no gramar constraints(XSD or DTD Schema) detected for the document警告2. 在JSTL标签中使用EL表达式获取服务器传来的数据与页面数据比较时,要将页面中的数据放到$内,放在外面不能比较。正确的写法是:$cal.id53.如何在jsp页面中获取当前action路径。 1)$request.requestURL获取到的是跳转后的jsp的路径。 2)window.location.href是在js中获取请求路径 3) 可以获得action请求的完整路径,而不是当前地址栏的路径。 只是怎么通过EL表达式来取有参数的值呢?http:/localhost:8080/jshou/mng/friend_getAllUser.action $headerReferer 4) 获得的是项目的路径http:/localhost:8080/jshou/ =前面的错误在于获取到的并不是当前地址栏中的路径 解决方法:在action中获取到请求的uri,getRequest().getRequestURI(),再传递到页面中去。4.1 123表达式写正确了,但是结果不正确怎么回事?错误的原因在于test属性值的EL表达式后面多了空格,去掉就可以了。5.servlet中进行文件上传时,只能用post的方式提交类型为multi-part/form的数据。6.文件上传格式拦截器的配置: image/bmp,image/png,image/gif,image/jpeg 7.页面中判断集合是否为空时,不需要用fn:length ,可以用$empty list=SSH=spring1.beanFactory报空指针异常。 错误是因为new的Dao实例,进行调用,以至于出现Dao中注入的Sessionfactory空指针。 使用spring的注入时,要先对需要注入的对象添加声明,再注入,注入的属性要提供setter方法。2.业务基类报空指针异常的问题:有几种可能性 1)没有为具体的业务的set方法中注入基类的属性。 2)Autowired添加到了属性上,应该添加到get()方法上,否则父类没法注入。3.明明已经删除的类,却报spring的注入引用为空?-处理方法,将项目删除再重新导入就可以。至于为什么会这样,还没想到。4. 已经打开了OSIV,还有报延迟加载异常?-处理方法,设置lazy=false。hibernate3的默认的lazy=true。推测在哪加上,就在对应的这端起作用。 要想在另一端起作用,还得另外再添加。测试所得,这样也不会影响load()方法的使用。也有可能这样做只是把延迟加载关闭了, OSIV仍然没有直到作用。5.session必须是全部纳入spring管理,openSessionInviewFilter才能起作用是这样吗?6.使用定时任务调度器:方法中只有一行结果,但是执行了两次,为什么?因为配了两个定时任务调度的配置文件,二者都在做相同的事情,会互相影响。7.缓存配置文件中的声明文档?8. session管理的对象用saveOrUpdate(),脱管状态的才用update()?9. 不能在test当中获取打开OSIV可以获取到的对象?必须经过请求才能获取?10.Spring注入SessionFactory的空指针异常。 异常描述:自己的错误在于,new的Dao实例,进行调用,以至于出现Dao中注入的Sessionfactory空指针。 在hibernatespring配置过程中,应注意几点: 1) 不能直接new一个DAO的实例,而应该通过spring的配置文件自动初始化session bean,然后再通过spring得到该DAO的引用,否则在调用getHibernateTemplate()时,会获得一个null的空指针异常。2) 在DAO的sql语句中,from后面的应该是POJO bean的类名,而不是数据库的表名。也就是说,在引入spring的ioc时,所有的bean都在里面统一管理配置。在action里获得的那个dao并不是从spring的bean管理中(applicationContext.xml)获得的,因此也就没有获得象 datasource等资源,改正办法,在action里注入dao的引用就可以了。Spring不是执行时通过web.xml进行配置的,是在启动服务时就配好了的,所以在执行时只需调用注入进来的,如果这时候再new一个对象,是不会出错,只不过这个对象不是Spring注入进来的对象,所以在获得SessionFactory时抛出空指针。Hibernate1.hibernate语句正确,但是不往数据库中添加怎么回事?1)事务没有提交!2)hbm2ddl.auto 选项将自动生成数据库模式(schema) 直接加入数据库中。2.为什么user_hobby表不报没有主键的警告?因只写了单向关联,没有写双向关联。 user_hobby中为什么不报没有主键的错误,反而有两个主键。参考建表语句。是因为用的是set吗?可是这有什么关系? -错误的原因在于primary key (user_id, hobby_id)不是指两个主键,而是指联合主键。 可能因为用的set不能有重复记录,生成了联合主键,来控制中间表的不重复。3.org.hibernate.MappingException: Unsupported cascade style: true:有误写了cascade=true的属性-Portrait的配置文件中4. Location中的关联属性的名字与配置文件中不相同5.乐观锁版本号,不可以是Long型的。因为数据库中默认的是int类型。6.一对多关联中,如果在配置了cascade=save-update时,就算没有set一端的引用,也会 先往多端的数据库中发起一条insert语句,再保存本身?错误的原因在于,实体关联中new了对象。7.为什么要在一端配置cascade=delete,因为不这样做的话,当有外键引用自本条记录时,这条记录是删不掉的。8.根据Long型的id去获取记录时,需要显示进行类型转换,否则会报错。如Long.valueOf(3)。9. 保存一对多关系时,要先将获取到一端的对象,再去添加,这样会影响执行效率的。 -错误的原因在于使用了立即获取对象,应该用load()去延迟加载,返回代理对象Id。10. 怎么实现多对多的关联查询?-解决方法,不要用两个一对多,直接用,这样就只在其中一端配置inverse,不再需要cascade了,这样delete与update、add需要自己手动去控制。11.one-to-many lazy 默认是true,即延时加载 many-to-many lazy 默认是true,即延时加载 many-to-one lazy 默认是false,即时加载补充一点,你的lazy之所以没有“TRUE”可以选,那是因为你的lazy应用对象是普通类型字段(String)而非集合类。普通字段的lazy就是这样的,proxy表示用jdk动态代理实现lazy=true, no-proxy表示用cglib的类增强方式代理实现lazy=true。, , 等映射标签上的属性lazy最常见,就是lazy=true/false。上的lazy则是对该类内所有集合映射的一个统一开关。普通字段上的lazy则必须通过动态代理实现,也就是上面说到的proxy/non-proxy,一般来说两者差不多,看你喜欢哪样了,cglib 的代理是通过修改*.class字节码实现的。12. 在test类中获取load对象获取不到。-错误的原因在于使用了已经关闭的session。要获取load对象,需要在受session管理的范围中。13.使用多个配置文件不起作用。错误的原因在于路径不对,不要写成. ,应该写成。14.延迟加载错误的原因在于在两个请求当中去使用了session, 只能在同一个session,OSIV为每请求分配了一个session,只能 在同一个中去使用。如果一定要用,可以先将原来的对象变成持久化对象,懒加载上来,再去加载。15.OSIV开启后可以级联很多个,如16. HQL中也可以通过关联对象的id来查询对象,如from Student where user_id =?(Student中的是User). 推测可能是HQL中的字段使用数据库中的和对象中的都可以,只不过,对象中的HQL会自动转成 对象.字段名,where calendar0_.start_time? and user_id=? 而写成数据库字段名时会直接显示 where 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)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(uri, getRequest().getRequestURI();20.往多对多关联表的中间表中插入数据时,要用insert into rel_u2f values(2,1);直接插入;不能指定表的字段名,否则会报引用了两个外键的错误。21.使用组合查询要注意:1)拼sql语句,sb=.where 1=1拼可变条件参数:List parms;2)追加sb.append( and name like ?)/注意这里的空格追加条件参数:params.add(%+name+%);/参数一定要处理好,记得加%,否则查不到结果3)查询时将参数转换,sb.toString(),params.toArray();22. moveService已经添加自动注入,并且提供了getter/setter方法,执行到userService时报空指针异常。原因:创建表时外键名与原有的重复,没创建上。另一个重要的原因是没在set方法中添加setBaseDao。23.有一个已知对象user,是从session中取到的,如果要用user的普通属性直接调用如user.getName()就可以了,但是如果要用到user中的集合属性,比如说user.getFriendList(),则需要先调用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语句中能用的语句在hql中都是可以使用的。26.hibernate中设置默认值:在配置文件的属性中添加 Not-Null=true27.组件类需要提供toString()方法来测试吗?组件的增加,删除hibernate是怎么去实现的?28.组件映射中 class=com.jshou.friend.bean.Contact一定要指定吗?29.外键名的指定应该在引用端,而不是在被引用端。30.多对多关联中,两个外键名注意不要取成一样的。31.在POJO类中添加Hibernate的映射关系时,关联的对象的引用是不需要new出来的。32. HQL中 很多用户发现使用完全大写的关键字会使查询语句 的可读性更强, 但我们发现,当把查询语句嵌入到Java语句中的时候使用大写关键字比较难看。33. 如果有很多类中需要用到相同的方法名,可以先写一个基类,再通过重写方法来实现。34. 注意:one-to-many元素不需要定义任何字段,也不需要指定表名。 重要提示:如果一对多关联中的外键字段定义成not null,你改成把映射声明成 not-null=true,或者使用双向关联,并标明inverse=true.35.将好友改成密友时需要在密友_用户表中添加关联,还要在好友_用户中移除关联。36.组件映射:组件元素的非空问题?37.写实体类时最好先写普通属性,重写完hashCode(),equals(),toString()方法之后再添加关联属性。38. 级联保存数据的时候,为什么多对多的set中,调用了user.setHobbySet(hobbySet)只会保存set中的第一行数据?39.多对多中间表的删除需要那么复杂吗?40. 对多对多关联的维护,设置了inverse之后,就只能对中间类进行维护,而不能只维护一端了吗?41.当有互相关联的时候,初始化数据的先后顺序是怎么样的?只能通过更改去实现是吗?42.有一个查询中,如果不输入分类,就会出错,需要添加条件判断一下。Struts1.struts2中怎么配置从一个action跳转到另一个action?Result(name=postSucc, location=/bbs/topic.htm?id=$id, type=redirect)2.struts配置的action中有包名时,配置说The requested resource (/jshou/mng/remind/list.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 exception:xy.MethodProxy.invoke(MethodProxy.java:191)错误导致HQL语句的参数设置不上,原因在于参数的类型不匹配,比如用的id为Long型的。设置参数时设置成setParam(0,1)这样就会报上面的异常。还有hql的参数下标是从0开始的。7.执行到action,但是返回时总不跳转指定的result页面,并且参数也获取不到。传递参数时少写了$,应该写成id=$id8. struts2中自己写验证时要注意:1) 继承自ActionSupport类2)命名规则:validate+方法名首字母大写 :如 void validateAdd()3)通过this.addFieldError(msg,错误信息提示);来阻止继续访问5)在页面中通过来获取4)要为这个方法在struts配文件中置input参数9. struts2中用拦截器来进行验证10. struts2中用验证框架来验证11. struts2中用过滤器来验证12.更改密码时不起作用,其它都对。原因:set的密码应该是原密码,而要修改的应该是新密码,这里容易混淆。13. struts中动态显示下拉框中的内容 html:select . auth:optionsCollection name=.可以通过if/else标签来判断,if中的表达式可以用函数来比较两个对象。多出来的问题:EL中有equals方法吗?显然没有。14.Action中获取不到页面中传递过来的隐藏表单域的值?原因在于不是在input元素当中,不能自动提交并获取,只有通过参数传递。15.struts2中的Token的使用方法?1)在form表单之前添加;2)在struts2的配置文件中添加token拦截器的配置,单独的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配置文件中传递多个参数时,不有&隔开,用;隔开。20.使用token有一个前提,就是表单必须使用html:form标签来完成。另外struts2是用拦截器来实现的。21.struts2中实现去掉后缀及url重写的方法。考虑:页面中的form直接用struts标签可以吗?22.当时是因为什么原因,要用uri来传递分页中的地址。现在进行一对多查询时会报错?但是突然又不报错了?报错的原因在于将参数uri写成了url。23.Struts2中的使用OSIV加载配置文件时,要将hibernate.OSIV,改成hibernate3.。24. 为什么FriendAction中没有添加Spring的注解也可以运行?到底在Action中添加注解是做什么用的?并没有地方需要通过注解来调用到Action?25.如何防止表单的重复提交? Token=Server=数据库=1.MySQL select *from rel_u2f; ERROR 1064 (42000) - 错误的原因在于sql语句中有空格,去掉空格即可。2. 数据库的命令行出现中文乱码的问题?3.SQL中的中文不能按照首字母的顺序来排序,是按一种树的顺序来排列的。 sql2005 中:collate Chinese_PRC_CI_AS ,Chinese_PRC是按照中文排序。 参考/view/caf98a254b35eefdc8d3332d.html4. between 包上不包下,也就是说,前面的你需要减一天,而后面的保持不变 比如要查询8号的,你就该查询 between 7 and 85.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) .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)0temp表示的是当前时间,这句hql语句指查询出大于当前时间的日程。8.st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论