积累的问题多了,就不怕问题来。

一,Eclipse配置问题

1.启动项目,内存溢出

Eclipse->Window->Preferences->Server->RuntimeEnvironments->选中Apache Tomcat v5.0->点击Edit按钮->在弹出对话框里点击JRE后面的InstalledJREs按钮->在弹出对话框中选中tomcat使用的那个JRE->点击Edit按钮->在弹出对话框中,找到DefaultVM Arguments,并在输入框中输入:-Xms512M-Xmx1024M  -XX:MaxPermSize=512m,然后finish->OK->OK。

2.java文件,实心J变成了空心J

http://blog.sina.com.cn/s/blog_a7d7993f0102wcp3.html

3.修改了JDK后,启动tomcat报错,提示:

The archive: C:/Program Files(x86)/Java/jdk1.7.0_10/lib/tools.jar which is referenced by the classpath, doesnot exist.

java文件有个橙色的时钟 java文件运行时一片空白_java文件有个橙色的时钟

打开Eclipse中tomcat配置,就是双击server选项卡中的tomcat,然后选择openlaunch configuration,如下图所示:

java文件有个橙色的时钟 java文件运行时一片空白_spring_02

打开以后会出现如下界面:

java文件有个橙色的时钟 java文件运行时一片空白_sql_03

如上图所示,我标注出了错误路径,将这个错误路径删除,并保证正确配置tools.jar和bootstrap.jar这两个jar包的路径。

二,开发问题

1.struts2:

配置多个拦截器,before正常执行所有拦截器,after只执行最后一个拦截器,待解决。

2.ibatis连接数据库mysql

报错内容: Connection is read-only. Queries leading to data modification are not allowed

连接是只读的。查询导致数据修改不允许)

问题原因,在spring中没有配置事务的权限:

[html] view plain copy

1. <bean id="baseTransactionProxy"  
2. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"  
3. abstract="true">  
4. <property name="transactionManager" ref="transactionManager" />  
5. <property name="transactionAttributes">  
6. <props>  
7. <prop key="insertSynchronized*">PROPAGATION_REQUIRES_NEW</prop>  
8. <prop key="insert*">PROPAGATION_REQUIRED</prop>  
9. <prop key="create*">PROPAGATION_REQUIRED</prop>  
10. <prop key="add*">PROPAGATION_REQUIRED</prop>  
11. <prop key="update*">PROPAGATION_REQUIRED</prop>  
12. <prop key="reset*">PROPAGATION_REQUIRED</prop>  
13. <prop key="delete*">PROPAGATION_REQUIRED</prop>  
14. <prop key="del*">PROPAGATION_REQUIRED</prop>  
15. <prop key="save*">PROPAGATION_REQUIRED</prop>  
16. <prop key="edit*">PROPAGATION_REQUIRED</prop>  
17. <prop key="release*">PROPAGATION_REQUIRED</prop>  
18. <prop key="modify*">PROPAGATION_REQUIRED</prop>  
19. <prop key="change*">PROPAGATION_REQUIRED</prop>  
20. <prop key="invoke*">PROPAGATION_REQUIRED</prop>  
21. <prop key="submit*">PROPAGATION_REQUIRED</prop>  
22. <prop key="batchImport*">PROPAGATION_REQUIRED</prop>  
23. <prop key="flush*">PROPAGATION_REQUIRED</prop>  
24. <prop key="excute*">PROPAGATION_REQUIRED</prop>  
25. <prop key="replace*">PROPAGATION_REQUIRED</prop>  
26. <prop key="export*">PROPAGATION_REQUIRED</prop>  
27. <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>  
28. </props>  
29. </property>  
30. </bean>


2.spring 配置

在application.xml中添加


[html] view plain copy

1. <context:component-scan base-package="com.core.mvc" />

报错:The prefix "context" for element "context:component-scan" is not bound.

将<beans>里面的内容从

[html] view plain copy

1. <beans xmlns="http://www.springframework.org/schema/beans"  
2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
3. xmlns:tx="http://www.springframework.org/schema/tx"  
4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
5.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
6.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"  
7. default-autowire="byName" default-lazy-init="true">

改为

[html] view plain copy

1. <beans xmlns="http://www.springframework.org/schema/beans"  
2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
3. xmlns:aop="http://www.springframework.org/schema/aop"  
4. xsi:schemaLocation="http://www.springframework.org/schema/beans  
5.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
6.            http://www.springframework.org/schema/context  
7.            http://www.springframework.org/schema/context/spring-context-2.5.xsd  
8. >

OK!

3.springmvc 

3.1 springmvc 传参

controller

[java] view plain copy

