J2EE开发
日常J2EE开发中运用到的技术
未来窥视者
曾就职于卫宁健康科技集团、碧桂园教育集团、赛意信息。
行业:K12教育、医疗信息、企业管理
展开
-
业务拆分——微服务拆分独立出来的步骤
对于系统拆分,是一个很常见的事情,心态要保持积极,不要觉得烦或者怕出错。在做这种工作时,需要把涉及到的内容清晰列出来,这样有利于界定风险,评估工作时间。然后列好顺序,按次序完成工作,阶段性完成,则可以保证质量了。原创 2023-09-26 10:27:37 · 662 阅读 · 0 评论 -
快速发布服务到生产环境(手动操作)
虽然现在大部分项目都是用Jenkins搭建环境,自动化部署。但仍然存在一些小客户,只会单独上线一些关键服务,此时就需要手动去服务器里面部署了。原创 2023-09-25 12:44:09 · 174 阅读 · 0 评论 -
Interceptor的使用场景:拦截请求中的租户信息,注入到租户上下文中
在SaaS环境中,租户是最重要的隔离业务数据的属性了。但有个特殊场景,某些特殊权限的账号需要修改指定租户的内容,也即前端会携带租户信息过来,并且内部涉及很多业务逻辑处理(旧有自研工单工程),无法一个个接口去做改造,识别租户id,并代进去。那么就需要考虑spring给我们提供的功能了,拦截器就很适合。原创 2023-09-20 10:02:31 · 187 阅读 · 0 评论 -
使用Caffeine做JVM缓存,提升字典类查询性能
为了提高性能,对字典进行jvm缓存。避免了频繁调接口查询字典。原创 2023-09-19 18:36:09 · 304 阅读 · 0 评论 -
springboot自定义Json序列化返回,实现自动转换字典值
当你使用Spring Boot的Spring Data或者Spring MVC等组件来处理JSON序列化时,Spring框架会在需要将Java对象转换为JSON字符串时调用JsonSerializer。原创 2023-09-19 18:24:55 · 1026 阅读 · 0 评论 -
BeanUtil.fillBeanWithMap(d.getFormData(), form, true)中日期(时间戳跟Date)的处理
排查过程:key值跟bean对象的属性名完全一样,排除这个可能;那么只能是转换出了问题。观察了数据格式,发现日期字段接收的是时间戳,long类型,而bean对象定义的类型为Date。场景介绍:需要把mongo中键值对的数据map转成Java的bean对象,用到了hutool的这个方法。BeanUtil.fillBeanWithMap,而在处理的过程中,部分字段出现丢失,变成了null。该方法会自动把long类型的时间,顺利转给date类型的时间。解决:把bean对象的类型改为Long,这样就能顺利接收。原创 2023-01-11 16:00:22 · 990 阅读 · 0 评论 -
生产环境的OOM场景
【问题描述】SEVERE: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]java.lang.OutOfMemoryError: Java heap spaceException in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryEr原创 2021-01-04 16:07:00 · 450 阅读 · 0 评论 -
Tomcat原生部署方式,不依赖其他工具
第一步,下载一个tomcat文件,通常下载一个解压免安装版(Windows平常开发测试),需要注意tomcat版本与当前部署的电脑的位数一致,比如同是64位;第二步,配置项目路径下的\apache-tomcat-7.0.82\conf\server.xml文件,一般是修改端口按需要,配置项目路径。第三步,把需要部署的项目war包拷贝到\apache-tomcat-7.0.82\webapp...原创 2018-11-22 10:58:43 · 621 阅读 · 0 评论 -
mybatis从前端到后端数据流——从ENTITY、mapper,service,controller到jsp的整个过程
第一步,在数据库创建表,根据表名用com.system.mybatisplus.generator.ConfigGenerator代码生成器生成ENTITY、mapper,service,controller类文件;第二步,在mapper.xml中写查询,根据用户名查找,里面另有对生效日期的限制在mapper接口中定义查询方法第三步,定义service层,service定...原创 2018-11-22 15:49:12 · 2277 阅读 · 0 评论 -
spring MVC中Ajax表单提交,以及常见问题(Ajax无法获取值,controller无法获取值)
需求描述:表单中字段比较多,不希望一个个去获取写入,整个表单进行提交。代码:function submitForm() { //console.info($('#userform').serialize()) console.info($('#userform').serializeArray()) $.ajax({ ty...原创 2018-11-20 10:10:28 · 1471 阅读 · 1 评论 -
利用谷歌浏览器进行前端代码调试(JS,JSP)
首先在浏览器打开需要调试的界面,按F12,打开调试窗口。窗口常用的是界面上的四个:Elements,Console,Sources,Network,下面来介绍各个块的调试功能1、Elements这个通常用来调试界面的显示,比如控件位置,大小等,通过点击左上角的小箭头可以显示代码对应界面的作用范围。2、Consoles可以在里面输入界面的元素取值,查看各个元素组件的实际取值,...原创 2018-11-20 10:21:14 · 6378 阅读 · 0 评论 -
Java Web开发之-- Ajax从数据库动态加载下拉框 select
第一步,在前台定义一个下拉框。<div class="form-group"> <label>证件类型</label> <select id="credentialType" name="credentialType" class="form-control" data-style="b原创 2018-11-28 22:35:27 · 3282 阅读 · 0 评论 -
js处理map对象的json
其中map为:Map<String, List<TreeSelectModel>> map = new HashMap<String, List<TreeSelectModel>>();里面存的是listreturn JSONData.toJSON(map);ajax接收到的data就是这个json,下面是处理内容var bea...原创 2018-11-28 22:40:58 · 2041 阅读 · 0 评论 -
下拉框中select的onclick和onchange两个事件的区别
首先是onchange,只有在下拉框的值改变了才会触发。<select id="inhabitFlag" onchange="this.parentNode.nextSibling.value=this.value;confirm()" name="inhabitFlag" class="form-control" data-style="btn-primary">原创 2018-11-28 22:46:52 · 4206 阅读 · 0 评论 -
Linux部署web项目--JDK、TOMCAT如何配置?
首先清理系统自带的jdk rpm -qa | grep jdk查询系统的jdk yum -y remove java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64(移除JDK,有多少就移除多少,通常2个) 生成war包右键->export->war服务器配置环境安装JDK下载jdk,地址:https:...原创 2018-12-07 19:49:50 · 272 阅读 · 0 评论 -
Several ports (8005, 8080,8009) required by Tomcat v7.0 Server at localhost处理
Several ports (8005, 8080,8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To star...原创 2018-11-22 10:52:05 · 5236 阅读 · 0 评论 -
URL中的字符转义
在利用URL来进行参数值传递时,需要注意URL中的特殊字符转义。否则的话,当值中包含空格,'&','/'等时,就会出现值传递不完整、传递错误的情况。其实各种协议标准都有其某些固定的值是需要按照某种规则进行转义的。...原创 2018-09-10 12:11:54 · 1760 阅读 · 0 评论 -
用java实现把sql语句查询的结果集写到dbf文件中
这个其实就是一个导出生成DBF文件的功能,实现思路是这样:首先动态拼接一个sql语句,执行后返回结果集到代码中,再通过dbfwriter对象把结果集的数据写到dbf文件里。1、打开数据库连接,执行sql语句,获得结果集 private Connection bakConn; private ResultSet RowSet = null; private Statement stats原创 2017-11-16 10:47:24 · 2630 阅读 · 4 评论 -
模型驱动未实例化
只是定义模型驱动时,未进行实例化,会出现属性值空值的错误原创 2017-03-08 13:15:35 · 317 阅读 · 0 评论 -
Aop和OOP
AOP与OOP的区别:AOP、OOP是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。举个简单的例子,对于“用户”这样一个业务实体进原创 2017-03-08 13:15:40 · 415 阅读 · 0 评论 -
struts2中在下拉框注入值
其中select中的name属性必须与模型驱动中的属性值名字一样,获得的值是option中value的值原创 2017-03-08 13:15:46 · 456 阅读 · 0 评论 -
关于数据库驱动版本问题
在往数据库中插入当前时间数值时,即new Date(),报错:Incorrect datatime value;经过排查,发现我的数据库版本是5.6.24,项目所用的数据库驱动版本为5.0.4,改用5.1.40版本后问题解决。原创 2017-03-08 13:15:49 · 1499 阅读 · 0 评论 -
怎样可以保证网页在浏览器间的兼容性?
问题描述:最近开发web程序时,发现前端一些部分在不同浏览器之间显示有差异,一些效果或者直接丢失了。那么浏览器兼容就需要考虑了,而又具体要如何去做呢?我去查询了一下,在这里记录下来,转载一段知乎的回答:作者:张克军链接:https://www.zhihu.com/question/19736007/answer/12825938来源:知乎著作权归作者所有。先看一原创 2017-03-12 11:42:03 · 1342 阅读 · 0 评论 -
jsp 和 html作为前端页面的区别
使用jsp:通过EL语言、JSP标记库等等来获取数据、构建页面以及调用方法,动态数据通过ajax获取;压力在服务器端,因为所有逻辑都在后台;可能安全,数据存放在服务器端;前端页面的实现和调试麻烦,依赖后端,不能独立开发;部分接口可以重用原来项目代码不使用jsp:全异步,完全通过ajax获取数据和构建页面;压力在客户端;可能没有jsp安全;开发和调试页面方便,不依赖后转载 2017-03-12 22:08:48 · 7745 阅读 · 0 评论 -
在jsp中设置点击某事件时弹出对话框
功能描述:在一个商城类系统中,当客户点击取消订单时,弹出一个对话框,当点击确定时,才执行取消订单事件。点击按钮部分代码:)" value="取消订单" />标黄部分为传入js函数的参数,即订单号。js代码:function disp_confirm(oid) {var r = confirm("亲,您确定取消该订单吗?")if (r == true) {wi原创 2017-03-13 22:27:22 · 7527 阅读 · 0 评论 -
在前端界面输入中文经过处理存进数据库为乱码问题
在普遍的ssh框架加tomcat,mysql中,在进行中文传输的时候会出现乱码。首先,最基本的是检查显示的界面,html,jsp编码格式,然后是工作空间代码的编码,统一为utf-8;其次,确保连接数据库的方式的编码也统一。这个编码在jdbc的url中增加:url=jdbc:mysql://localhost:3306/student_test?useUnicode=true&chara原创 2017-04-03 14:32:39 · 12000 阅读 · 1 评论 -
org.hibernate.ex ception.DataException: could not insert报错
场景:这个是在运用hibernate持久化数据的时候出现的报错。问题原因:前台的数据长度过大,而数据库相应表的字段varchar类型长度不够,所以造成这个错误解决办法:加大该字段的长度原创 2017-07-12 09:20:26 · 3436 阅读 · 0 评论 -
java实现爬虫,爬取网易歌单信息
之前一直对爬虫很好奇,觉得它很神秘,而我有个朋友是做爬虫的,最近有空就向他学习了一下,并试着写了个小程序。首先是获得httpclient对象及httpresponse对象,此两者是用于发送请求及接受数据。 CloseableHttpClient httpClient = null; CloseableHttpResponse httpResponse = null; try { Req原创 2017-11-15 00:13:27 · 1974 阅读 · 0 评论 -
eclipse 编辑web项目时禁止tomcat自动部署
场景:当我们在进行项目开发时,改动的代码部分比较多,因为我们都习惯了频繁的ctrl + s 保存,此时,如果在debug模式,tomcat就会频繁地自动部署了。解决:把自动部署给关闭在tomcat的安装路径下,修改server.xml文件, /hqms" reloadable="true" source="org.eclipse.jst.jee.server:hqms"/>把reloa原创 2017-10-16 09:52:38 · 1132 阅读 · 0 评论 -
在Java web项目springMVC框架中实现定时任务
在工作中遇到一个需求,需要定时自动执行某项功能,这就需要用到定时任务了。首先先来理一下实现思路,定时任务可以用Java.util中的timer类,把需要定时执行的任务封装到timer类的调度表中,这个timer对象需要在程序初始化时创建,这样才可以让它自动执行。那么我们就可以想到需要借用web项目启动初始化了,把这个工作放到项目初始化阶段。下面是具体的实现:1、创建一个任务类testJob实现原创 2017-11-16 10:21:06 · 1934 阅读 · 0 评论 -
对外键属性的注入
在如下代码中,进行categorySecond的外键cid注入时,出现上面的错误。从而解决了添加新的category Second的cid为空的问题原创 2017-03-08 13:15:32 · 346 阅读 · 0 评论