📄 answeraction.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 + -