GHGL项目-其他问题锦集

Posted 小崔编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GHGL项目-其他问题锦集相关的知识,希望对你有一定的参考价值。

junit单元测试

Jar包:Junit4.jar

import org.junit.Test;(手动写入)

注解报错The import org.springframework.test.context.junit4.SpringJUnit4ClassRunner cannot be resolved

需要两个jar包

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>4.1.6.RELEASE</version>
</dependency>

http://blog.csdn.net/menggudaoke/article/details/53192274


 url编码,把加号变成了空格

解决方案:用URIEncoding编码后传输 

http://blog.csdn.net/z69183787/article/details/35987711


安全问题

Aes:

a.    介于java 不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding 没有什么区别要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现

b.前端js包加解密的数据都是base64格式的,这是基础

c.编码格式问题

1、AES在前后台对接时,后端向前端传数据时,有bug,传输汉字时有问题,

2、RSA传输数据长度时,报错:input too large for RSA,后端向前端传输未实现。

3、AES通过ajax传值时,参数值有问题。

原来是传参时data:“”:中的参数名要加双引号。


跨域问题

1、解决跨域问题

a.在controller中加入以下代码:

	response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "*");
        response.addHeader("Access-Control-Max-Age", "100");
        response.addHeader("Access-Control-Allow-Headers", "Content-Type");
        response.addHeader("Access-Control-Allow-Credentials", "false");

b.springmvc解决跨域问题

https://my.oschina.net/u/2608459/blog/607797

具体原理还有待研究。

2、跨域session丢失

第一个请求方法中放入session值

第二个请求方法中session为空。

http://blog.csdn.net/tangsl388/article/details/53672214


分隔符问题

Linux和Windows分隔符是不一样的,Windows下是“\\”,unix|linux下是“/”

在代码中写File.separator

分隔符

用“||”String[] strs = str.split("\\\\|\\\\|");

用“|”String[] strs = str.split("\\\\|");


New Date()时间问题

项目启动的时候记录New Date()时间,然后修改服务器时间,new date()时间不会改变。


Ajax缓存问题

重复登录一个账号,有问题

第一次登录,账号ajax存入缓存,后台存入session数据,第二次重复登录,相同的参数、相同的方法,不走后台,因为ajax有缓存,所以要把ajax的缓存清空,cache : false,

登录时存入缓存数据,登录时调用的ajax,


GC overhead limit exceeded

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded

tomcat内存不够,加大内存即可

在/tomcat/bin/ catalina.sh

JAVA_OPTS='-Xms1024m -Xmx4096m'

http://www.cnblogs.com/quietwalk/archive/2012/11/05/2755199.html


事务就是不回滚

解决方法:手动提交的

http://blog.csdn.net/bejustice/article/details/48245741?ref=myread


两种配置事务的方法:

Spring aop:
必须引入这两个包,要不然报错:
<dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>1.8.10</version>
     </dependency>
     <dependency>
         <groupId>aspectj</groupId>
         <artifactId>aspectjrt</artifactId>
         <version>1.5.4</version>
     </dependency>
 
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx   -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
  
  <!--使用切面方式配置事务 -->
  <tx:advice id="txadvice"transaction-manager="transactionManager">
     <tx:attributes>
      <tx:method name="remove*"propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception"no-rollback-for="java.lang.RuntimeException"/>
            <tx:method name="delete*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException" />
            <tx:method name="add*" propagation="REQUIRED"read-only="false"  rollback-for="java.lang.RuntimeException" />
            <tx:method name="insert*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.RuntimeException" />
            <tx:method name="save*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.RuntimeException" />
            <tx:method name="update*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception" />
            <tx:method name="publish*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception" />
            <tx:method name="get*" propagation="SUPPORTS"read-only="true" />
            <tx:method name="list*" propagation="SUPPORTS"read-only="true" />
            <tx:method name="query*" propagation="SUPPORTS"read-only="true" />
            <tx:method name="find*" propagation="SUPPORTS"read-only="true" />
            <tx:method name="page*" propagation="SUPPORTS"read-only="true" />
     </tx:attributes>
  </tx:advice>
 
  <aop:config proxy-target-class="true">
     <aop:pointcut id="pointcut" expression="execution(* com.djzh.refund.service.*.*(..))"/>
     <aop:advisor advice-ref="txadvice" pointcut-ref="pointcut"/>
  </aop:config>

注解驱动:

<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx   -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 开启事务注解驱动-->
  <tx:annotation-driven transaction-manager="transactionManager"proxy-target-class="true"/>

代码中

方法上边:

@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,rollbackFor=RuntimeException.class, Exception.class)


判断是否为空问题

https://zhidao.baidu.com/question/1576596292969400540.html


架构选型ssm和ssh

https://www.zhihu.com/question/21104468

http://download.csdn.net/detail/u012323351/9922228


问题:Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

解决:


http://stackoverflow.com/questions/36329001/unable-to-create-a-configuration-because-no-bean-validation-provider-could-be-f


数据特别大时,double转string时注意科学计数法

 

测试方法运行时间

long startTime = System.currentTimeMillis(); // 获取开始时间
	//运行的方法。。。。。。。。
       long endTime = System.currentTimeMillis(); // 获取结束时间
       System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
 

您的主机中的软件中止了一个已建立的连接。

at java.lang.Thread.run(Thread.java:745)

Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

是因为http客户端没等我执行到返回就自己断开了连接。。。所以这个开发里面http的超时时间设置也是蛮重要的呢


打印出所有的request参数和值

 Map map = new HashMap();
          Enumeration paramNames = request.getParameterNames();
          while (paramNames.hasMoreElements()) 
              String paramName = (String) paramNames.nextElement();
  
              String[] paramValues = request.getParameterValues(paramName);
              if (paramValues.length == 1) 
                  String paramValue = paramValues[0];
                  if (paramValue.length() != 0) 
                      map.put(paramName, paramValue);
                  
              
          
  
          Set<Map.Entry<String, String>> set = map.entrySet();
          System.out.println("------------------------------");
          for (Map.Entry entry : set) 
              System.out.println(entry.getKey() + ":" + entry.getValue());
          
          System.out.println("------------------------------");
        

java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.getFactory   Lcom/fasterxml/jackson/core/JsonFactory;

http://blog.csdn.net/z69183787/article/details/22269131

老的是引用:jackson-all-1.9.11.jar。

新的是引用:jackson-core-2.2.3、jackson-annotations-2.2.3、

jackson-databind-2.2.3这三个包,

我同时引用,引起了以上问题

以上是关于GHGL项目-其他问题锦集的主要内容,如果未能解决你的问题,请参考以下文章

GHGL项目总结-mybatis

GHGL项目总结-DB2

GHGL项目总结-Myeclipse

GHGL项目总结-CA

GHGL项目总结-CA

GHGL项目最后总结