1:新建一个login2.jsp,使用Struts2的标签编写JSP文件
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix ="s" uri="/struts-tags"%>
<html>
<body>
<s:form action="login">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit></s:submit>
</s:form>
</body>
</html>
2:修改了原来的execute,validate方法,
在execute方法中加入逻辑校验,即进行密码的判断,如果用户名是hello,密码是wordl,则正确,跳转到success,否则错误,提示username or password error。
在validate方法中加入判空校验,fieldError中如果有值,则自动跳转到struts.xml配置文件中 action中result为input对应的页面。
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";
}
}
public void validate() {
if (null == this.getUsername() || "".equals(this.getUsername().trim())) {
//只有jsp页面使用STRUTS标签,FieldError里的值才能显示在页面上。
this.addFieldError("username", "username required");
}
if (null == this.getPassword() || "".equals(this.getPassword().trim())) {
this.addFieldError("password", "password required");
}
}
3,struts.xml文件如下:
<package name="struts2demo" extends="struts-default"> <action name="login" class="com.test.action.LoginAction"> <!--input标签表示,如果action中validate方法的FieldError中有值,就会跳转到input标签指定的JSP页面--> <result name="input">/login2.jsp</result> <result name="success">/result.jsp</result> <result name="failer">/login2.jsp</result> </action> </package>