基于Servlet+MySQL实现简单的题库网页

基于Servlet+MySQL实现简单的题库网页

基本思想

通过doGet方法创建出网页,提交表单时调用doPost方法进行处理数据,从数据库中查找出所有的问题,再查找出所有问题的正确答案和表单传入的数据进行比对,正确加分数;

Servlet代码

package com.controller;

import com.Do.UserDo;
import com.entry.Question;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class QuestionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        double count = 0;
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter printWriter = response.getWriter();
        //用于存放用户选择的答案
        List<String> list = new ArrayList<>();
        UserDo userDo = new UserDo();
        //调用do类查询所有问题
        List<Question> list1 = userDo.selectQuestion();
        //循环获取浏览器发来的请求中每一个answer的value
        for (Question answers:list1){
            String answer = request.getParameter("answer"+answers.getId());
            list.add(answer);
        }
        //调用do类得到每一个问题的正确答案
        List<String> trueAnswer = userDo.selectAnswer();
        //获取迭代器
        Iterator<String> selectIterator = list.iterator();
        Iterator<String> answerIterator = trueAnswer.iterator();
        //判断value值是否与答案相同
        while (selectIterator.hasNext()&&answerIterator.hasNext()){
            if (answerIterator.next().equals(selectIterator.next())){
                count = count+10;
                //printWriter.print("答案正确");
            }else {
                //printWriter.print("答案错误");
            }
        }
        printWriter.print(count);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        int num = 1;
        PrintWriter printWriter = response.getWriter();
        UserDo userDo = new UserDo();
        List<Question> list =null;
        list = userDo.selectQuestion();
        printWriter.print("<form action=\"question\" method=\"post\">");
        printWriter.print("<table>");
        for (Question question:list){
            String questions = question.getQuestion();
            String answer1 = question.getAnswer1();
            String answer2 = question.getAnswer2();
            String answer3 = question.getAnswer3();
            String answer4 = question.getAnswer4();
            printWriter.print("<tr>");
            printWriter.print("<td>"+num+"、"+questions+"</td>");
            printWriter.print("</tr>");
            printWriter.print("<tr>");
            printWriter.print("<td>");
            printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer1+"\">"+answer1);
            printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer2+"\">"+answer2);
            printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer3+"\">"+answer3);
            printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer4+"\">"+answer4);
            printWriter.print("</td>");
            printWriter.print("</tr>");
            num++;
        }
        printWriter.print("<tr>");
        printWriter.print("<td><input type=\"submit\" value=\"提交\">");
        printWriter.print("<input type=\"reset\" value=\"重新填写\"></td>");
        printWriter.print("</tr>");
        printWriter.print("</table>");
        printWriter.print("</form>");
    }
}


