和九个表单相互对应的九个action表单处理程序:
LoginAction.java
package action;
import org.apache.struts.action.*;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.DynaActionForm;
import db.dbConn;
import java.sql.ResultSet;
import javax.servlet.http.*;
public class loginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DynaActionForm loginForm = (DynaActionForm) form;
dbConn javaBean = new dbConn();
HttpSession session = request.getSession();
//login.setSno(loginForm.getString("Sno"));
String prompt = null;
String sno = loginForm.getString("Sno");
String key = loginForm.getString("Key");
String kind = loginForm.getString("Kind");
if (session.getAttribute("sno") == null) {
session.setAttribute("Sno", sno);
session.setAttribute("Key", key);
}//更新session的内容;
if (sno != null && key != null) {
//管理员登陆页面控制处理
if (kind.equals("admin")) {
String SQL = "SELECT* From admins where id='" + sno + "'";
ResultSet rs1 = (ResultSet) javaBean.executeQuery(SQL);
if (rs1.next() && key.equals(rs1.getString("key"))) {
prompt = "ad_success";
} else {
request.setAttribute("msg", "管理员同志您的身份验证不正确!");
prompt = "failureLogin";
}
} //学生登陆页面控制处理
else {
String SQL = "SELECT * From stuinfo where Sno='" + sno + "'" + "and keys='" + key + "'";
ResultSet rs2 = (ResultSet) javaBean.executeQuery(SQL);
if (!rs2.next()) {
request.setAttribute("ms", "您登陆的帐号和密码不一致!");
return (mapping.findForward("failureLogin"));
} else {
session.setAttribute("Sno", rs2.getString("Sno"));
session.setAttribute("Sname", rs2.getString("Sname"));
prompt = "stu_success";
}
}
}
return (mapping.findForward(prompt));//需要有返回值;
}
}
登陆页面的处理:学生登陆成功,则根据“stu_success”到config-struts中找到相应的路径。
否则学生登陆失败失败,则显示“您登陆的帐号和密码不一致!”;管理员登陆成功,则根据“ad_success”到config-struts中找到相应的路径,否则管理员登陆失败,则显示:“管理员同志您的身份验证不正确!”,两次登陆失败后,都返回登陆页面也是根据prompt值在config-struts中找到相应的路径。