1. @Controller  
2. @RequestMapping("/test")  
3. public class MyController {  
4. @Resource  
5.     MyService myService;  
6.   
7.       
8.       
9. @RequestMapping("/lzz")  
10. public String test(HttpServletRequest request,  
11.             HttpServletResponse response, User user) {  
12.         System.out.println(user.getUsername());  
13.         myService.login(user.getUsername());  
14. return "test";  
15.     }

 

user对象:

[java] view plain copy

    1. package com.core.mvc.model;  
    2.   
    3. public class User {  
    4. private int age;  
    5. private String username;  
    6. private String password;  
    7.   
    8. public int getAge() {  
    9. return age;  
    10.     }  
    11.   
    12. public void setAge(int age) {  
    13. this.age = age;  
    14.     }  
    15.   
    16. public String getUsername() {  
    17. return username;  
    18.     }  
    19.   
    20. public void setUsername(String username) {  
    21. this.username = username;  
    22.     }  
    23.   
    24. public String getPassword() {  
    25. return password;  
    26.     }  
    27.   
    28. public void setPassword(String password) {  
    29. this.password = password;  
    30.     }  
    31. }

    jsp:


    [html] view plain copy

    1. <form action="<%=path%>/test/lzz">  
    2. <input type="text" name="user.username">   
    3. <input type="text" name="user.password">   
    4. <input type="submit" value="test_lzz">  
    5. </form>

     


    jsp使用以上写法,后台不能获取参数改为:


    [html] view plain copy

    1. <form action="<%=path%>/test/lzz">  
    2. <input type="text" name="username">   
    3. <input type="text" name="password">   
    4. <input type="submit" value="test_lzz">  
    5. </form>


    能在后台获取参数!!!

    这里必须用name="test"而不是user.name="test",因为默认情况下springMVC是不支持user.name这种传参方式的。


    mysql连接出错,提示:java.sql.SQLException: Unknown system variable 'language' 

    原因:mysql的驱动版本过高,修改:

    mysql-connector-java-5.1.36.jar 版本太高了,换成

    mysql-connector-java-5.1.24.jar

    java开发遇到的问题总结(一)


    0、搭建框架(SSI)时注意事项:

    1)写好jsp、Action、bean、dao、service里所用的类后,需要在src/struts-config中配置struts2

    <actionname="前台所要跳转到的action"class="action类名"
    method="action中的方法名">
    </action>
    2)在WebRoot/spring-config/名.xml中配置spring:
           <beanid="Dao类名"
    class="Dao的实现类全路径">
                  <propertyname="sqlMapClient">
                         <refbean="sqlMapClient" />
                  </property>
           </bean>
           <beanid="service类名"class="service的实现类全路径">
                  <propertyname="Dao类名里的属性名(为防止意外可以与下一行的ref bean里填写的一样)">
                         <refbean="Dao类名(与上面配置Dao的id名必须一致)"/>
                  </property>
           </bean>
           <beanid="Action的类名"
    class="Action的全路径"singleton="false">
                  <propertyname="service里的属性名(为防止意外可以与下一行的ref bean里填写的一样)">
                         <refbean="service类名(与上面配置service的id名必须一致)"/>
                  </property>
           </bean>

    3)配置sqlMapConfig.xml:把你在bean中所写的.xml文件配置到此文件中,如

    <sqlMapresource="com/ailk/bomc/report/itsm/bean/KpiPerMonSys.xml"/>需要写全路径

    4)注意在.xml文件中需要有完整的头部,否则会报错,完整头部:

    <?xmlversion="1.0" encoding="UTF-8"?>
    <!DOCTYPEsqlMap
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMapnamespace="emergencyKPIspace10">
    <typeAliasalias="map" type="java.util.Map"/>
    <typeAliasalias="list" type="java.util.List"/>
    </sqlMap>

    5)在DaoImpl类中需要继承SqlMapClientDaoSupport因为在spring的Dao时里面依赖注入了它的属性sqlMapClient。

    6)注意在sericeImpl类中要写Dao的setter与getter方法,Action类中也要写service与Bean的setter和getter方法。

    项目运行流程:Action——>service——>serviceImpl——>Dao——>DaoImpl——>bean中的.xml所对应的sql。

    1、报错:Thereis no statement named emergencyKPIspace.codename in this SqlMap.

    原因:自己写的.xml没有加载到sqlMapConfig.xml中,应写:<sqlMap resource="com/ailk/bomc/report/emergencyKPI/bean/Kpi.xml"/>

    即:绝对路径/你所写的.xml

    2、注意:在ibatis中#变量#,是用来传值,$变量名$用来字符串拼接

    3、报错:Cannotmake a static reference to the non-static method queryNatureCodeName() from thetype KpiTotalEveNatureDaoInterf

    翻译:不能让一个静态引用非静态方法queryNatureCodeNameKpiTotalEveNatureDaoInterf()的类型

    原代码:

    java文件有个橙色的时钟 java文件运行时一片空白_java文件有个橙色的时钟_04

    原因:return时应该为Dao的对象即小写的kpiTotalEveNatureDaoInterf

    4、报错:Themethod getSqlMapClient() is undefined for the type KpiTotalEveNatureDaoImpl

    原因:Dao层需要继承extendsSqlMapClientDaoSupport

    6、报错:

    java文件有个橙色的时钟 java文件运行时一片空白_xml_05

    原因:框架搭建错误,或者.xml的sql空间名称冲突

    7、报错:Exceptionoccurred during processing request: null

    java.lang.reflect.InvocationTargetException

           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

           atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

           atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

           at java.lang.reflect.Method.invoke(Method.java:597)

    原因:查看dao中所引用的sql及命名空间是否正确,或者是xml中sql的id等是否匹配正确。

    8、报错:com.ibatis.common.jdbc.exception.NestedSQLException:  

    --- The erroroccurred while applying a parameter map. 

    --- Check theemergencyKPIspace3.getQueryEveList-InlineParameterMap. 

    --- Check the statement(query failed). 

    --- Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束

    原因:在JAVA中接接字符串处对应不一致。

    9、报错:---Theerror occurred while applying a parameter map. 

    --- Check theemergencyKPIspace3.getQueryEveList-InlineParameterMap. 

    --- Check thestatement (query failed). 

    --- Cause: java.sql.SQLException: ORA-00904:"B"."FLD_MAT_HAPPEN_DATE": 标识符无效

    原因:传入时间在.xml拼接的位置不对应,原SQL中的时间条件在哪写,拼接的<isNotEmptyprepend="AND" property="fromTime">

    <![CDATA[ b.fld_mat_happen_date>=to_date(#fromTime#,'yyyy-MM-dd hh24:mi:ss')]]>也要写在相应位置上,不能随便放置。

    10、当ibatis的SQL中有汉字时需要通过变量来传递。

    1)变量不参与业务逻辑时可以直接在DaoImpl中写,如:

    java文件有个橙色的时钟 java文件运行时一片空白_spring_06

    然后在ibatis的xml文件中用到汉字的地方用#括起来,如select* from 表名 where 字段名=#fault#

    2)当其参与业务逻辑时需要在serviceImpl中写

    11、ibatis中条件in中传入的字符串会自动在其前加有空格(原因:?),导致匹配不正确,所以在要去掉其空格。例:

    for (int i = 0; i < loadcodename.length; i++) {
    if(i==(loadcodename.length-1)){
       resultString=resultString+"nvl(sum(decode(A.fld_mat_kind,'"+loadcodename[i].trim()+"',nvl(taskcount,0),0 )),0)\"colum"+i+"\"";
       }else{
       resultString=resultString+"nvl(sum(decode( A.fld_mat_kind,'"+loadcodename[i].trim()+"',nvl(taskcount,0),0 )),0) \"colum"+i+"\",";
         }
            }

    12、报错:Unableto instantiate Action, KpiPerMonSysAction, defined for 'queryPerMonSysList' in namespace '/'KpiPerMonSysAction

    翻译:KpiPerMonSysAction无法实例化操作,为“queryPerMonSysList”名称空间定义KpiPerMonSysAction“/”

    原因:在配置struts的文档中action的class里的内容必须与spring配置文档中的action的id值一致。如

    java文件有个橙色的时钟 java文件运行时一片空白_xml_07

    13、报错:--- Theerror occurred while applying a parameter map. 

    --- Check theemergencyKPIspace10.getQuerySysList-InlineParameterMap. 

    --- Check thestatement (query failed). 

    --- Cause: java.sql.SQLException: ORA-01840: 输入值对于日期格式不够长

    原因:sql中的日期格式不符合规定的格式

    14、报错:Exceptionoccurred during processing request: null

    原因:请求或传值时不匹配或传空值。

    15、给页面添加“加载中...”代码:

    document.getElementById("wholeEveNatureDataPanel").innerHTML ="";
     Ext.get("wholeEveNatureDataPanel").mask("加载中...","x-mask-loading");

    在 Ext.Ajax.request里再添加:Ext.get("wholeEveNatureDataPanel").unmask();其中括号里为你自己显示页面的Data要渲染到的地方

    16、async:false修改为同步(ajax)

    17、给导出的单元格加格式(括起来的为加背景色,两行代码才能设置成功。让其在坛坛坛坛循环单元格时调用)

    java文件有个橙色的时钟 java文件运行时一片空白_spring_08

    循环单元格时调用以上方法:

    java文件有个橙色的时钟 java文件运行时一片空白_java文件有个橙色的时钟_09

    java文件有个橙色的时钟 java文件运行时一片空白_sql_10


    转载网址:http://haoxiaoli.blog.51cto.com/8691383/1702179


    以下问题是近期工作中遇到的问题,可能大神还有别的解决方式,望指教!

    1.在使用goole的GSON将javaBean转成json的时候如果遇到一对多或者多对一的时候会出现循环引用问题,之前没怎么用过GSON所以对其不是很了解,最后果断放弃了使用GSON,换成alibaba的fastjson,是用fastjson之后发现预期效果比GSON的强一些,虽然也会有循环引用的问题,不过发现只是在子类数据和父类数据相同的情况下会出现这种问题,(及多对一的情况下)最后在jsp添加判断果断决绝这个问题。

    java文件有个橙色的时钟 java文件运行时一片空白_xml_11

    1. <bean id=<span class="code-quote">"personAction"</span> <strong><span style="color: #ff0000;">scope=<span class="code-quote">"prototype"</span></span></strong> class=<span class="code-quote">"quickstart.action.PersonAction"</span>>  
    2. "code-tag"><constructor-arg ref=<span class="code-quote">"personService"</span> /></span>  
    3. <span class="code-tag"></bean></span>

    3.使用jqueryform提交表单时因为浏览器差异也纯在不少的问题,公司测试使用的浏览器是IE7,代码在firfox下能够正常提交而在IE7上面就不好用,虽然现在很少人用IE7,不过毕竟是个问题,最后针对浏览器的不同提供了两种提交方式

    先判断浏览器

    java文件有个橙色的时钟 java文件运行时一片空白_xml_11

    1. //判断浏览器
    2. function getExplorer() {  
    3.     var explorer = window.navigator.userAgent ;  
    4. //ie 
    5. if (explorer.indexOf("MSIE") >= 0) {  
    6. return "ie";  
    7.     }  
    8. //firefox 
    9. else if (explorer.indexOf("Firefox") >= 0) {  
    10. return "Firefox";  
    11.     }  
    12. //Chrome
    13. else if(explorer.indexOf("Chrome") >= 0){  
    14. return "Chrome";  
    15.     }  
    16. //Opera
    17. else if(explorer.indexOf("Opera") >= 0){  
    18. return "Opera";  
    19.     }  
    20. //Safari
    21. else if(explorer.indexOf("Safari") >= 0){  
    22. return "Safari";  
    23.     }  
    24. }

     

    IE提交方式:

    java文件有个橙色的时钟 java文件运行时一片空白_xml_11

    1. //IE或其他浏览器的提交方式
    2. var vision=getExplorer();  
    3. if(vision==="Chrome" || vision==="ie" || vision==="Opera" || vision==="Safari") {    
    4.                 var options = {   
    5. '<%=basePath%>businessApply_addNonBussinessApply.action',  
    6. 'POST',  
    7. false,  
    8.                 success:function(msg){  
    9. "("+msg+")")  
    10. if(json=='larger'){  
    11. "上传文件太大,单个文件只限于1M以下.")  
    12. return;  
    13. else if(json=='typerr'){  
    14. "文件类型出错")  
    15. return;  
    16. else if(json=='suc'){  
    17. "xxx新增成功!");  
    18. "#townshipId").val("");  
    19. "#placeName").val("");  
    20. "#userkindId").val("");  
    21. "#applyStatusId").val("");  
    22. "<%=basePath %>businessApply_goList.html?type=NOTWORK_INFO";  
    23.                 }  
    24.             }  
    25.                 };  
    26. '#addbusinessApplyForm').ajaxSubmit(options),0);  
    27. return false;  
    28.         }

     Firfox提交方式:

    java文件有个橙色的时钟 java文件运行时一片空白_xml_11

    1. //火狐浏览器提交方式
    2. if(vision==="Firefox") {    
    3. "#addbusinessApplyForm").ajaxSubmit({  
    4. false,  
    5.             success:function(msg){  
    6. "("+msg+")")  
    7. if(json=='larger'){  
    8. "上传文件太大,单个文件只限于1M以下.请重新上传!")  
    9. return;  
    10. else if(json=='typerr'){  
    11. "文件类型出错")  
    12. return;  
    13. else if(json=='suc'){  
    14. "初次备案新增成功!");  
    15. "#townshipId").val("");  
    16. "#placeName").val("");  
    17. "#userkindId").val("");  
    18. "#applyStatusId").val("");  
    19. "<%=basePath %>businessApply_goList.html?type=NOTWORK_INFO";  
    20.                 }  
    21.             }  
    22.         })  
    23. return false;  
    24.         }