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. 基于php下载文件的详解

    本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢出和超时的现象. 超时的话 ...

  2. 将开始我的WebForm控件开发之旅

    时间总是过得很快,一转眼三个月就过去了,三个月内发生了很多的事.因为学校的学习,离开了我入门WPF的公司:开发了第一个外包项目,做的是WebForm的:而且了马上要毕业了,毕业后的公司应该是专门用We ...

  3. 1106. Lowest Price in Supply Chain (25)

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  4. [转]system函数返回值探究

    对于system这个函数的功能早就有一定了解,读书期间,就学习了UNIX系统编程这本书,后来买了APUE.我这个人总是有好读书不求甚解的毛病.对于system函数只知其一,不知其二.后来被人问起相关的 ...

  5. The difference between Union & Union All in SQL Server/pOSTGRESQL

    Following is test in SQL Server: USE [TestDB] CREATE TABLE [dbo].[UserInfoTest02]( [number] [bigint] ...

  6. Asp.Net MVC使用ViewData导致双引号被转义的解决方法

    使用以下方法进行输出 @Html.Raw(ViewData["jsonString"].ToString())

  7. css/js online online code editor/formator/debuger

    http://cssdeck.com/labs http://jsfiddle.net/ http://fiddle.jshell.net/  support console http://plnkr ...

  8. Encog

    http://www.heatonresearch.com/encog/ https://www.mql5.com/zh/articles/252

  9. Oracle 多行记录合并/连接/聚合字符串的几种方法

    怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结.-什么是合并多行字符串(连接字符串)呢,例如: SQL&g ...

  10. MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)

    1)interactive_timeout:参数含义:服务器关闭交互式连接前等待活动的秒数.交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的 ...