⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 answeraction.java

📁 数学网
💻 JAVA
字号:
package math.answer.controller;

import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import math.answer.model.AnswerBean;
import math.answer.controller.AnswerForm;

import math.answer.dao.AnswerDAO;
import math.login.controller.LoginForm;
import math.login.model.User;

public class AnswerAction extends Action {

	private org.apache.commons.logging.Log __log = LogFactory.getFactory()
			.getInstance(this.getClass());

	private DataSource ds = null;

	public ActionForward execute(ActionMapping actionMapping,
			ActionForm actionForm, HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) {

		ds = getDataSource(httpServletRequest);

		ActionForward myforward = null;
		String myaction = actionMapping.getParameter();

		if (isCancelled(httpServletRequest)) {
			if (__log.isInfoEnabled()) {
				__log.info(" [Article] " + actionMapping.getAttribute()
						+ " - action was cancelled");
			}
			return actionMapping.findForward("cancel");
		}

		if (__log.isInfoEnabled()) {
			__log.info(" [Article] action: " + myaction);
		}
		if ("".equalsIgnoreCase(myaction)) {
			myforward = actionMapping.findForward("failure");
		} else if ("ANSWER".equalsIgnoreCase(myaction)) {
			myforward = performAnswer(actionMapping, actionForm,
					httpServletRequest, httpServletResponse);// 随机选题方法
		} else if ("RIGHT".equalsIgnoreCase(myaction)) {
			myforward = performRight(actionMapping, actionForm,
					httpServletRequest, httpServletResponse);// 判断答题是否正确方法
		}
		return myforward;

	}

	private ActionForward performRight(ActionMapping mapping,
			ActionForm actionForm, HttpServletRequest request,
			HttpServletResponse response) {
		HttpSession session = request.getSession();
		AnswerDAO answerDAO = new AnswerDAO(ds);
		AnswerForm answerForm = (AnswerForm) actionForm;
		AnswerBean answerBean = new AnswerBean();
		AnswerBean award = new AnswerBean();
		int difficulty = (int) answerForm.getDifficulty();

		try {
			User use = new User();
			use = (User) session.getAttribute("USER");
			int userawards = 0;


			int back = answerBean.getAnswer();
			int front = answerForm.getAnswer();

			award = (AnswerBean) session.getAttribute("AnswerBean");

			
			

			int reg = 0;
			if (use != null) {
				userawards = use.getUsers_award();// 从USERBEAN中取出USER以有的积分
				String username = use.getUsername();
			if (front == back) {

				reg = award.getAward() + userawards;
				User user = answerDAO.updateaward(username, reg);
				session.setAttribute("USER", user);
				session.removeAttribute("AnswerBean");

				BeanUtils.populate(answerForm, BeanUtils.describe(award));

				return mapping.findForward("answer_success");

			} else {

				reg = userawards - award.getAward();
				User user = answerDAO.updateaward(username, reg);
				session.setAttribute("USER", user);
				session.removeAttribute("AnswerBean");
				BeanUtils.populate(answerForm, BeanUtils.describe(award));

				return mapping.findForward("answer_error");
			}
			}
			else{
				if (front == back) {
					session.removeAttribute("AnswerBean");
					
					request.setAttribute("result","回答正确,由于你没有登录,不得分。");
					return mapping.findForward("answer_guest");

				} else {

					session.removeAttribute("AnswerBean");
					request.setAttribute("result","回答错误!");
					return mapping.findForward("answer_guest");
			}
			}
		} catch (Exception e) {
			//generalError(request, e);
			e.printStackTrace();
		}

		return mapping.findForward("failure");// 应捕获异常
	}

	private ActionForward performAnswer(ActionMapping mapping,
			ActionForm actionForm, HttpServletRequest request,
			HttpServletResponse response) {

		AnswerDAO answerDAO = new AnswerDAO(ds);
		AnswerForm answerForm = (AnswerForm) actionForm;
		HttpSession session = request.getSession();

		int vip=0;
		AnswerBean answerBean = new AnswerBean();
		try {
			 User use = (User)session.getAttribute("USER");
			 if(use==null){
			 vip=-1;
			 }else vip=use.getUsers_grade(); //用户权限判断;
			int difficulty = 0;
			difficulty = answerForm.getDifficulty();
			answerBean=(AnswerBean) session.getAttribute("AnswerBean"); 
			if (answerBean == null) {
				
				answerBean = answerDAO.retrieve(difficulty,vip);
				session.setAttribute("AnswerBean", answerBean);// 生成出题的BEAN
				// 为页面提供信息
			} else {
				if (answerBean.getDifficulty()!=difficulty){
					answerBean = answerDAO.retrieve(difficulty,vip);
					session.setAttribute("AnswerBean", answerBean);// 生成出题的BEAN	
				}else{
				answerBean = (AnswerBean) session.getAttribute("AnswerBean");
				}
			}

		} catch (SQLException e) {
			generalError(request, e);
			e.printStackTrace();
		}

		return mapping.findForward("anser_show");
	}

	private void generalError(HttpServletRequest request, SQLException e) {
		ActionErrors aes = new ActionErrors();
		aes.add(aes.GLOBAL_ERROR, new ActionError("error.general", e
				.getMessage()));
		saveErrors(request, aes);
		e.printStackTrace();
		if (__log.isErrorEnabled()) {
			__log.error(" [Register] Error - " + e.getMessage());

		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -