Java 网页后台技术

1、解决Ajax跨域问题

再返回的头部信息中价格配置就行了

response.addHeader("Access-Control-Allow-Origin", "*");

2、网页前台我们获取网站根路径一般是通过request.getContextPath(),但是如果你是html页面,那么当你直接访问他时,是获取不到request的,必须要经过一层后台转发才能获取到;(当初这个问题困惑了我许久frown

->现在找到了一种解决办法,由于出现上述情况的html文件都是放在WEB-INF文件夹外面的,而这种页面很少,所以我们可以将其定义为jsp页面,因为jsp页面经过了服务器渲染,所以可以得到request。

3、富文本编辑器保存多张图片时报错

参考博客:https://www.cnblogs.com/panie2015/p/7873011.html

在server.xml中加个参数就行了,由于tomcat版本的关系,所以值为-1

 4、### Error updating database.  Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (12313005 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

参考博客:https://blog.csdn.net/l30961171/article/details/48133651

5、

Long num=(Long)mapList.get(0).get("num");

(num+1).intValue()为错误写法,Cannot invoke intValue() on the primitive type long

(int)num为错误写法,Cannot cast from Long to int

(int)(num+1)为正确写法

6、这个debug模式下,改变返回值是生效的

7、如果在一个for循环中需要重复的new对象,那么应该将对象的声明放在循环外面,这样被new过的对象没有被使用,垃圾回收器处理的快一些,但是这个局部变量怎么解释

8、搞清楚split()是怎么处理末尾的占位符的,如果是个空字符串,会有一个长度的

9、特别注意:当你在某个字符串中,而这个字符串是以某个标识符分割的时候,你一定要加上标识符去判断,froleUuid.contains(str)是错误的,要用!froleUuid.contains(","+str+",")

10、解决fastjson的$ref问题,

map_t2.put("subjectPersonList", JSONObject.parse(JSONArray.toJSONString(subjectPersonList, SerializerFeature.DisableCircularReferenceDetect)));

11、父类可以强制转子类,子类不可转父类

Map<String,Object> map=new HashMap<String, Map<String, Map<String,Integer>>>();

Type mismatch: cannot convert from HashMap<String,Map<String,Map<String,Integer>>> to Map<String,Object>

12、这个功能在调试的时候可以查看选中区域的值,ctrl+shift+i

# Resource leak: 'input' is never closed

资源泄漏:“输入”永远不会关闭

这个时候他会给你一个提示

选择第一个,他会把input变量变成一个字段,这样就不会有资源泄露问题

# 如果你用了hasNext()的话,在控制台输入时,可能会将字符输入到已经打印出来的字符串身上,导致控制台不能在换行进行正确输入了;

# ctrl+f11 运行最后一次执行的程序。 

https://blog.csdn.net/zhangxiaoxiang123/article/details/79492338

# 若要使用多个tomcat,只需要改变server.xml的前面三个端口就行,redirectPort不需要更改

# Caused by: java.lang.OutOfMemoryError: Java heap space

 Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口。

postman有一个chrome插件 Postman Interceptor,可以让postman中发送请求的时候使用这个网站的浏览器cookie。

# request不提供setParameter()方法,因为这个parameter是从前台传过来的参数,request不允许别人直接修改他的数据,所以提供了另外一个attribute属性,这个具有getter、setter,用于在web容器中流转。

# 使用accesstoken策略,一个账户不能同时登录,否则会被挤下去;

# 数据库用sum求和时,如果没有结果,他会返回一个null,如果不注意会有空指针异常

->注意你在后台获取集合时,会发现这个数组的长度为1,当你获取出来后,他是为null的,所以你不能再获取他里面的元素

->sum返回的结果类型为double

# layui-table中如果数据为null,他默认不会显示,如果你做了处理但是他却没有匹配到结果,他会返回undefined

# 向filter过滤器中的request对象添加额外的参数

有时候我们会遇到这么一些需求,在filter中获取一些参数进行处理,同时将处理好的参数重新添加到request对象中,这时候我们在filter中直接使用request.setAttribute()是无效的。我们怎么来解决这个问题 呢,j2ee已经给我们提供了解决的办法,使用HttpServletRequestWrapper类来解决向request添加额外参数的功能。

# 配置的拦截器会在preHandle方法之前执 行

preHandle 添加参 数和重写参数的 问题 ,需要 重 写HttpServletRequestWrapper和Filter

   因为只有过滤器才有        filterChain.doFilter(requestParameterWrapper, servletResponse);

# springmvc的pojo参数绑定有问题,当我用HttpServletRequestWrapper 添加请求参数后,我新添加的请求参数不会被渲染进去;如果你是修改参数,那么渲染的数据是会动态改变的;

单个字段是可以绑定成功的,跟注解无关;

->目前的解决办法就是在前台先构造一个accessToken,后台再去复写;

# 拦截器有两点不能配置:

1)要拦截/public/forward/**,但是其他/public/**不需要拦截

2)要拦截/public/forward/**,但是/public/forward?path=common/page_left不需要拦截

# success 和 ajaxSuccess 相比,success会先执行

# 如果我们要对ajax做全局拦截处理,我们就使用 $.ajaxSetup ,它里面的option可以配置为success,complete等,

如果局部已经配置相同的option,那么这里的全局配置option就不会执行;

所以一般的处理办法如下:

局部用success处理正常的结果,

全局的complete处理错误的结果

这里有个坑,我没有具体测试,某些请求他会将你的complete代码复制一份,导致你断点在这个文件这里,程序根本就没进来,

我估计是手动发起的ajax请求就有上面那种情况

猜你喜欢

转载自www.cnblogs.com/syjp/p/10363539.html