和九个表单相互对应的九个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中找到相应的路径。