2024.5.24

代码量:182行

博客量:1

今天完成了关于腾讯项目里的网络安全部分题目的出现,但在写的过程中发现了一个bug,就是九张卡片对应的是同一个题目,虽然每一次调用了servlet都实现了session的更新,但发现前端呈现如果不刷新就无法更新,然后通过不断的查找资料和搜索终于进行了改正,使用JavaScript代码的document.getEmelteById(),innerHtml来进行解决,以下是相关代码:

<div id="h1" class="page" style="display: none">
    <div id="qtext2" style="color: #fdfcfc;font-size: 40px">请选择其中一张卡片并完成题目</div>
    <div id="tcontainer" class="container">
      <div class="card" onclick="q1()" style="--i:-4">1</div>
      <div class="card" onclick="q1()" style="--i:-3">2</div>
      <div class="card" onclick="q1()" style="--i:-2">3</div>
      <div class="card" onclick="q1()" style="--i:-1">4</div>
      <div class="card" onclick="q1()" style="--i:0">5</div>
      <div class="card" onclick="q1()" style="--i:1">6</div>
      <div class="card" onclick="q1()" style="--i:2">7</div>
      <div class="card" onclick="q1()" style="--i:3">8</div>
      <div class="card" onclick="q1()" style="--i:4">9</div>
    </div>
    <div id="result2"  style="color: #fdfcfc;font-size: 20px"></div>
  </div>
 1 function q1(){
 2     var xhr = new XMLHttpRequest();  // 创建XMLHttpRequest对象
 3     xhr.open("GET", "hello-servlet1", true);  // 设置HTTP请求方式和Servlet的URL
 4     xhr.onreadystatechange = function() {
 5       if (xhr.readyState == XMLHttpRequest.DONE) {
 6         if (xhr.status == 200) {
 7           var response = xhr.responseText;  // 获取Servlet的响应数据
 8           console.log("从服务器获取的值:"+response);
 9 
10           const overlay=document.getElementById('overlay');
11           const popup=document.getElementById('popup');
12           overlay.style.display='block';
13           popup.style.display='block';
14 
15           const labelElement = document.getElementById('propro');
16           labelElement.innerHTML="问题:"+response;
17 
18           const labelElement2 = document.getElementById('tanswer');
19           labelElement2.value="";
20 
21           var sessionValues = response.sessionValue; // 获取Session值
22         } else {
23           // 请求失败
24           console.error('请求失败:' + xhr.status);
25         }
26       }
27     };
28     xhr.send();
29   }

 

  1 package com.example.three;
  2 
  3 import java.io.*;
  4 import java.util.Random;
  5 
  6 import jakarta.servlet.RequestDispatcher;
  7 import jakarta.servlet.ServletException;
  8 import jakarta.servlet.http.*;
  9 import jakarta.servlet.annotation.*;
 10 import org.json.JSONObject;
 11 
 12 @WebServlet(name = "helloServlet", value = "/hello-servlet1")
 13 public class HelloServlet extends HttpServlet {
 14     private String message;
 15 
 16     String[][] problems = new String[7][10];
 17     public void init() {
 18         message = "Hello World!";
 19         problems[1][1] = "你知道什么是防火墙吗?它是怎么保护你的电脑的?";
 20         problems[1][2] = "你听说过防病毒软件吗?它是如何保护你的电脑的?";
 21         problems[1][3] = " 为什么在网上输入密码时会显示小点或星号?";
 22         problems[1][4] = "当你登录一个网站时,为什么有时需要输入验证码?";
 23         problems[1][5] = "你知道什么是Wi-Fi网络吗?它是如何工作的?";
 24         problems[1][6] = "为什么有些网站的网址是https开头,而不是http?";
 25         problems[1][7] = "你遇到过电脑运行很慢的情况吗?这可能是哪些原因导致的?";
 26         problems[1][8] = "你听说过“黑客”吗?他们通常是做什么的?";
 27 
 28         message = "Hello World!";
 29         problems[2][1] = "你会如何设置家庭Wi-Fi的密码以保证安全?";
 30         problems[2][2] = "你如何确保自己的手机不会被陌生人访问?";
 31         problems[2][3] = " 为什么要定期更新你的软件和应用?";
 32         problems[2][4] = "你会使用哪些方法来创建一个强密码?";
 33         problems[2][5] = "你会如何检查电脑上是否有恶意软件?";
 34         problems[2][6] = "如何防止自己的个人信息在网上被泄露?";
 35         problems[2][7] = "在公共场所使用Wi-Fi时,你会采取哪些安全措施?";
 36         problems[2][8] = "你会如何设置手机应用的权限来保护隐私?";
 37 
 38         message = "Hello World!";
 39         problems[3][1] = "你遇到过垃圾邮件吗?你是如何处理它们的?";
 40         problems[3][2] = "如果你的电脑被病毒感染了,你会怎么做?";
 41         problems[3][3] = " 你会如何防止自己的电脑被勒索软件攻击?";
 42         problems[3][4] = "如果发现账号被盗,你会采取哪些措施?";
 43         problems[3][5] = "你会如何识别和处理钓鱼邮件?";
 44         problems[3][6] = "你听说过“杀毒软件”吗?它能做什么?";
 45         problems[3][7] = "如果你觉得自己的网络账户被黑客入侵了,你会怎么做?";
 46         problems[3][8] = "你会如何报告发现的网络安全问题?";
 47 
 48         message = "Hello World!";
 49         problems[4][1] = "你知道什么是密码吗?它是如何保护你的账号的?";
 50         problems[4][2] = "你为什么认为双重验证(如短信验证码)更安全?";
 51         problems[4][3] = " 为什么有些网站会要求你定期更改密码?";
 52         problems[4][4] = "你会如何加密你的手机以保护其中的数据?";
 53         problems[4][5] = "你知道什么是防火墙吗?它能做什么?";
 54         problems[4][6] = "你会如何管理自己的密码,以防止忘记或被盗?";
 55         problems[4][7] = "为什么我们需要保护我们的Wi-Fi网络?";
 56         problems[4][8] = "你会如何确保电子邮件的安全性?";
 57 
 58         message = "Hello World!";
 59         problems[5][1] = "你会采取哪些措施来保护自己的隐私?";
 60         problems[5][2] = "你如何确保自己的健康信息不被泄露?";
 61         problems[5][3] = " 为什么网上购物时要注意支付信息的安全?";
 62         problems[5][4] = "你知道个人数据保护的重要性吗?";
 63         problems[5][5] = "你会如何避免在网上泄露过多的个人信息?";
 64         problems[5][6] = "你知道什么是安全标准吗?它们如何帮助保护你的信息?";
 65         problems[5][7] = "你听说过数据泄露事件吗?它们对个人有什么影响?";
 66         problems[5][8] = "为什么公司需要遵守数据保护法规?";
 67 
 68         message = "Hello World!";
 69         problems[6][1] = "你会如何检测和删除电脑上的恶意软件?";
 70         problems[6][2] = "你知道哪些基本的电脑安全设置?";
 71         problems[6][3] = " 你会如何检查你的家庭网络是否安全?";
 72         problems[6][4] = "你听说过网络安全竞赛吗?它们是如何进行的?";
 73         problems[6][5] = "你知道如何设置和使用防火墙吗?";
 74         problems[6][6] = "你会采取哪些步骤来保护自己的手机安全?";
 75         problems[6][7] = "你知道什么是社交工程攻击吗?如何防范?";
 76         problems[6][8] = "你如何确保自己安装的软件是安全的?";
 77 
 78     }
 79 
 80     public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
 81         init();
 82         Random r = new Random();
 83         int a = r.nextInt(5)+1; //题目类型
 84         int b = r.nextInt(7)+1; //题目序号
 85         int c=r.nextInt(10)+1;
 86         a=(a+c)%6+1;
 87         b=(b+c)%8+1;
 88 
 89         String p=problems[a][b];
 90 
 91 
 92 //        request.setAttribute("problem1",p);
 93 //        RequestDispatcher dispatcher=request.getRequestDispatcher("index.jsp");
 94 //        try {
 95 //            dispatcher.forward(request, response);
 96 //        }catch (ServletException e){
 97 //
 98 //        }
 99 
100         // 将 p 的值作为响应数据发送给客户端
101         response.setContentType("text/plain");
102         response.setCharacterEncoding("UTF-8");
103         response.getWriter().write(p);
104 
105 
106         HttpSession session = request.getSession();  // 获取Session对象
107         session.setAttribute("pp", p);  // 将字符串保存在Session中
108 //
109 //        // 从Session对象中获取存储的值
110 //        String sessionValue = (String) session.getAttribute("pp"); // 替换为实际的 Session 属性名称
111 //
112 //        // 将Session值封装成JSON对象
113 //        JSONObject jsonResponse = new JSONObject();
114 //        jsonResponse.put("sessionValue", sessionValue);
115 //
116 //        // 设置响应内容类型为JSON
117 //        response.setContentType("application/json");
118 //
119 //        // 将JSON对象作为响应返回给前端
120 //        PrintWriter out = response.getWriter();
121 //        out.print(jsonResponse.toString());
122 //        System.out.println(jsonResponse.toString());
123 
124 
125 
126 //        // 转发给另一个Servlet来处理
127 //        try {
128 //            request.getRequestDispatcher("index.jsp").forward(request,response);
129 //        } catch (ServletException e) {
130 //            throw new RuntimeException(e);
131 //        }
132     }
133 
134     public void destroy() {
135     }
136 }

 

posted @ 2024-05-24 20:23  贾贾鱼  阅读(8)  评论(0)    收藏  举报