配置error-page出错

发表于5年前(Apr 17, 2015 7:44:54 PM)  阅读 1246  评论 0

分类: Java 开发运维环境

标签: error-page location 404

1、背景

web.xml配置了error-page,部署在tomcat时启动没有报错,部署在weblogic时启动报错,错误类似如下:

2015-4-17 下午05时22分10秒 GMT+08:00> <Error> <J2EE> <BEA-160197> <Unable to load descriptor /opt/weblogic/software3.5/casp/WEB-INF/web.xml of module casp. The error is weblogic.descriptor.DescriptorException: VALIDATION PROBLEMS WERE FOUND
  problem: cvc-datatype-valid.1.1: string value 'auth/problem.jsp' does not match pattern for war-pathType in namesp
......

跨域跳转相关问题

发表于5年前(Jan 27, 2015 10:29:58 AM)  阅读 1303  评论 0

分类: Java 开发运维环境

标签: 跨域 forward nginx sendRedirect

1、背景:

昨天有同学碰到这么一个问题,有服务器A部署了系统A,有服务器B部署了系统B,A系统使用IFrame嵌入了B系统相关功能。因为网络权限控制得比较严格,用户暂时只有访问服务器A的权限,与服务器B的网络是不通的,所以用户访问系统A的时候,嵌入系统B的功能页面将是空白。后咨询得知,网络不通的情况只是暂时的,但还是想先通过其他手段能先进行常规的开发和测试。

2、分析:

首先,Iframe本身跨域是没有问题的,只要客户浏览器能正常访问B服务器即可。如果客户跟B服务器网络不通,那Iframe直接嵌入肯定是行不通的。

其次,如果使用转发跳转,在java里面有sendRedirect和forward两种,其中sendRedirect是浏览器转发,所以其实还是浏览器访问目标地址,而forward则是服务器转发,浏览器并不需要具有目标地址的访问权限,但forward不能跨域。

反向代理是唯一可

......

反射获取方法参数必须完全匹配

发表于5年前(Jan 26, 2015 10:35:19 AM)  阅读 1937  评论 0

分类: Java

标签: java反射 getMethod searchMethods 向上就近匹配 重载

java里面有个方法重载机制,重载的原则是向上就近匹配原则,而反过来向下匹配是不行的,我们只能强制转换。

本文稍微分析了一下源码,解释java反射获取方法是如何运作的。

反射获取方法参数必须完全匹配的,如果我们需要它执行向上就近匹配原则该怎么做,在使用java反射机制时需要注意什么。

Spring配置多数据源进行数据同步

发表于5年前(Jan 20, 2015 4:59:00 PM)  阅读 6828  评论 4

分类: Java 数据库 案例

标签: 数据同步 annotation 多数据源 多事务 动态切换 AOP 反射 模型转换 AbstractRoutingDataSource PlatformTransactionManager

本文主要可以解决以下几个问题:

Spring如何配置多数据源、多事务,以及如何动态切换。

Spring AOP机制的运用,以及对同一个切面(Joint Point)多个处理方法(Advice)执行顺序的设置,即AOP的Order的设定。

自定义注解Annotation的实现以及使用。

使用Java反射机制配合Annotation实现异构模型之间的自动转换。

网站配置的一种设计实现方法

发表于5年前(Jan 7, 2015 11:22:17 AM)  阅读 1267  评论 0

分类: Java 案例

标签: 网站配置 annotation

1、网站配置:

一个网站都有很多配置选项,如笔者的博客里面就有基本配置、阅读配置、评论配置等:

有了这些配置管理功能,我们在开发时就不需要硬编码,可以实现在线修改配置选项,不需要重启服务。这是一个网站很常见的做法。

2、简单实现:

一般来说,实现这个配置管理很简单,建立一个配置实体类,映射数据库中的一个表,无非就是对这个实体实现增删改查。后期如果要修改,比如增加了一个配置选项,那就修改实体类,增加属性,增加数据库字段,修改页面,可能要修改对应的合法性验证。虽然修改的地方较多,但也没那么麻烦,都是简单的体力劳动,也没什么费劲的。

