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 }
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号