struts开发编码式和声明式认证

编码式认证登录验证开发步骤:

1.      新建一个java project

2.      导入struts2核心jar包和其他必须组件

3.      配置核心过滤器(重要),web-xml文件中配置

<filter>

<filter-name>StrutsPrepareAndExecuteFilter</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>StrutsPrepareAndExecuteFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

4.      新建一个类 UserAction(自定),继承ActionSupport(必须)

5.      定义成员字段,例如

 

   private String username;

   private String password;

   private String email;

6.      提供getset方法(必须)

7.      提供公共的验证方法(可选,不推荐)在此方法内写一些需要认证的内容

@Override

   public void validate() {

     

      if(this.username==null ||this.username.trim().length()==0){

         this.addFieldError(username"用户名必填");

      }elseif(!this.username.matches("^[\u3400-\ufa29]+$")){

         this.addFieldError(username"用户名必须是中文");

      }

  

      if(this.password==null||this.password.trim().length()==0){

         this.addFieldError(password"密码必填");

      }else if(!this.password.matches("^[0-9]{6}$")){

         this.addFieldError(password"密码必须是六位数字");

      }

     

   }

 

8.      提供专用的验证方法(推荐)

比如验证登陆,就用一个专门验证登录的方法,

注册就用一个专门验证注册的方法.

其中方法的命名非常重要,有严格规定,方法名错了验证方法就无效了

比如控制跳转的方法为registerMethod(),那么他的专用验证方法就必须是

validateRegisterMethod() 在这个跳转方法前加上validate.

 

代码举例:

       专用登录的验证方法:

public void validateLoginMethod() {

      if(this.username==null ||this.username.trim().length()==0){

         this.addFieldError(username"用户名必填");

      }else if(!this.username.matches("^[\u3400-\ufa29]+$")){

         this.addFieldError(username"用户名必须是中文");

      }

  

      if(this.password==null||this.password.trim().length()==0){

         this.addFieldError(password"密码必填");

      }else if(!this.password.matches("^[0-9]{6}$")){

         this.addFieldError(password"密码必须是六位数字");

      }

   }

 

      

登录的跳转方法

/**

       * 用户登录的业务控制方法

       */

     

      public String loginMethod() throwsException {

         ActionContext.getContext().put("username",username);

         ActionContext.getContext().put("password",password);

         return "loginOK";

      }

 

9.      提供业务控制方法,如上,控制如果登录验证成功就返回"loginOK"

(至此java代码部分就结束,接下来配置xml文件)

 

10.  配置分XML文件,此处的XML文件必须和新建的类 UserAction(自定)在同一个包下,如下图,其中XML文件的命名没有严格规定,但是最好是包名+struts.xml(推荐)


11.配置javavalidator-struts.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<!-- 上面的文件头在 struts2-core2.3.1.jar中的struts-default中拷贝-->

 

<struts>

   <!-- packeage name自定,但是多个分配置文件的包名不能相同 -->

   <package name="javavalidatorPackage" extends="struts-default"

      namespace="/">

 

      <!-- 注册 -->

      <!-- attion name是请求的uri  method是控制业务跳转的方法 -->

      <action name="registerRequest"class="javavalidator.UserAction"

         method="registerMethod">

 

         <!-- input(固定) 业务跳转的方法不成功是跳到的页面,比如注册失败跳回到注册的页面-->

         <result name="input" type="dispatcher">

            /java111/register.jsp

         </result>

 

         <!-- registerOK registerMethod业务跳转的方法成功返回的值.-->

         <result name="registerOK" type="dispatcher">

            /java111/registerOK.jsp

         </result>

      </action>

  

      <!-- 登录 -->

      <action name="loginRequest"class="javavalidator.UserAction" method="loginMethod">

     

         <result name="input" type="dispatcher">

            /java111/login.jsp

         </result>

        

         <result name="loginOK" type="dispatcher">

            /java111/loginOK.jsp

         </result>

      </action>

  

   </package>

</struts>

 

 

12.配置总XML文件,这个文件命名有严格规定, struts.xml  并且要放到src目录下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

   

    <struts>

    <!-- 包含的每个包的分文件xml -->

    <include file="javavalidator/javavalidator-struts.xml"></include>

    <include file="xmlvalidator/xmlvalidator-struts.xml"></include>

    <include file="model/model-struts.xml"></include>

    </struts>

 

 

Struts 声明式认证(利用bean模型)

 

 

编码式认证登录验证开发步骤:

1.新建一个java project

2.导入struts2核心jar包和其他必须组件

3.配置核心过滤器(重要),web-xml文件中配置

<filter>

