JavaWeb项目开发案例精粹-第3章在线考试系统-005action层
1.
<?xml version="1.0" encoding="UTF-8" ?><!-- XML声明 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd"><!-- 指定Struts 2配置文件的DTD信息 -->
<struts><!-- 根节点 -->
<constant name="struts.i18n.encoding" value="gb2312"></constant>
<package name="struts2" extends="struts-default">
<action name="login" class="com.sanqing.action.LoginAction">
<result name="studentSuccess" type="chain">getRandomSubject</result><!--进入考试页面-->
<result name="teacherSuccess" type="redirect">/teacher/index.html</result><!--老师登录成功页面-->
<result name="input">/login.jsp</result><!--登录失败页面-->
</action>
<action name="subjectAdd" class="com.sanqing.action.SubjectAddAction">
<result name="success" type="redirect">/teacher/subjectAdd.jsp</result><!--重定向到试题添加页面-->
<result name="input">/teacher/subjectAdd.jsp</result><!--请求转发到试题添加页面-->
</action>
<action name="subjectQuery" class="com.sanqing.action.QuerySubjectAction">
<result name="success">/teacher/subjectManage.jsp</result><!--跳转到试题列表管理页面-->
</action>
<action name="subjectParticular" class="com.sanqing.action.SubjectParticularAction">
<result name="success">/teacher/subjectShow.jsp</result><!--跳转到试题详细显示页面-->
</action>
<action name="subjectUpadateBefore" class="com.sanqing.action.SubjectUpdateBefore">
<result name="success">/teacher/subjectUpdate.jsp</result><!--跳转到试题更新页面-->
</action>
<action name="subjectUpadate" class="com.sanqing.action.SubjectUpdateAction">
<result name="success">/teacher/subjectUpdate.jsp</result><!--跳转到试题更新页面-->
</action>
<action name="subjectLikeQuery" class="com.sanqing.action.LikeQuerySubjectAction">
<result name="success">/teacher/subjectManage.jsp</result><!--跳转到试题列表管理页面-->
</action>
<action name="getRandomSubject" class="com.sanqing.action.GetRandomSubject">
<result name="success">/student/index.jsp</result><!--跳转到考试页面-->
</action>
<action name="submitExam" class="com.sanqing.action.SubmitExamAction">
<result name="success">/student/examResult.jsp</result><!--跳转到考试页面-->
</action>
<action name="showSubjectAnswer" class="com.sanqing.action.ShowSubjectAnswer">
<result name="success">/student/showAnswer.jsp</result><!--跳转到考试页面-->
</action>
<action name="queryStudentByName" class="com.sanqing.action.QueryStudentByName">
<result name="success">/teacher/studentManage.jsp</result><!--跳转到学生管理页面-->
</action>
<action name="queryStudentByClass" class="com.sanqing.action.QueryStudentByClass">
<result name="success">/teacher/studentManage.jsp</result><!--跳转到学生管理页面-->
</action>
</package>
</struts>
2.
package com.sanqing.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; /*
* 获得随机试题
*/
public class GetRandomSubject extends ActionSupport{
private SubjectService subjectService = new SubjectServiceImpl();
public String execute() throws Exception {
List<Subject> subjects = subjectService.randomFindSubject(20);//获得试题记录
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("subjects", subjects);
return SUCCESS;
}
}
3.
package com.sanqing.action; import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl;
import com.sanqing.util.Page;
import com.sanqing.util.PageResult; public class LikeQuerySubjectAction extends ActionSupport {
private String subjectTitle; //试题标题
private int currentPage; //当前页
private SubjectService subjectService = new SubjectServiceImpl(); public int getCurrentPage() {
return currentPage;
} public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
} public String getSubjectTitle() {
return subjectTitle;
} public void setSubjectTitle(String subjectTitle) {
this.subjectTitle = subjectTitle;
} public String execute() throws Exception {
Page page = new Page();
page.setEveryPage(10);//每页显示10条记录
page.setCurrentPage(currentPage);//设置当前页
PageResult pageResult = subjectService.likeQueryBySubjectTitle(subjectTitle, page);
List<Subject> subjects = pageResult.getList();//获得试题记录
List<Subject> newSubjects = new ArrayList<Subject>();//新的记录
//给关键字标红
for(Subject subject : subjects) {
String newTitle = subject.getSubjectTitle().replaceAll(subjectTitle,
"<font color='red'>" + subjectTitle + "</font>");
subject.setSubjectTitle(newTitle);
newSubjects.add(subject);
} page = pageResult.getPage();//获得分页信息
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("subjects", newSubjects);
request.setAttribute("page", page);
return SUCCESS;
}
}
4.
package com.sanqing.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Student;
import com.sanqing.service.StudentService;
import com.sanqing.service.StudentServiceImpl;
import com.sanqing.service.TeacherService;
import com.sanqing.service.TeacherServiceImpl; public class LoginAction extends ActionSupport {
private String id; // 接受用户编号
private String password; // 接受用户密码
private String role; // 接受用户角色
private StudentService studentService =
new StudentServiceImpl();//学生业务逻辑组件引用
private TeacherService teacherService =
new TeacherServiceImpl();//教师业务逻辑组件引用 public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getRole() {
return role;
} public void setRole(String role) {
this.role = role;
} public String execute() throws Exception {
if("student".equals(role)) {//如果以学生身份登录
if(studentService.allowLogin(id, password)) {
Student studentInfo = studentService.getStudentInfo(id);
//保存学生记录到session范围
Map session = ActionContext.getContext().getSession();
session.put("studentInfo", studentInfo);
return "studentSuccess";
}else {
addActionError("该学生编号不存在,或者密码不正确!");
return this.INPUT;
}
}else {
if(teacherService.allowLogin(id, password)) {
return "teacherSuccess";
}else {
addActionError("该教师编号不存在,或者密码不正确!");
return this.INPUT;
}
}
}
}
5.
package com.sanqing.action; import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Student;
import com.sanqing.service.StudentService;
import com.sanqing.service.StudentServiceImpl; public class QueryStudentByClass extends ActionSupport{
private String sclass;
private StudentService studentService = new StudentServiceImpl();
public String getSclass() {
return sclass;
} public void setSclass(String sclass) {
this.sclass = sclass;
}
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
List<Student> students = studentService.getStudentByClass(sclass);
request.setAttribute("students", students);
return this.SUCCESS;
} }
6.
package com.sanqing.action; import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Student;
import com.sanqing.service.StudentService;
import com.sanqing.service.StudentServiceImpl; public class QueryStudentByName extends ActionSupport{
private String studentName;
private StudentService studentService = new StudentServiceImpl();
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
List<Student> students = studentService.getStudentByName(studentName);
request.setAttribute("students", students);
return this.SUCCESS;
} }
7.
package com.sanqing.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl;
import com.sanqing.util.Page;
import com.sanqing.util.PageResult; public class QuerySubjectAction extends ActionSupport {
private int currentPage; //当前页
private SubjectService subjectService = new SubjectServiceImpl(); public int getCurrentPage() {
return currentPage;
} public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
} public String execute() throws Exception {
Page page = new Page();
page.setEveryPage(10);//每页显示10条记录
page.setCurrentPage(currentPage);//设置当前页
PageResult pageResult = subjectService.querySubjectByPage(page);
List<Subject> subjects = pageResult.getList();//获得试题记录
page = pageResult.getPage();//获得分页信息
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("subjects", subjects);
request.setAttribute("page", page);
return SUCCESS;
}
}
8.
package com.sanqing.action; import java.util.ArrayList;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; /*
* 显示试题答案
*/
public class ShowSubjectAnswer extends ActionSupport{
private SubjectService subjectService = new SubjectServiceImpl();
public String execute() throws Exception {
List<Subject> subjects = new ArrayList<Subject>();//保存学生考过的题目
HttpServletRequest request = ServletActionContext.getRequest();
Map session = ActionContext.getContext().getSession();
List<Integer> subjectIDs = (List<Integer>) session.get("subjectIDs");
for(Integer subjectID : subjectIDs) {
Subject subject = subjectService.showSubjectParticular(subjectID);//通过试题编号查找试题
subjects.add(subject);
}
request.setAttribute("subjects", subjects);
return SUCCESS;
}
}
9.
package com.sanqing.action; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; //该Action用来接收试题参数,并调用业务逻辑组件SubjectService来完成试题添加
public class SubjectAddAction extends ActionSupport{
private String subjectTitle;
private String subjectOptionA;
private String subjectOptionB;
private String subjectOptionC;
private String subjectOptionD;
private String subjectAnswer;
private String subjectParse;
private SubjectService subjectService = new SubjectServiceImpl(); public String getSubjectTitle() {
return subjectTitle;
}
public void setSubjectTitle(String subjectTitle) {
this.subjectTitle = subjectTitle;
}
public String getSubjectOptionA() {
return subjectOptionA;
}
public void setSubjectOptionA(String subjectOptionA) {
this.subjectOptionA = subjectOptionA;
}
public String getSubjectOptionB() {
return subjectOptionB;
}
public void setSubjectOptionB(String subjectOptionB) {
this.subjectOptionB = subjectOptionB;
}
public String getSubjectOptionC() {
return subjectOptionC;
}
public void setSubjectOptionC(String subjectOptionC) {
this.subjectOptionC = subjectOptionC;
}
public String getSubjectOptionD() {
return subjectOptionD;
}
public void setSubjectOptionD(String subjectOptionD) {
this.subjectOptionD = subjectOptionD;
}
public String getSubjectAnswer() {
return subjectAnswer;
}
public void setSubjectAnswer(String subjectAnswer) {
this.subjectAnswer = subjectAnswer;
}
public String getSubjectParse() {
return subjectParse;
}
public void setSubjectParse(String subjectParse) {
this.subjectParse = subjectParse;
}
public String execute() throws Exception {
Subject subject = new Subject();
subject.setSubjectTitle(subjectTitle);
subject.setSubjectOptionA(subjectOptionA);
subject.setSubjectOptionB(subjectOptionB);
subject.setSubjectOptionC(subjectOptionC);
subject.setSubjectOptionD(subjectOptionD);
subject.setSubjectAnswer(subjectAnswer);
subject.setSubjectParse(subjectParse);
if(subjectService.saveSubject(subject)) {
return SUCCESS;
}else {
this.addActionError("该试题已经添加过了,请不要重复添加!");
return INPUT;
}
}
}
10.
package com.sanqing.action; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; public class SubjectDeleteAction extends ActionSupport{
private int subjectID;
private SubjectService subjectService = new SubjectServiceImpl();
public int getSubjectID() {
return subjectID;
}
public void setSubjectID(int subjectID) {
this.subjectID = subjectID;
}
public String execute() throws Exception {
subjectService.deleteSubject(subjectID);
return SUCCESS;
}
}
11.
package com.sanqing.action; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl;
/*
* 查看试题详细信息
*/
public class SubjectParticularAction extends ActionSupport{
private int subjectID;
private SubjectService subjectService = new SubjectServiceImpl();
public int getSubjectID() {
return subjectID;
}
public void setSubjectID(int subjectID) {
this.subjectID = subjectID;
}
public String execute() throws Exception {
Subject subject = subjectService.showSubjectParticular(subjectID);
ServletActionContext.getRequest().setAttribute("subject", subject);
return SUCCESS;
}
}
12.
package com.sanqing.action; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; public class SubjectUpdateAction extends ActionSupport{
private int subjectID;
private String subjectTitle;
private String subjectOptionA;
private String subjectOptionB;
private String subjectOptionC;
private String subjectOptionD;
private String subjectAnswer;
private String subjectParse;
private SubjectService subjectService = new SubjectServiceImpl(); public int getSubjectID() {
return subjectID;
}
public void setSubjectID(int subjectID) {
this.subjectID = subjectID;
}
public String getSubjectTitle() {
return subjectTitle;
}
public void setSubjectTitle(String subjectTitle) {
this.subjectTitle = subjectTitle;
}
public String getSubjectOptionA() {
return subjectOptionA;
}
public void setSubjectOptionA(String subjectOptionA) {
this.subjectOptionA = subjectOptionA;
}
public String getSubjectOptionB() {
return subjectOptionB;
}
public void setSubjectOptionB(String subjectOptionB) {
this.subjectOptionB = subjectOptionB;
}
public String getSubjectOptionC() {
return subjectOptionC;
}
public void setSubjectOptionC(String subjectOptionC) {
this.subjectOptionC = subjectOptionC;
}
public String getSubjectOptionD() {
return subjectOptionD;
}
public void setSubjectOptionD(String subjectOptionD) {
this.subjectOptionD = subjectOptionD;
}
public String getSubjectAnswer() {
return subjectAnswer;
}
public void setSubjectAnswer(String subjectAnswer) {
this.subjectAnswer = subjectAnswer;
}
public String getSubjectParse() {
return subjectParse;
}
public void setSubjectParse(String subjectParse) {
this.subjectParse = subjectParse;
}
public String execute() throws Exception {
Subject subject = new Subject();
subject.setSubjectID(subjectID);
subject.setSubjectTitle(subjectTitle);
subject.setSubjectOptionA(subjectOptionA);
subject.setSubjectOptionB(subjectOptionB);
subject.setSubjectOptionC(subjectOptionC);
subject.setSubjectOptionD(subjectOptionD);
subject.setSubjectAnswer(subjectAnswer);
subject.setSubjectParse(subjectParse);
subjectService.updateSubject(subject);//更新
ServletActionContext.getRequest().setAttribute("subject", subject);
this.addActionMessage("更新成功!");
return SUCCESS;
}
}
13.
package com.sanqing.action; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Subject;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; /*
* 获得更新试题前的试题
*/
public class SubjectUpdateBefore extends ActionSupport {
private int subjectID;
private SubjectService subjectService = new SubjectServiceImpl();
public int getSubjectID() {
return subjectID;
}
public void setSubjectID(int subjectID) {
this.subjectID = subjectID;
}
public String execute() throws Exception {
Subject subject = subjectService.showSubjectParticular(subjectID);
ServletActionContext.getRequest().setAttribute("subject", subject);
return SUCCESS;
}
}
14.
package com.sanqing.action; import java.util.ArrayList;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sanqing.po.Student;
import com.sanqing.service.StudentService;
import com.sanqing.service.StudentServiceImpl;
import com.sanqing.service.SubjectService;
import com.sanqing.service.SubjectServiceImpl; /*
* 提交试卷,并打分
*/
public class SubmitExamAction extends ActionSupport{
private List<Integer> subjectID;//学生考试的题目
private SubjectService subjectService = new SubjectServiceImpl();
private StudentService studentService = new StudentServiceImpl();
public List<Integer> getSubjectID() {
return subjectID;
}
public void setSubjectID(List<Integer> subjectID) {
this.subjectID = subjectID;
}
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
List<String> studentAnswers = new ArrayList<String>();
for(int i = 0; i < 20; i++) {
String answer = request.getParameter("subjectAnswer"+i);
studentAnswers.add(answer);
}
int GeneralPoint = subjectService.accountResult(subjectID, studentAnswers); //设置成绩到学生信息中
Map session = ActionContext.getContext().getSession();
Student student = (Student)session.get("studentInfo");
String studentID = student.getStudentID();
studentService.setStudentResult(studentID, GeneralPoint);
request.setAttribute("studentName", student.getStudentName());//保存学生姓名和总分数
request.setAttribute("GeneralPoint", GeneralPoint);
session.put("subjectIDs", subjectID);//将考试题目保存到session,方便后面显示答案使用
return SUCCESS;
}
}
JavaWeb项目开发案例精粹-第3章在线考试系统-005action层的更多相关文章
- JavaWeb项目开发案例精粹-第3章在线考试系统-007View层
0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-004Service层
1. package com.sanqing.service; import java.util.List; import com.sanqing.po.Student; public interfa ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-003Dao层
1. package com.sanqing.dao; import java.util.List; import com.sanqing.po.Student; public interface S ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-006实体层
1. package com.sanqing.po; /* * 学生表,保存学生编号,系统密码 */ public class Student { private String studentID; ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-002配置文件及辅助类
1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-001设计
1. 2. 3. 4. # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET SQL ...
- JavaWeb项目开发案例精粹-第6章报价管理系统-05Action层
0. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo ...
- JavaWeb项目开发案例精粹-第6章报价管理系统-002辅助类及配置文件
1. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www ...
- JavaWeb项目开发案例精粹-第2章投票系统-001设计
1.项目结构 2.数据库设计 # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET ...
随机推荐
- 在Linux中三种让crontab每秒执行任务的方法
第一种方法: 1.创建脚本文件 cat phplog.sh 2.编辑脚本内容 #!/bin/bash while : ;do /home/scripts.sh 2>/dev/null & ...
- 深入理解JavaScript的变量作用域(转载Rain Man之作)
在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. ...
- C# 发邮件类可发送附件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...
- 从new Function创建函数联想到MVC模式
我们知道任何一个自定义函数都是Function构造器的实例,所以我们可以通过new Function的方式来创建函数,使用语法很简单, new Function(形参1, 形参2, ..., 形参N, ...
- DATE,DATETIME,DATETIME2等日期时间数据类型
日期范围广 0001-01-01 到 9999-12-31.时间范围广 00:00:00 到 23:59:59.9999999. -----------------DATE --只存储日期 selec ...
- 从word中提取图片的三种方法
方法1:使用截图方法来提取并保存图片,如果你安装了QQ并且运行了的话,你可以使用Ctrl+Alt+A来截图,然后在QQ聊天框中按CTRL+V来保存图片,当然你可以在PS新建文档按CTRL+V来粘贴图片 ...
- 如何正确理解深度学习(Deep Learning)的概念
现在深度学习在机器学习领域是一个很热的概念,不过经过各种媒体的转载播报,这个概念也逐渐变得有些神话的感觉:例如,人们可能认为,深度学习是一种能够模拟出人脑的神经结构的机器学习方式,从而能够让计算机具有 ...
- verilog逻辑复制
本文转自:http://www.cnblogs.com/linjie-swust/archive/2012/03/27/FPGA_verilog.html 在FPGA设计中经常使用到逻辑复制,逻辑复制 ...
- 简单好用的 AJAX 上传插件,还可以抛弃难看的 file 按钮哦~
在做网页设计的时候,设计师常常会把上传按钮设计得非常漂亮,还用了什么放大镜之类的图标来表达 browse 的效果.可是她们不知道,type="file" 的按钮在不同浏览器上的效果 ...
- .NET 轻松实现HTML的绝对过滤之SafeHelper
当今网页中经常使用到网页编辑器,因为人们需要在网页中插入图片,视频,样式等html代码内容,这使得网页的信息更加丰富.随之而来的,也给程序开发者带来了不少麻烦,因为提交的html中难免会出现不安全标记 ...