[Web基础]使用SpringMVC编写web程序的自我约定方法论

(1) 所有web请求的参数的解析和验证,可以使用统一的ValidateService去做,每个方法和controller的每个方法一一对应,正确时返回解析后的输入参数,错误时抛出异常,带上错误原因的信息,如:

public User login(User user) {
        //验证用户名和密码的合法性
        if (user == null || StringUtils.isBlank(user.getUsername())
                || !validateUsername(user.getUsername()) || StringUtils.isBlank(user.getPassword())
                || !validatePassword(user.getPassword())) {//用户名或密码不合法!
            String errorMessage = messageSource.getMessage(
                    "username.or.password.not.allow.key", null, LocaleContextHolder
                            .getLocale());
            throw new ValidateException(errorMessage);
        }
        return user;
    }

 

也可以使用《validation language 》 去验证。

 

(2) 每个controller方法,都需要有2种结果:error,success

 

(3) xml文件的校验,使用xsd

 

(4) 操作数据库,注意对符合这2个条件的添加事务

     1. save和update,delete;

     2.同时操作2个表以上,或者对一个表处理2个记录以上(批处理);

 

(5) sql语句, Where语句参数为空时不能误操作。

     对update,delete不能写(对于query则可以这样使用动态where):

      <dynamic prepend="WHERE">
            <isGreaterThan compareValue="0" prepend="and" property="id">
                ID = #id#
            </isGreaterThan>
        </dynamic>

        而应该:

WHERE
           ID = #id#
 

 

(6) 检查程序中哪些地方是需要同步的(web本身就是多线程,所以controller,filter,servlet,service本身设计上已经考虑到),例如一个有状态的对象被多线程访问,考虑使用syncronized或并发包的集合对象;

 

(7) 创建一个完整的web.xml,创建404页面和500页面;

 

(8) 单元测试:

   传统是JUnit,可以执行run的单元测试;

   对于web,常常需要容器才能run单元测试,因此有了testNG和play的JUint。

    testNG可以结合Spring自动载入bean然后再run,还可以结合mvn使用mvn test跑测试,数据库测试的mork可以使用DbFit,DbFit使用wiki文件mork数据。

    play的JUnit更加强大,与框架集合在一起,使用play test命令,可以在web页面跑单元测试,数据库的mork使用YAML。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值