3、多个配置怎么办:

如果系统里面就一两个这样的配置,采用上面的方法很快就完成了,但如果系统中有很多这样的配置,那工作量就有点大了。这时我们就会偷下懒了,就要想到继承了,看看配置是不是基本都是相似的。而且,难道我们给每一个配置建立一个对应的映射表,每个表里n多字段只有一条数据,这样好像有点浪费。

 

java工程配置文件加密

发表于5年前(Jan 5, 2015 10:22:19 AM)  阅读 2078  评论 0

分类: Java 开发运维环境

标签: spring web.xml applicationContext.xml DES 加密解密 PropertyPlaceholderConfigurer

一个常见的java web工程中有许多配置文件,基本为两种类型文件,xml和properties,具体的有web.xml,applicationContext.xml,jdbc.properties,log4j.properties等。

假如,你的整个工程被某些人拿到了,会发生什么事。jdbc里面明文填写了数据库连接信息,数据库地址暴露了,用户名密码暴露了,当然,一般数据库都有防火墙等安全方面的限制,光有这些可能还不足以攻破你的数据库,但是泄露这些总是不好的,总是危险的。所以如果配置文件中包含敏感信息必须加密。

那如何加密这些配置文件呢:

获得高度,兼容IE,FF,Chrome

发表于5年前(Dec 24, 2014 2:37:40 PM)  阅读 1483  评论 0

分类: WEB前端 JS

标签: 高度

在前台碰到一个问题,需要获得整个页面有多高,即document的高度,JQuery中提供了$(document).height()方法来获得document的高度,但在测试兼容性时,发现Chrome浏览器不兼容,获得的高度为当前浏览器可见的文档高度,并不是我想要的,然后网上查资料,找到下面信息:

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.b

......

各种CSS样式控制优先级(解决样式冲突)

发表于5年前(Dec 24, 2014 2:36:42 PM)  阅读 2731  评论 0

分类: WEB前端 CSS

标签: 样式优先级 样式冲突

CSS控制页面样式有四种方法:

1、行内方式
行内方式是4种样式中最直接最简单的一种,直接对HTML标签适用style=””,例如:
<p style=”color:#F00; background:#CCC; font-size:12px;”></p>
虽然这种方法比较直接,在制作页面的时候需要为很多的标签设置style属性,所以会导致HTML页面不够纯净,文件体积过大,不利于搜索蜘蛛爬行,从而导致后期维护成本高。

2、内嵌方式
内嵌方式就是将CSS代码写在<head></head>之间,并且用<style></style>进行声明,例如:
<style type=”text/css”>
<!–
#div1{width:64px; height:64px; float:l

......

Hibernate支持的HQL函数-HQL对Date类型数据的处理

发表于5年前(Dec 24, 2014 2:34:59 PM)  阅读 2078  评论 0

分类: Java

标签: hql CURRENT_DATE YEAR

1、问题背景:

有一个需求,统计网址访问量,需要分别统计昨天以及当月网址的访问数量。网址每次访问记录都已保存下来,访问时间使用日期时间类型,数据库是用的mysql,对应的字段类型是timestamp。其实这是一个很简单的sql,指定时间范围count一下就行了,本来系统框架使用的hibernate,也支持jdbc,但是考虑到还是保留数据库可移植性,还是使用hql来进行查询。

2、解决方案:

2.1、方案1:

以统计昨天的访问量为例,给定两个时间类型的参数,分别对应昨天零点以及今天零点的时间,采用between进行查询。(传参时,参数类型好像是用使用java.sql.Date,笔者未试验)

2.2、方案2:

网上搜索hibernate支持的函数,找到一些处理时间类型的函数,笔者就是采用该方案实现,看下面代码:

public int getLastDayVisitCount() {
......