分类:
Java
标签:
HandlerExceptionResolver
springmvc
resolveException
json
MappingJackson2JsonView
HandlerExceptionResolver是SpringMVC提供的全局异常处理接口。
public interface HandlerExceptionResolver {
/**
* Try to resolve the given exception that got thrown during handler execution,
* returning a {@link ModelAndView} that represents a specific error page if appropriate.
* <p>The returned {@code ModelAndView} may be {@linkplain ModelAndView#isEmpty() empty}
* to indicate that the exception has been resolved successfully but that no view
......
分类:
Java
mybatis
标签:
mybatis
sqlSessionFactory
mapperLocations
classpath
用过mybatis的人都知道sqlSessionFactory中mapperLocations是用来配置mapper xml文件目录的,通常我们会这么配置classpath*:/com/cangzhitao/**/*Mapper.xml,这表示从classpath com/cangzhitao目录及其子目录下所有以Mapper.xml结尾的文件。cangzhitao后面的**就是表示任意多级目录,而classpath后面的*是什么意思呢?
笔者网上查找资料,发现很多文章都说classpath后面的*表示启用通配符,笔者实际测试,并非如此。笔者开始并没有加*,后面的通配符依然能起作用,并不像网上说的报错,不过也可能是因为版本不同的原因造成的,这里笔者的mybatis版本是3.4.4。笔者的项目是分了多个工程,mapper.xml文件分布在几个工程中,笔者在没有加*的时候,测试发现mybatis只能找到一个工程中的mapper.xml文件,而加上*,所有工程下面的mapper.xml文件就都能找到了,所以如果你也存在笔者这种情况,那么请你在classpath后面加
......
分类:
异常
Java
标签:
RFC 7230
RFC 3986
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1000)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.n
......
分类:
Java
标签:
枚举
传参
上面这个java类是笔者常用的一种枚举类型实现的方式。如果后台有个实体属性值是上面的枚举类型,我们怎么让Spring自动进行枚举值的转换呢。
这里,我们需要用到Spring提供的Converter接口:
当我们将上面的java类注册为Spring组件后,Spring碰到StringShowType类型的属性,将自动调用上面的convert方法去尝试转换。
分类:
Java
标签:
thumbnailator
waterpress
水印
缩略图
剪裁
水印和缩略图是一般内容网站很常见的一个功能,而thumbnailator则是java在这方面一个很强大的工具。
首先,在笔者没有使用thumbnailator之前,在网上找了一段生成水印的方法:
public static void marker2(String srcImgPath, String iconPath, String targerPath, String position,
Integer positionX, Integer positionY, Double alpha, Integer degree, Integer minWidth, Integer minHeight) {
OutputStream os = null;
try {
if(targerPath==null) {
targerPath = srcImgPath;
}
Image srcImg
......
分类:
Java
标签:
freemarker
静态类
枚举类
BeansWrapper
getStaticModels
getEnumModels
BeansWrapperBuilder
之前笔者写过一篇文章:Freemarker使用java枚举值、静态属性和调用静态方法,这篇文章里面所提及的方法可以使用,只是笔者最近查找资料看freemarker官方文档的时候,发现笔者之前使用的方法并不是freemarker官方所推荐的方法。
freemarker的设计者,在设计时,分别给静态类和枚举类提供了不同的获取方法。
添加静态方法:
BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
TemplateHashModel staticModels = wrapper.getStaticModels();
TemplateHashModel fileStatics =
(Temp
......
分类:
Java
开发运维环境
标签:
JGROUP
组播通信
集群通信
IPV6
笔者早在几年前就了解过JGroup这个工具,运行过官网上的例子,觉得挺有意思,当时就考虑过这东西可以用来作为集群之间的通讯工具。而最近真正使用它时,发现怎么也跑不了,跑不了也不是说它报错,就是启动两个程序,两个程序分别进入了不同的组,集群名称设置没错,两个程序都是一样的。当时的调试信息就不贴了,没有保留。
后来笔者在网上搜索了很久,终于找到了原因。原理是IPV6的原因,估计是笔者以前使用的是window,版本也比较低,现在使用的mac,带有IPV6功能,JGroup本来是支持IPV6的,但是据说JDK实现有些问题,必须禁用JDK的IPV6功能才行,在JVM配置里面加上下面的语句即可禁用:
-Djava.net.preferIPv4Stack=true
禁用后就连接正常了。
另外补充一句,JGroup4出来了,但是JDK版本要求升高了,至少需使用JDK1.8才行。
分类:
Java
标签:
spring
ApplicationContext
WebApplicationContext
ApplicationContextAware
首先来看一个工具类:
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
public class SpringUtil {
/**
* @param args
*/
public static void main(String[] args) {
}
private static WebApplicationContext ac = null;
private static ApplicationContext getApplicationContext() {
if(ac==null) {
ac = ContextLoader.get
......
分类:
JS
Java
WEB前端
标签:
ajax
登录超时
401
UNAUTHORIZED
ajax技术现在已经非常普及,常用来异步加载数据,也用来异步加载页面,现在越来越流行的单页应用SPA,页面几乎全是用ajax加载进来的。对于传统页面,如果登录超时,再提交请求时,一般后台将会把用户直接转发到登录页面,而使用ajax请求页面,如果你不注意,可能一不小心,就把登录界面load到当前页面,作为当前页面的一小部分了,这显然不是我们所期望的,接来下笔者说下我是如何处理这种情况的。
分类:
Java
标签:
htmlparse
补齐标签
CompositeTag
在一些博客系统中,非文章阅读页面一般不会显示文章的文章内容,一般是显示文章的摘要信息,而摘要信息的生成,有些系统是由用户自行编辑,而有些系统是通过正文截取的。如果通过截取方式,我们代码一般很难将文章截取得恰到好处,主要是字面断字困难,只能设定截取多少个字符,而内容一般是富文本,即包含html标签,通过字数方式截取,可能将一些html标签从中打断,导致原来的富文本内容html标签不完整,而展现时浏览器会尝试修复,自动补齐丢失的标签,从而造成页面显示异常。
如何解决上面的问题呢,笔者一般通过两种方式解决。一个就是显示摘要时,将所有的html标签都去除显示,这样自然简单很多,但这只适用于小段文本,摘要比较短的情况,试想如果很长一段摘要,无格式显示,对阅读者肯定会造成反感。其次就是补齐html标签,它不是丢了几个标签吗,我们人为给他补上呗。