ITEEDU

3.6第六步:编写action业务处理

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