<filter-name>StrutsPrepareAndExecuteFilter</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>StrutsPrepareAndExecuteFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

4.写一个登陆bean模型 (UserbeanLogin.java)

 

public class UserbeanLogin {

 

private String username;

 

private String passward;

 

public String getUsername() {

   return username;

}

 

public void setUsername(String username) {

   this.username = username;

}

 

public String getPassward() {

   return passward;

}

 

public void setPassward(String passward) {

   this.passward = passward;

}

 

 

}

 

 

5.写一个UserAction, (UserAction.java )继承ActionSupport

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

 

public class UserAction extends ActionSupport {

  

   private UserbeanLogin userbeanLogin;

   private UserbeanRegister userbeanRegister;

  

   public UserbeanLogin getUserbeanLogin() {

      return userbeanLogin;

   }

   public void setUserbeanLogin(UserbeanLogin userbeanLogin) {

      this.userbeanLogin = userbeanLogin;

   }

   public UserbeanRegister getUserbeanRegister() {

      return userbeanRegister;

   }

   public void setUserbeanRegister(UserbeanRegister userbeanRegister) {

      this.userbeanRegister = userbeanRegister;

   }

  

   /**

    * 业务控制方法

    *

    */

   //注册方法

   public String userRegisterMethod() throws Exception {

      ActionContext.getContext().put("userbeanRegister",userbeanRegister);

     

      return "UserRegisterOK";

   }

 

   //登录方法

   public String userLoginMethod() throws Exception {

      ActionContext.getContext().put("userbeanLogin",userbeanLogin);

      return "UesrLoginOK";

   }

}

 

6.配置分XML文件,命名自定(model-struts.xml)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

 

<struts>

   <package name="modelPackage" extends="struts-default"

      namespace="/">

      <!-- 注册 -->

      <action name="RegisterRequest"method="userRegisterMethod" class="model.UserAction">

        

         <result name="UserRegisterOK" type="dispatcher">

            /model/registerOK.jsp

         </result>

         <result name="input" type="dispatcher">

           

            /model/register.jsp

         </result>

      </action>

     

      <!-- 登录 -->

      <action name="LoginRequest" method="userLoginMethod"class="model.UserAction">

        

         <result name="UesrLoginOK" type="dispatcher">

            /model/loginOK.jsp

         </result>

         <result name="input" type="dispatcher">

            /model/login.jsp

         </result>

      </action>

   </package>

 

</struts>

 

 

7.配置UserAction的验证文件,命名有严格规定,名字写错验证无效

格式为:UserAction-LoginRequest-validation.xml

UserAction表示实现了ActionSupport的那个类,

LoginRequestxml配置文件中ation标签的 name属性的值,

validation是固定的,表示验证文件,他们之间以-来连接,后缀是.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

      "-//Apache Struts//XWork Validator 1.0.3//EN"

     "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>

 

 

   <!-- UserAction中的字段 -->

   <field name="userbeanLogin">

     

      <!-- type="visitor"  模型专用-->

      <field-validator type="visitor">

         <message></message>

      </field-validator>

   </field>

</validators>

      

8.配置bean模型 (UserbeanLogin.java) 的验证文件,此文件要和UserbeanLogin.java放在同一个包中,文件命名也有规定,写错无效

文件名命名:UserbeanLogin-validation.xml

命名方式以bean模型的名字- validation.xml

<!DOCTYPE validators PUBLIC

      "-//Apache Struts//XWork Validator 1.0.3//EN"

     "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>

   <!-- bean模型中的字段 -->

   <field name="username">

      <!-- 此处的type xwork-core-2.3.1.1.jar/validator/validators/default.xml 中查找,

      requiredstring表示必填的字符串-->

      <field-validator type="requiredstring">

         <!-- 出错时候的提示 -->

         <message>用户名必填</message>

      </field-validator>

      <field-validator type="regex">

         <param name="expression">^[\u3220-\uFa29]+$</param>

         <message>用户名必须是中文</message>

      </field-validator>

   </field>

 

   <field name="passward">

      <field-validator type="requiredstring">

         <message>密码必填</message>

      </field-validator>

      <field-validator type="regex">

         <param name="expression">^[0-9]{6}$</param>

         <message>密码必须是六位数字</message>

      </field-validator>

   </field>

</validators>

 

9.最后配置总xml文件(struts.xml)文件名固定,将分文件model-struts.xml包含到其中

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

   

    <struts>

    <!-- 包含的每个包的分文件xml -->

    <include file="javavalidator/javavalidator-struts.xml"></include>

    <include file="xmlvalidator/xmlvalidator-struts.xml"></include>

    <include file="model/model-struts.xml"></include>

    </struts>

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值