do类查询数据库

	/**
     * 查询所有问题
     * @return 问题列表
     */
    public List<Question> selectQuestion(){
        List<Question> list = new ArrayList();
        Jdbc jdbc = new Jdbc();
        jdbc.GetConnection();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql = "select * from question";
        preparedStatement = jdbc.prepareStatement(sql);
        try {
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                Question question = new Question();
                question.setId(resultSet.getInt(1));
                question.setQuestion(resultSet.getString(2));
                question.setAnswer1(resultSet.getString(3));
                question.setAnswer2(resultSet.getString(4));
                question.setAnswer3(resultSet.getString(5));
                question.setAnswer4(resultSet.getString(6));
                list.add(question);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            jdbc.Close();
        }
        return list;
    }
    
    /**
     * 查询问题的正确答案
     * @return 答案
     */
    public List<String> selectAnswer(){
        List<String> list = new ArrayList<>();
        String answer;
        Jdbc jdbc = new Jdbc();
        jdbc.GetConnection();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql = "SELECT answer.answer FROM question join answer on question.question_id = answer.question_id";
        preparedStatement = jdbc.prepareStatement(sql);
        try {
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                answer = resultSet.getString(1);
                list.add(answer);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return list;
    }

提示

Java连接数据库的封装类获取方式: jdbc连接数据库.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一步、将试题网程序上传到你的WEB空间; 第二步、用计事本打开根目录下的conn.asp文件修改数据库连接,ACCESS版请注意连接路径,请使用根相对路径填写数据库路径。 系统默认在站点根目录,如果你在子目录下面运行本程序,请在数据库连接名称前加上目录名称;\ndb='\\Database\\#newasp.mdb'改为\uff1adb='\\\u5b50\u76ee\u5f55\\Database\\#newasp.mdb'前面一定要加上“\”; 或者使用绝对路径\uff1adb='D:\\Inetpub\\wwwroot\\Database\\#newasp.mdb' 强烈建议修改默认数据库名称 第三步、在浏览器中直接输入地址访问下载系统主页(index.asp),如果不能正常显示请刷新页面,然后登陆后台/admin/admin_login.asp(默认站长名及密码:admin), 在后台点击左边管理导航菜单中的“常规设置”----“基本设置”,对你的网站信息和一些网站配置参数进行配置。 打开“模板总管理”重新保存“CSS样式表”,如果后台显示不正常,请在基本设置里面“重建缓存”; 第四步、您现在可以设置软件和文章的一级分类和N级分类的名称;添加管理软件及文章了。 注意:本系统所有数据均采用数据库存储,数剧库已经好防下载处理, 如果你更改数了据库名,请打开conn.asp修改数据库连接,注意使用根相对路径和绝对路径。 本系统需要服务器支持FSO(FileSystemObject),如果你的空间不支持FSO,请联系你的空间商。 本程序修改自新云3.1,版权归新云所有,更详细用法可以参照新云说明  试题网是一套开源WEB的网站管理系统,采用网络中已经成熟、稳定地技术ASP+Access/SQL开发而成, 通过它,您可以很方便地管理自己网站。当前本系统已具有如下功能特点: 用户管理,多用户管理分权限发布、管理软件信息;用户短信、收藏功能,会员在线充值,支持网银和NPS在线支付。 下载模块,支持计点会员和包月会员下载,反点等功能,无限制添加下载服务器,可以对每个下载服务器路径设置用户下载权限、下载点数设置,添加软件只需要填写软件名称 文章、FLASH模块,会员浏览文章权限设置。 广告管理功能全部由系统生成JS文件管理,避免了修改广告代码后需要重新生成HTML文件; 强大的模板后台,可灵活自由的生成模板标签、JS自动生成,让您的站点版式自由改变。 强大的文章、软件采集功能,文章采集的同时可以选择是否下载图片到本地及分页采集。 其它模块,留言、友情连接自助申请,上传水印,内容关键字功能。 全站生成HTML页面;增加系统安全性,自由设置生成HTML文件扩展名和存放目录 完善的上传文件清理功能,为您清除垃圾文件; 后台登陆地址:/admin/admin_login.asp 默认管理员:admin密码:admin SP1更新说明 -------------------------- 增加站点代码广告 增加迅雷专用下载连接 更新在线支付功能 更新模板导入/导出功能 更新自定义标签导入/导出功能 更新发布文章和软件的审核功能 修补会员管理安全漏洞 增加系统安全性 修正已知BUG
解决方法: (1)、考试系统数据库默认安装目录在 “C:\NeoExam\ExamDatabase”文件夹下,您可以选中数据库“AccExamDatabase.mdb”点右键,查看属性。把“只读”选项的勾去掉就可以了。 (2)、可能是您不是Windows XP的最高管理员,不能修改安装软件的参数。请用最高管理员权限登陆。 (3)、IIS信息服务器里有设置访问权限的功能,可能您没有权限。请向修改过IIS信息服务器的人咨询。 (4)、可能是IIS信息服务器没有安装完整,请重新安装。 (5)、检查是否在IIS中对整个网站打开了“写入”权限,而不仅仅是数据库文件。 (6)、检查是否在WIN2000的资源管理器中,将网站所在目录对Everyone用户打开所有权限。如果您的考试系统安装在NTFS分区,则会显示“安全”选项卡。如果您的考试系统安装在FAT分区,则不会显示“安全”选项卡。对“安全”选项卡里的登陆用户,设定权限。 WIN2000 (NTFS分区)具体方法是:打开“我的电脑”,找到网站所在文件夹,在其上点右键,选“属性”,切换到“安全性”选项卡,在这里给Everyone用户所有权限。详情请看下面WIN XP的“安全”选项卡设置。 WIN2000 (FAT分区)具体方法是:打开“我的电脑”,找到网站所在文件夹,在其上点右键,选“属性”,切换到“共享”选项卡,选择“共享该文件夹”。再点击“权限”,在这里给Everyone用户所有权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值