<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<!-- struts-config.xml文件名称可以根据需求更改-->
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<!--启动时0秒加载 启动时servlet便初始化 即启动时struts便可以使用-->
<load-on-startup>0</load-on-startup>
</servlet>
<!--通过提交到*.do而找到此servlet 从而找到核心配置文件struts-config.xml-->
<servlet-mapping>
<servlet-name>action</servlet-name>
<!--*.do可以根据需要修改 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<head>
<title>login.jsp</title>
</head>
<body>
<center>
<!--显示全部错误信息: <font color="red"><html:errors /></font> -->
<font color="red"><html:errors property="loginErrors" /></font>
<html:form action="login.do" method="post">
<table border="0">
<tr>
<td>Username:</td>
<td><html:text property="username"/></td>
<td><font color="red"><html:errors property="unameErrors"/></font></td>
</tr>
<tr>
<td>Password:</td>
<td><html:password property="password" /></td>
<td><font color="red"><html:errors property="passwordErrors"/></font></td>
</tr>
<tr>
<td></td>
<td align="left">
<html:submit value="提交"/>
<html:reset value="重置"/>
</td>
</tr>
</table>
</html:form>
</center>
</body>
</html:html>
private String username;
//一般用来验证非空和数据格式
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
//建立一个ActionErrors对象 该对象用来保存所有出现的错误 ActionErrors是一个集合类
ActionErrors aErrors = new ActionErrors();
//验证非空 trim()方法用于去除首尾的空格 只是首尾的空格
if(this.username == null || this.username.trim().equals("")) {
//加入错误信息
aErrors.add("unameErrors", new ActionMessage("username.null"));
}
//判断密码
if(this.password == null || this.password.trim().equals("")) {
//加入错误信息
aErrors.add("passwordErrors", new ActionMessage("password.null"));
}
return aErrors;
}
password.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01<br>
login.error=\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\uff01
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
//可以直接调用form中的getter方法获取提交的参数
LoginForm loginForm = (LoginForm) form;
if(loginForm.getUsername().equals("cgz")&&loginForm.getPassword().equals("5982285")) {
//登陆成功 将用户名保存在session中
request.getSession().setAttribute("username", loginForm.getUsername());
//跳转 在Action中 跳转是通过返回值来处理的
//return new ActionForward("/success.jsp");
return mapping.findForward("success");
}else {
//登录失败 返回登陆页面 同时显示错误信息 Input Source里面设置的内容
//注意是ActionMessages而不是ActionMessage
ActionMessages aMessages = new ActionMessages();
aMessages.add("loginErrors", new ActionMessage("login.error"));
//this.addErrors()不是this.addMessages()
this.addErrors(request, aMessages);
return mapping.getInputForward();
}
}
}
<head>
<title>login.jsp</title>
</head>
<body>
<center>
<!--显示全部错误信息: <font color="red"><html:errors /></font> -->
<font color="red"><html:errors property="loginErrors" /></font>
<html:form action="login.do" method="post">
<table border="0">
<tr>
<td>Username:</td>
<td><html:text property="username"/></td>
<td><font color="red"><html:errors property="unameErrors"/></font></td>
</tr>
<tr>
<td>Password:</td>
<td><html:password property="password" /></td>
<td><font color="red"><html:errors property="passwordErrors"/></font></td>
</tr>
<tr>
<td></td>
<td align="left">
<html:submit value="提交"/>
<html:reset value="重置"/>
</td>
</tr>
</table>
</html:form>
</center>
</body>
</html:html>