随笔分类 - WEB开发
J2EE记录
摘要:在Google学术上搜到一篇有意思但也很有争议的文章,题为《Best Practices for Exception Handling》O'Reilly Media。翻译并解读一下作者想表达的内容。 文章的最初始部分先阐释了checked和unchecked异常的继承关系。看下图: 而checked
阅读全文
摘要:java反射详解xStream完美转换XML、JSON通用异常处理框架 今天开始着手准备异常处理框架的设计。链接三给出的是一个.net下李天平先生的设计。现在要移植到java中。有一些XML反射成java对象的问题需要考虑。弄了一天觉得xStream转换成java对象似乎很方便,但是还是不得要领,感觉用在java转xml中似乎更常见。 考虑到java本身有一个反射机制,可以实现动态绑定,因此想要设计一个自己异常框架使用的xml映射类用来替换xStream的功能。 今天测试了java反射,明天希望能实现依靠XML配置信息动态绑定java类。fighting。
阅读全文
摘要:1、测试服务器能否接受10万用户同时在线操作 如果用IIS服务做应用服务器,单台可承受的最大并发数不可能达到10万级,需要使用集群,利用负载均衡来实现。 如果使用websphere之类的应用服务器,单台可承受的最大并发数可达10万级,但为性能考虑,还是应该使用集群。—— by 打杂小土豆2、推荐使用JMeter工具——————————————————————————————————————————————《性能测试从零开始》 51Testing3、功能需求说明VS性能需求说明 前缀中名词、动词居多,后者多包涵容量、时间类词汇。 前者关心“做什么”,即软件“主体”发生的“事情”。后者关心...
阅读全文
摘要:1、Java异常分为checked异常和unchecked异常 checked异常(需要在代码中try……catch显示捕获) 所有继承java.lang.Exception的异常。是可以在执行过程中恢复的。此类异常不是程序中可以预测的,比如无效的用户输入、文件不存在等。这些都是外在的原因,都不是程序内部可以控制的。 unchecked异常(也叫错误,不需要显示捕获) 所有继承java.lang.RuntimeException的异常。是无法处理的错误。2、异常到底应该在什么位置被记录? 在异常最初产生的位置。 如果是可以处理的异常,则处理之后不做记录。如果是无法处理的异常,则把可...
阅读全文
摘要:1、URL路径中参数的中文乱码问题如xxx.do?name="依拉""依拉"会发生乱码。解决的办法是:在传递参数时,用此语句封装 "xxx.do?name=" + java.net.URLEncoder.encode("依拉")在解析参数时,用此语句解析 String name = new String(req.getParameter("name").getBytes("8859_1"));2、servlet处理json数据的方法假设在js端调用了这个链接xxx.do,并且
阅读全文
摘要:众所周知,数据库有事务处理(Database Transaction),当一个事务中的操作没有能全部进行时,之前的操作将回滚。 如果操作都在同一个数据库上,那可以直接使用数据库事务进行处理,但是如果跨数据库操作呢?可以使用JTA。来看看百度百科中JTA的解释:“JTA,即Java Transaction API,译为Java事务API。JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。”。有兴趣的朋友可以搜一下JTA的用法。 把回滚放在业务层有利有弊 利在于可以不用增加DAO层的代码,DAO层只单纯扮演数据读写的角色,操作的粒度很细。细粒度意味着D...
阅读全文
摘要:MVC,顾名思义就是Model、View以及Control。 在J2EE中,一般由jsp扮演View层、servlet扮演Control层、java撰写Model层。 众所周知java的好处就是跨平台:一次编写,各种编译。 现在的问题是: 什么样的操作应该有Control层来做,而什么样的操作应该由Model层来完成? 划分方法: 当某一个操作不知道该放在控制层做还是模型层的时候,可以问自己一个问题:“如果从web应用改成桌面应用,那这个操作还需要做吗?” 如果回答是yes,那就放在model层,否则放着Control层。 比如说有如图的一个操作 显然,对电流值的大小的“判...
阅读全文
摘要:这星期在整理工程的文档。发现一些问题。1、DAO层应该进行具体的操作还是抽象程度高的操作? 抽象程度越高,复用的可能性就越大。但是效率上确实眼睁睁看着它提高不了。2、DAO层的操作应该事先准备完整的“增删改查”,还是等用到的时候再针对性的增加? 由于当初在开始建立工程时,时间紧迫而且需求不清晰,所以DAO层给所有的数据库表甚至所有表的字段都编写了“增删改查”的接口。这次整理代码的时候发现有好多数据表中的操作(如修改),或者某些字段的操作都是用不到的,因为业务本身就注定了这些字段一旦写入就不会再更改或不允许更改。所以,本人其实更倾向于后者,即用到的方法在添加。一是代码结构更清晰也更有针对性,..
阅读全文
摘要:昨天已经可以在页面中列出临近的景点及其相隔距离。今天把这些景点及其距离在百度地图中标注出来。1、百度Maker和Label覆盖物“Marker:标注表示地图上的点,可自定义标注的图标。 Label:表示地图上的文本标注,您可以自定义标注的文本内容。"根据百度API文档中的描述,选择Maker作为当前位置的标注,Label作为周围景点的标注(因为可以定义文本的内容,因此可以讲距离写到label上)Marker的用法:var map = new BMap.Map("position");var point = new BMap.Point(${currentLocat
阅读全文
摘要:昨天已经生成了距离矩阵。今天的任务是把它们放到展现层,让游客用户可以使用。1、编写一个查询方法,查询某个距离范围内的景点的数量select count(*) from distance where( sight1='3_d_20' or sight2='3_d_20')and distance < 50;将该方法写入DAO层。2、编写一个查询方法,查询某个距离范围内的景点列表select * from distance where( sight1='3_d_20' or sight2='3_d_20')and distanc
阅读全文
摘要:在原来的工程中,是没有景点间的距离这个概念的。为了将这一元素添加到工程中,需要以下改动:1、增加一个数据库表,用来存储景点之间的距离信息。可以看到有三个字段,分别为景点1的ID号、景点2的ID号以及两者之间的距离。2、需要在工程中定义“距离”这一数据结构3、需要增加DAO层,以支持对distance表的读写访问。DAO层主要的方法有:新增、删除、检索。新增:在景区管理员增加新景点时,计算新景点与已存在的各个景点之间的距离,然后写入distance表中。删除:景区管理员删除一个景点时,需要删除该景点跟其他所有景点之间的距离记录。delete from distance where sight1=
阅读全文
摘要:在百度地图API中,BMap类有一个可以测距的函数:Number getDistance(start:Point, end:Point) 返回两点之间的距离,单位是米。假设现在要测量的是“大唐芙蓉园御苑门”到“大唐天威”之间的距离。那么首先要获得这两个地址的经纬度信息。“大唐芙蓉园御苑门”的经纬度为:108.977073,34.217936“大唐天威”的经纬度为:108.980271,34.218231之后在js代码中写入这两个地点。<script type="text/javascript">var map = new BMap.Map("posit
阅读全文
摘要:标记当前位置:示例代码:var marker = new BMap.Marker(point);map.addOverlay(marker);在地图上显示足迹:显示足迹列表要用到百度地图API中“添加折线”的方法。API文档给出的参考代码是:var polyline = new BMap.Polyline([ new BMap.Point(116.399, 39.910), new BMap.Point(116.405, 39.920) ], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5} );...
阅读全文
摘要:之前的回复与评论的js部分都是用HTML标签定义的方式来做(用了很多find和closet方法)。这样导致js代码和HTML结构之间的紧耦合,为之后调整结构或者进行CSS渲染造成不便。这周要做的工作就是讲js代码与HTML结构进行分离。用HTML标签class和id的方式唯一确定某个元素。由于class和id可以与任意的标签结合,因此也就使js的定位脱离了结构。将任务进行如下划分:首先,要先捋清楚每一个动作所要传递的参数,仅保留必要的参数。其次,更改获取参数标签的定位方法。(从以前的结构定位,改为class和id定位)最后,更改响应刷新页面的函数。(因为定位的方式变了,因此响应时候动态新增的代
阅读全文
摘要:今天丰富了一下登录后的主页内容原本只有上边的介绍信息,现在增加了下边两栏统计信息。
阅读全文
摘要:可以根据目录结构查看各个景区的景点也可以批量处理删除和移动的操作。左边树状目录,右边对应的列表。左边目录结构上用橘色标示现在正处在的目录位置。(用这种方式比用面包屑更适合表现在树当中)右边蓝色的条条表示这个节点是一个目录节点。不需要用iframe这个HTML结构来做。只要设定两个DIV,然后让左边这个树状结构float left,然后右边的列表margin-left足够的空间就可以啦。像这个样子PS:CSS真是难调……
阅读全文
摘要:如果想要给一个form表单赋予多种操作。如:在这个表单中,希望可以有“删除”和“移动”两种动作。但是一个form只有一个action处理要怎样才能用一个action应对两种不同的操作呢?在servlet的参数HttpServletRequest req中,有一个函数,名为getParameterNames()。这个参数的含义是:Returns an Enumeration of String objects containing the names of the parameters contained in this request. If the request has no parame
阅读全文
摘要:今天上午的任务是做一个批量删除。1、要做批量删除,需要在页面上做一组checkbox来让用户进行多选。回顾一下checkbox的语法:<input type="checkbox" name="spice" value="salt" /><input type="checkbox" name="spice" value="perpper" /><input type="checkbox" name="spice&quo
阅读全文
摘要:三个部分中,第一个部分是当前的位置,第二个是整个目录结构,第三个是这个目录下的子节点信息。现在需要做两个改进:1、将目录结构上的非目录节点去掉。2、显示数量这个数量是某个节点的直接子节点的数量,如果更客观一点,应该反映的是某个节点之下所有节点(包括递归的子目录中的子节点)的数量。3、在下面的节点列表上,显示所有的子节点及及目录中的节点(递归)实现递归显示所有子节点的过程也同样使用到了之前介绍的广搜算法。
阅读全文