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层的更多相关文章

  1. JavaWeb项目开发案例精粹-第3章在线考试系统-007View层

    0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  2. JavaWeb项目开发案例精粹-第3章在线考试系统-004Service层

    1. package com.sanqing.service; import java.util.List; import com.sanqing.po.Student; public interfa ...

  3. JavaWeb项目开发案例精粹-第3章在线考试系统-003Dao层

    1. package com.sanqing.dao; import java.util.List; import com.sanqing.po.Student; public interface S ...

  4. JavaWeb项目开发案例精粹-第3章在线考试系统-006实体层

    1. package com.sanqing.po; /* * 学生表,保存学生编号,系统密码 */ public class Student { private String studentID; ...

  5. JavaWeb项目开发案例精粹-第3章在线考试系统-002配置文件及辅助类

    1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...

  6. JavaWeb项目开发案例精粹-第3章在线考试系统-001设计

    1. 2. 3. 4. # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET SQL ...

  7. JavaWeb项目开发案例精粹-第6章报价管理系统-05Action层

    0. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo ...

  8. JavaWeb项目开发案例精粹-第6章报价管理系统-002辅助类及配置文件

    1. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www ...

  9. JavaWeb项目开发案例精粹-第2章投票系统-001设计

    1.项目结构 2.数据库设计 # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET ...

随机推荐

  1. WordPress 主题开发 - (二) 理解主题 待翻译

    What is “Theme Sense”? What is “Theme Sense”? Theme Sense is an intuitive understanding of WordPress ...

  2. 使用微软分布式缓存服务Velocity(Windows Server AppFabric Caching Service)

    概述 Velocity是微软推出的分布式缓存解决方案,为开发可扩展性,可用的,高性能的应用程提供支持,可以缓存各种类型的数据,如CLR对象. XML.二进制数据等,并且支持集群模式的缓存服务器.Vel ...

  3. Oracle 的证也会过期咯

    How does this recertification requirement affect me? If your Database Certification credential is re ...

  4. Bash 快捷键

     生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向 ...

  5. Python 学习教程

    <Core Python Programming>勘误参考表 http://starship.python.net/crew/wesc/cpp/errata2.htm 笨办法学 Pytho ...

  6. SQL Server 2008 远程过程调用失败

    今天在写程序的时候,突然间发现数据库连接不上了,打开管理器发现SQL2008出现这样的错误. 非常的郁闷,找了好多方法都没有解决,最后想想是不是应为安装vs2013中的SQL Server Expre ...

  7. 0x03伪指令

    等号伪指令 = 相当于指定常量,由等号定义的符号常量不占用存储空间. count = 1234 可以重复定义多次,EQU则不容许 EQU伪指令 1.常量名 EQU 表达式 NUMBER EQU 10* ...

  8. 最火的.NET开源项目(转)

    综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...

  9. libreoffice转换文档的方法(支持各平台各版本的libreoffice)

    前段时间完成了一个利用libreoffice转换文档进行预览的资源管理系统,用的是jodconvert这个多年未更新的转换项目,由于版本不兼容等原因,导致最新版的libreoffice不能用,浪费了许 ...

  10. 利用JavaScript获取页面文档内容

    JavaScript的document对象包含了页面的实际内容,所以利用document对象可以获取页面内容,例如页面标题.各个表单值. <!DOCTYPE html> <html ...