网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > Struts > 开源技术——体验Struts  

开源技术——体验Struts

2006-05-30  作者:网管整理  来源:bitsCN.com  点评 投稿 收藏

用户登陆的实现

看到题目,您一定觉得很土,Struts早已风靡,而关于Stuts的文章也早已遍地都是,如果你觉得土那你就别看了,我只是把我这段时间学到的一些比较肤浅知识在这里记录一下,如果您真在这些连载文章中获得了您想要的知识,那么我就会很欣慰了。
        这不快毕业了吗?我选的题目就和Struts有关,做一个关于学校的毕业设计选题系统,就是B/S结构,访问数据库的一些俗套的东西,为了巩固我这段时间学习Struts,我把这个系统竟往难里做,这样对我这个动手能力差的人,实际工作经验少的人来说,会有点帮助吧?
        当初就是这样想的,所以就开始了我的Struts之旅。
        那我就从我的第一页讲起吧,当然第一页一般都是登陆,至于怎么配置Struts,您还是参考一些别人的文章吧,我觉得写这些就够土的了,写怎么配置,怎么实现就更土!

        
        
网管论坛bbs_bitsCN_com

      
       这句是生成验证登陆表单所需要的js代码
      

            用户名:
            密码:   

中国网管论坛bbs.bitsCN.com


                           
                           
网管bitscn_com


       把控制格式的HTML删除掉,应该剩下这些就是主干了,对于这个毕业设计选题系统,有三种角色,管理员(Admin),教师(Teacher),学生(Student)而我把他们的登陆都做到了一起,在后台这三种角色也是都放在了一个表中,对于他们这三种对象,都是继承于Person的类,所以在登陆时可以忽视他们的具体角色,用多态来实现登陆。
        

    action="/ajax.do?method=login" :将一些关于登陆啊,注册的一些乱七八糟的操作我都放到了一个DispatchAction,之后可以用method的不同来分别调用不同的功能。
   onsubmit="return validateLoginForm(this)":这个是用来实现Struts自带的validate验证
    :是用来显示在登陆时的错误信息

    在这里需要的Struts相关配置会有如下的几个方面: 中国网管论坛bbs.bitsCN.com
      首先是要对配置文件进行配置我们登陆时需要的FormBean和Action
       (1)struts-config.xml:
            
           
                     对于登陆失败,我们准备返回到这里
           
     (2)validation.xml:
            

网管bitscn_com


                  user
                  ^[0-9a-zA-Z]*$
               这里是常量配置,因为我们还会需要到用户名的验证,所以把他设置为了常量
           
          下面是对这个bean的具体严整手段了,按字段field分别来写他们所依赖depaends的检验手段,常用的有必须填required,正则表达式验证mask,最大maxlength和最小minlength
            
  depends="required,mask,minlength,maxlength">
                   从application.properties里读取input.user.mask           

中国网管论坛bbs.bitsCN.com


                    从application.properties里读取input.user
                  
                  
                  以上三部分构成了js的一条错误提示,以下是具体的严整规则了
               
                    mask
网管联盟bitsCN_com

                    ${user}
                

                
                    minlength
                    1
                

                
                    maxlength 网管网www.bitscn.com
                    16
                

         

       depends="required,mask,minlength,maxlength">
    
         resource="false" />
         resource="false" />
    
     mask
     ${password}
    

网管u家u.bitsCN.com


    
     minlength
     1
    

    
     maxlength
     16
    

   
网管u家u.bitsCN.com

   对于我们需要的FormBean是这样写的:
package com.boya.subject.view;

              对应LoginForm里的一个属性

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
网管联盟bitsCN_com

public class LoginForm extends ActionForm
{
    private static final long serialVersionUID = 1L;
    private String user = null;
    private String password = null;

网管u家u.bitscn@com

    public String getPassword()
    {
        return password;
    }
网管下载dl.bitscn.com

    public void setPassword( String password )
    {
        this.password = password;
    }

网管网www_bitscn_com

    public String getUser()
    {
        return user;
    }

网管u家u.bitscn@com

    public void setUser( String user )
    {
        this.user = user;
    }
   
    public void reset(ActionMapping mapping,HttpServletRequest request)
    {
        this.password = null;这里很重要,当用户输入有错时,需要返回登陆界面给用户,为了用户填写方便我们可以设置返回给用户的哪部分信息设置为空
    }
}

我用来实现登陆的DispatchAction代码如下:
      public ActionForward login( ActionMapping mapping, ActionForm form,
            HttpServletRequest req, HttpServletResponse res ) throws Exception
    {
         Service service = getService();调用业务逻辑

网管网www_bitscn_com

        LoginForm loginForm = (LoginForm) form;获取formbean
        String user = loginForm.getUser();提取用户名
        Person person = service.getUser( user );从业务逻辑中查找用户
        ActionMessages messages = new ActionMessages();
        ActionMessage am;
        if ( person == null )如果用户不存在,我们就返回
        {
            am = new ActionMessage( "index.jsp.fail.user", user );参数的意义:第一个是主串,而后面的作为arg数组
            messages.add( "user", am );把错误信息放到errors 属性为user那里去显示 网管网www_bitscn_com
            saveErrors( req, messages );
            form.reset( mapping, req );如果出现错误,调用formbean的重置功能
            return mapping.findForward( ID.FAIL );
        }
        if ( !person.getPassword().equals( loginForm.getPassword() ) )如果密码不一致
        {
            am = new ActionMessage( "index.jsp.fail.password", user );
            messages.add( "password", am );
            saveErrors( req, messages );
            form.reset( mapping, req ); 网管联盟bitsCN_com
            return mapping.findForward( ID.FAIL );
        }
       
        setSessionObject( req, person.getType(), person );把用户放到session里
        return new ActionForward( person.getType() + ".do", true );我在每个类型用户的类中加入了一个getType来在这里调用,之后动态的去对应的admin.do,student.do,teacher.do的主页面,并且这里实现的不是请求转发,而是请求从定向
   }

中国网管联盟bitsCN.com


TAGs   体验   技术   public   String   return   //   void   if   req   null      
 上一篇:Struts Web开发框架WebPage3   下一篇:Struts的后代:Shale不是Struts
开源技术——体验Struts 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: