h1>登录(validator框架客户端验证(javascript))</h1>
<hr>
<html:javascript formName="loginForm"/>
<html:form action="login2.do" onsubmit="return validateLoginForm(this)">
username : <html:text property="username"/><br/>
password : <html:password property="password"/><br>
<html:submit/>
</html:form>
25、声明式异常
Action中
UserManager.getInstance().login(username, password);
return mapping.findForward("success");
业务逻辑记得先建立两个异常类
public void login(String username, String password) {
// if (!"admin".equals(username)) {
// throw new UserNotFoundException();
// }
// if (!"admin".equals(password)) {
// throw new PasswordErrorException();
// }
// }
Struts配置文件中
定义全局异常
<global-exceptions>
<!-- 全局异常
<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
-->
定义action
<action-mappings>
<action path="/login"
type="com.bjsxt.struts.LoginAction"
name="loginForm"
scope="request"
validate="false"
input="/login.jsp"<!-- 默认异常转向 -->
>
<!--
<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
-->
<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login.jsp"/>
</action>
Jsp页面
<html:errors/>
声明式异常传递一个站位附的办法
异常类中
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String msg) {
super(msg);
}
}
业务调用中
public void login(String username, String password) {
// if (!"admin".equals(username)) {
// throw new UserNotFoundException(username);
// }
// if (!"admin".equals(password)) {
// throw new PasswordErrorException();
// }
// }
26、个性化异常处理
建立资源文件
user.login.success={0},登录成功
user.not.found=用户不能找到,用户名称=[{0}]
user.password.error=密码错误
user.login.error=登录失败
建立一个异常处理类
public class ErrorCodeException extends RuntimeException {
private String errorCode;
private Object[] args;
//没有占位符
public ErrorCodeException(String errorCode) {
this(errorCode, null);
}
//有一个占位符的
public ErrorCodeException(String errorCode, Object args0) {
this(errorCode, new Object[]{args0});
}
//有多个占位符的
public ErrorCodeException(String errorCode, Object[] args) {
this.errorCode = errorCode;
this.args = args;
}
public String getErrorCode() {
return errorCode;
}
public Object[] getArgs() {
return args;
}
}
业务调用类
public void login(String username, String password) {
// if (!"admin".equals(username)) {
// throw new ErrorCodeException("user.not.found", username);