SpringSide开发实战(五):兵马未动,粮草先行

本篇讨论的问题是对项目中遇到的难题进行技术穿刺。

做过项目的人都知道,在构思完一个项目的功能之后,紧接着的事情就是考虑这些构思 的功能如何实现,对于自己不熟悉的领域,要进行技术穿刺。我的穿刺方法为先查找有无比 较好的开源组件可用,如果没有,就查找相关的文档,自己编写和测试代码。

在这一篇,我主要解决三个问题。

1、解决字符串加密的问题,在前面一篇中,我们设计用户模块的时候,准备将用户的密 码字段以MD5加密的方式保存,因此,这里需要写一个对字符串加密生成MD5字符串的方法;

2、解决生成图像缩略图和生成验证码的问题;

3、解决url重写的问题,之所以要用到url重写,主要是为了让用户在访问自己的主页时 ,可以使用http://www.xkland.com/username或者http://username.xkland.com这样的形式 ,而不是像http://www.xkland.com/index.jsp?username=xxx这样难看的形式。

需要说明的是,要解决上面的三个问题,不是没有开源的东西可用,而是我觉得每次都 要整合不同的组件是在是太麻烦,而我们需要的功能也不是很复杂,我们不需要太通用的东 西,只要能够解决这里特定的问题就行了,因此不如自己动手实现,同时还可以获得技术上 的提高。

首先来看看MD5加密的问题,JDK中本来提供有数据加密的支持,其中 java.security.MessageDigest类就可以实现MD5的加密,但是,加密后生成的数据是byte[] 类型的,这里只需要写一个方法将它转换为字符串就行,代码如下:

package com.xkland.util;
import java.security.MessageDigest;
import java.lang.NullPointerException;
import java.security.NoSuchAlgorithmException;
public  class StringUtil  {
  public  static  char [] num_chars =  new  char [] { ' 0 ' ,
  ' 1 ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' , ' 6 ' , ' 7 ' , ' 8 ' ,
  ' 9 ' , ' A ' , ' B ' , ' C ' , ' D ' , ' E ' , ' F ' } ;
  public  static String toMD5String(String input)
  throws NullPointerException,NoSuchAlgorithmException {
  if (input ==  null ) throw  new NullPointerException();
  char [] output =  new  char [ 32 ];
  MessageDigest md = MessageDigest.getInstance( " MD5 " );
  byte [] by = md.digest(input.getBytes());
  for ( int i = 0 ;i < by.length;i ++ ) {
  output[ 2 * i] = num_chars[ (by[i] &  0xf0 ) >>  4 ];
  output[ 2 * i + 1 ] = num_chars[ by[i] &  0xf ];
  }
  return  new String(output);
}
}

时间: 2024-10-29 00:32:47

SpringSide开发实战(五):兵马未动,粮草先行的相关文章

SpringSide开发实战(八):不是结局的结局,谈谈程序员的境界

SpringSide是个好东西,对我来说,它的好主要体现在两个方面:一.它提供了一个敏 捷开发的框架,省去了我自己整合Spring.Hibernate.Struts.ActiveMQ等等开源组件的 时间,而且还是最佳实践:二.它指导了我的学习目标,在SpringSide中整合的各种组件, 都是在同一类组件中最优秀的,而且要想熟练使用这些组件,都必须对它们进行深入的系统 的学习. 本来以为我会在SpringSide开发实战系列中写更多的文章,但是写到现在,我认为应该 要写结局了,为什么呢?因为在使

[原创].NET 分布式架构开发实战五 Framework改进篇

原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章,园子里的朋友给出了不少的反馈,特别感谢金色海洋和Virus两位朋友的一些反馈.周末的这两天,对文章中开发的那个Framework做了一些改进,虽然说系列文章会慢慢的给出代码,但是这两天的一些想法让我很兴奋,迫不及待的和大家分享一下,也当是对文章中以后给出的Framework先睹为快吧.   系列文

SpringSide开发实战(四):打通数据持久层的任督二脉

