传智播客--教育办公系统的环境搭建,登陆的JavaScript验证,简单验证,复杂验证

时间:2023-02-10 14:56:00

教育办公系统是由佟刚老师讲的.呵呵,我相当喜欢听佟老师的课.讲解自然而且有激情.教育办公系统是以jQuery的使用很多.在这个项目里会多以后工作中碰到的大多数的jQuery情况都会有介绍,并给出相应的解决方案.而且这个项目是9天,时间很长.大家都知道传智的课一天要讲好多的内容,这个项目一下就讲9天还真担心有点跟不上啊,不过还好.这个项目完事就有一个过年放假,我们可以利用好这个放假.多多练习和吸收项目中的精华.

1. 搭建 SSH-1 开发环境:
    1). 加入 struts:
        ①. 额外导入 struts-1.3.8/lib/struts-extras-1.3.8.jar
        ②. 不能直接复制 struts 例子程序中的 web.xml 文件, 那样 将导致 el 不可用.
      
    2). 加入 hibernate:
        ①. 导入 jar 包. 其中 struts 的 antlr-2.7.2.jar 版本较低, 需要删除.
        ②. 在 classpath 下加入 hibernate 的 hibernate.cfg.xml 文件.
      
    3). 加入 spring:
        ①. 导入 jar 包. 其中 struts 的 commons-logging-1.0.4.jar 版本较低, 需要删除.
        ②. 新建配置文件.
      
    4). spring 整合 struts:
  
    5). spring 整合 hibernate:
        ①. 加入 c3p0 数据源:  导入 jar 包和数据库驱动
        ②. 在 spring 中配置 hibernate 的 SessionFactory 对象(使用 hibernate.cfg.xml 配置文件)
        ③. 配置 hibernate 事务
      
    6). 进行单元测试
  
    7). 在 web.xml 文件中配置 spring 提供的字符编码过滤器   
  
2. hibernate 的 domain 映射文件注意:
    1). 在双向 1 对 多时,     尤为注意: 在 1 的一端映射时 set 节点的 table 和 key 子节点, 它们需要和 多 的一方存在某种一致
    2). 在双向 1 对 1 映射时, one-to-one 端的  property-ref 属性.
    3). Resume 的 jobHistories 时组件集合.
  
3. 配置 hibernate 的二级缓存:
    1). 加入 jar 包
    2).    加入配置文件
    3). 在 hibernate 中启用二级缓存
  
4.登录页面

1)使用 js 的正则表达式进行前台验证:
要使用 struts 的 validation 框架进行服务器端验证, 所以使用继承 ValidatorForm
一个模块尽可能使用一个 FormBean, 如果使用 DispatcherAction, 无法实现对同一个 FormBean 的多样化验证,
        使用 MappingDispatcherAction 作为 Action 的父类
2)前台 js 验证
    ①: loginname 和 loginpassword 字段除去前后空格不能为空
    ②: loginname 和 loginpassword 字段除去前后空格, 不能少于 6 个字符
    ③: loginname 中不能包含特殊字符, 即以字母开头, 后边还可以包含数字和_   
   
    方案:
    ①: 需要自己编写 js 的 trim() 方法, 以去除前后空格
    ②: 需要针对    "不能包含特殊字符, 即以字母开头, 后边还可以包含数字和_" 编写一个正则表达式, 然后利用 js 进行验证. 
   
    解决:
    ①. 在 js 中定义正则表达式的基本语法:
            var reg = /pattern/[flags];
          
    ②. js 中关于正则的方法:
            rgexp.test(str): 返回一个 Boolean 值, 它指出在被查找的字符串中是否存在模式
            String 对象的 replace: 该方法可以用另一个字符串(第二个参数)来替换某个子串(第一个参数)的所有匹配
          
    ③. trim() 方法:
        //1. 定义一个前后为空格的正则表达式 :
        var reg = /^/s*|/s*$/g;
      
        //2. 定义 trim 函数, 把和定义好的正则匹配的字符替换为 ""
        function trim(str){
            var reg = /^(/s*)|(/s*)$/g;
            return str.replace(reg, "");
        }
      
      
    ④. loginname 中不能包含特殊字符, 即以字母开头, 后边还可以包含数字和_:
        //1. 定义正则表达式: 不能包含特殊字符, 即以字母开头, 后边还可以包含数字和_ 
        var reg1 = /^[a-zA-Z]/w+/w$/gi;
      
        //2. 使用正则表达式的 test() 方法进行判断.
        var test1 = "1asd";
        alert(reg1.test(test1));

5.使用 struts 的 validation 框架进行服务器端简单验证:
    1). 在 struts-config.xml 文件中声明使用 validator 插件
    2). 配置 validation.xml 文件.
    3). 利用 struts 的 validation 框架执行验证时, 若验证失败, 那么在 ActionErrors 中的 ActionMessage 对应的 key 为被验证的
               字段的字段名         
    3). 重写 Validation 框架的 FieldChecks 类的 validateMinLength 方法以去除前后空格: 主要目的是提供修改源代码的一种方法.
    4). 若验证不通过返回到 input 属性对应的页面, 此时的 loginname, loginpassword 是去掉前后空格的.
  

6.服务器端复杂验证: 用户名和密码是否匹配
    ①: 用户名不存在,  提示信息为: "用户名不存在"
    ②: 用户名存在, 但用户名和密码不匹配, 提示信息为: "用户名和密码不匹配"
    ③: 匹配, 返回请求页面
  
    方案:
    使用 struts 的声明式异常来转发页面和显示提示信息.
  
    解决:
    由 EmployeeService 的方法抛出异常, Action 不进行处理, 而由 struts 框架根据当前的 action 节点配置来进行相应的处理:
           如果出现对应的异常, 会利用当前 excpeption 配置节点的 key 生成对应的 ActionMessage 对象, 再放入 ActionMessages 中,
          把页面派发到 input 对应的页面中,  在前台页面利用 <html:errors property="key"> 进行显示