读书人

Struts2学习二

发布时间: 2012-10-06 17:34:01 作者: rapoo

Struts2学习2

今天老师的第二讲,主要是讲的是一个jsp页面输入的一个校验~?

首先,老师将“第一讲”的LoginAction类,继承extendsActionSupport

然后通过struts2文件夹中的docs,检索到了ActionSupport的API,发现里面包含了Action最常用的一些方法。

其中就提到了一个校验的方法:

public void validate()------这个校验函数,不应该去进行业务逻辑的校验,也就是不带过多的逻辑,一般作用在本次例子中就是用来判断是否为空的基本作用。

?

@Override public void validate() { if(this.getUsername()==null ||"".equals(this.getUsername().trim())) { this.addFieldError("username", "Please enter your username!"); } if(this.getPassword()==null ||"".equals(this.getPassword().trim())) { this.addFieldError("password", "Password required!"); }?

?相关联的login2.jsp中的代码

<body>   <s:form action ="login">   <s:textfield name ="username" label="username"></s:textfield>   <s:password  name ="password" label="password"></s:password>   <s:submit  label="Submit"></s:submit>   </s:form>     </body>

?

其中this.addFieldError(String arg0, String arg1)中的arg0,要和jsp中的<s:textfield name="xxx" ...> xxx保持一致,这样才能得到关联。arg1的字符串,是代表,显示出错后,屏幕上输出的提示文字。

?

2. 并且,在修改完LoginAction.java文件后,需要返回struts.xml文件进行相应的配置!

   <result name="input">/login2.jsp</result>

?注意,此时对应validate的校验函数执行后,会自动的寻找固定的result name="input",所以,这里validate()和input是固定搭配。? ?这里表示当validate()函数执行完成之后,会自动的返回到login2.jsp页面

?

3.? 显示页面:


Struts2学习二
?

B.? 如果还需对前台界面的输入进行逻辑验证的话,此时应该将逻辑写在LoginAction.class的execute函数中。

而不是Validate()

在此次例子中,我们加入需求:“界面输入的username和密码只有分别匹配了hello,world才能成功,否则报错”

?

?1.? LoginAction.java中的execute方法:

public String execute() throws Exception{       if("hello".equals(this.getUsername().trim())&&"world".equals (this.getPassword().trim()))             {  return "success";              }       else             {this.addFieldError("username", "username or password error!!");return "failer";}}

?注意:return “failer”

?

2. 所以现在我们需要返回到Struts.xml进行相应的配置。

struts.xml代码:

  <result name="failer">/login2.jsp</result>

代表,当return failer时,前台页面会自动的返回login2.jsp中??

?

3. 结果如图:当输入的username和密码分别为 asd,123 的时候,与我们要求的需求不匹配,此时页面转换成

?
Struts2学习二
?

?

读书人网 >软件架构设计

热点推荐