在这里,将创建一个简化的用户管理模块,演示怎样利用SpringSide提供的数据持久层 的功能,包括怎样通过Hibernate的Annotation来配置多对一映射和多对多映射. 大家都知道,现在最流行用户管理模型的是RBAC,也就是基于角色的访问控制模型,在 这种模型中,可以划分多个层次,如用户-角色-资源.用户-角色-权限-资源.用户-角色- 角色组-权限-资源.用户-角色-角色组-权限-操作-资源等等,因此,想要创建一个完善而 复杂的用户管理模块,是相当具有难度的.在Web2.0时代,有一

SpringSide开发实战(三):漫谈CSS和页面布局

这篇随笔不是专门针对SpringSide,却只得每个程序员一看. 还记得胡戈调侃<无极>中的王城布局为"圈圈套圈圈"娱乐城,也还记得我刚开始做 Web开发时"表格套表格"的页面布局.在大部分的程序员中,可能还在使用表格进行布局 ,使用表格进行布局的巨大缺点就是当页面进行一点点修改的时候,都有可能完全打乱页面 的外观,而且非常不利于和美工的配合.当然了,很多美工人员也在使用表格进行布局,他 们在图形软件中设计好页面,然后使用切片工具一切就完事,却给我们需要

SpringSide开发实战(二):修改数据库、字符编码和快速部署应用

SpringSide默认的数据库是hsql,但是大部分开发人员熟悉的数据库是MySql,因此在实 际开发过程中,遇到的第一件事往往是修改数据库.在SpringSide中修改数据库很简单,还 是以前一篇中创建的xkland项目为例,首先修改src\main\resources\config文件夹下的 jdbc.properties文件,注释掉1.2行,解注释7.8行,并修改10.11行的用户名和密码, 如下: 1#jdbc.driverClassName=org.hsqldb.jdbcDriver

SpringSide开发实战(一):使用Eclipse让SpringSide跑起来

自2000年Struts框架发布,到2001年底Hibernate的诞生,再到2004年Spring的流行, Java社区的开源软件哲学是:"只做好一件事情,只做最擅长的事情,其他事情留给别人去 做."但是到了2005年,Java开源出现了框架整合的大趋势,整个Java开源社区雨后春笋般 出现了一批又一批的full-stack框架,比较著名的有RIFE,Grails,JBoss Seam,Trails和 Able等等.SpringSide也是这样一个整合框架,常逛BlogJava的人肯

.NET分布式架构开发实战五 Framework改进篇

本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章,园子里的朋友给出了不少的反馈,特别感谢金色海洋和Virus两位朋友的一些反馈.周末的这两天,对文章中开发的那个Framework做了一些改进,虽然说系列文章会慢慢的给出代码,但是这两天的一些想法让我很兴奋,迫不及待的和大家分享一下,也当是对文章中以后给出的Framework先睹为快吧. 本篇文章涉及技术不多,主要是些想法(代码部分正在实现). 最主要的改进主要在于业务层开发的简化. 大家都知道系统的核心就是业务逻辑层了,业务逻辑的

SpringSide开发实战(七):在项目中整合FCKeditor

Web 2.0时代时代的Web项目,是无论如何也少不了一个在线编辑器的,因此在我们的项 目中整合一个Web编辑器就显得至关重要.在这里,我依然以前面的xkland项目为例,来探 讨在项目中整合FCKeditor的方方面面. 一.关于用户发表文章的功能设计 用户发表文章的功能,大家见过不少,也用过不少,最简单的,莫过于提供一个文本框 ,数据提交后直接写入数据库了事,稍复杂一点的最少也要提供一个输入标题和选择分类的 功能.当然,我们也可以把我们的功能设计得更有特色.在这个示例项目中,我假设开发的 是

SpringSide开发实战(六):AJAX,在地狱中漫步

说到AJAX,每个人都不会陌生,毕竟这两年它太流行了.然而,真正哪些地方需要AJAX ,并不是每个人都能够把握得很好.使用AJAX可以开发豪华的基于浏览器的富客户端界面, 然而其开发量的庞大和调试的艰难,让每一个程序员如同生活在地狱中一般. 我认为,真正需要AJAX的不外乎两种情况: 1.用户不希望他关注的信息离开他的视线的时候.比如填写某些表单的时候,有时候辛 辛苦苦填写的东西,一点提交按钮,全没了,如果某个字段验证失败,则所有的东西都要从 头再填,着实让人郁闷.虽然设计较好的网站可以保留用户