实验8 内置对象session

news2025/6/9 0:20:11

一、实验目的

掌握怎样在JSP中使用内置对象session

二、实验项目内容(实验题目)

编写代码,掌握session的用法。【参考课本4.6.5 】

三、源代码以及执行结果截图:

choiceGrade.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor = #ffccff>

     <style>

     #textStyle{

         font-family:宋体; font-size:26;color:bule

         }

     </style>

    

     <form action="giveTest.jsp" id="textStyle" method=post name=form>

     <input type=radio name="grade"value="5"/>初级

     <input type=radio name="grade"value="7"checked="OK"/>中级

     <input type=radio name="grade"value="10"/>高级

     <br><input type="submit"name="submit"id="textStyle"value="提交"/>

    

     <input type="reset" id="textStyle"value="重置"/>

    

     </form>

</body>

</html>

giveTest.jsp

<%@ page language="java" contentType="text/html; utf-8"

    pageEncoding="utf-8"%>

<%@ page import="java.util.ArrayList" %>

<%@ page import="java.util.Random" %>

  

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor = #ffccff>

     <style>

     #textStyle{

         font-family:宋体; font-size:26;color:bule

         }

     </style>

<%! static ArrayList<String>list=new ArrayList<String>();

     static{

        

         list.add("");

         list.add("");

         list.add("🔺");

         list.add("");

         list.add("");

     }

     String getNextTestString(int length){

         StringBuffer buffer=new StringBuffer();

         Random random=new Random();

         for(int i=0;i< length;i++){

              int index=random.nextInt(list.size());

              String str=list.get(index);

              buffer.append(str);

         }

              return new String(buffer);

     }

     %>

     <%

     String grade = request.getParameter("grade");

              if(grade == null){

              grade = (String) session.getAttribute ("grade");

              }

              int number = Integer.parseInt(grade);

              session.setAttribute("grade",grade);

              String testString= null;

              String yesORNo = null;

              yesORNo= (String)session.getAttribute("yes0RNo");

              if(yesORNo == null) {

                   testString = getNextTestString(number) ;

                   session.setAttribute ("yes0RNo","yes");

                   session.setAttribute("testString",testString);

                      

                       }

             

                       else if(yesORNo. equals("yes")){

                        response. sendRedirect("answerTest.jsp");

                       return;

                       }

             

                       else if(yesORNo. equals("no")){

                       testString = getNextTestString (number);

                       session. setAttribute (" yes0RNo" ,"yes");

                       session. setAttribute ("testString",testString);

                        }

              %>  

<p>

id="textStyle">5秒记住您看到的字符序列:<br>

<%=testString %>

<br>5秒后,将转到答题页.

<% response.setHeader(" refresh","5");

%>

</p>         

</body>

</html>

answerTest.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor = #ffccff>

     <style>

     #textStyle{

         font-family:宋体; font-size:26;color:bule

         }

     </style>

     <form action="judgeAnswer.jsp"id="textStyle" method=post>

     <%

     int n=Integer.parseInt((String)session.getAttribute("grade"));

     session.setAttribute("yesORNo","no");

     for(int i=1;i<=n;i++){

         out.print("<br>"+i+"个字符:");

         out.print("<input type=radio name=R"+i+" value=''/>"+

                   "<input type=radio name=R"+i+" value=''/>"+

                   "<input type=radio name=R"+i+" value='🔺'/>🔺"+

                   "<input type=radio name=R"+i+" value=''/>"+

                   "<input type=radio name=R"+i+" value=''/>");

     }

             

     %>

     <br><input type="submit" name="submit" id="textStyle" value="提交" />

<input type="reset" id="textStyle" value="重置" />

</form>

</body>

</html>

judgeAnswer.jsp

<%@ page language="java" contentType="text/html;utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor =while>

     <p style="font-family:宋体; font-size:26;color:bule">

<%

session.setAttribute("yesORNo","no");

request.setCharacterEncoding("utf-8");

int n=Integer.parseInt((String)session.getAttribute("grade"));

StringBuffer buffer=new StringBuffer();

for(int i=1;i<=n;i++){

     buffer.append(request.getParameter("R"+i));

     out.print(""+request.getParameter("R"+i));

}

String userAnswer=new String(buffer);

String testString=(String)session.getAttribute("testString");

if(testString.equals(userAnswer)){

     out.print("<br>您记忆还不错也!");        

}

else{

     out.print("你戳啦!答案是:<br>"+testString);

}

%>

<br><a href="giveTest.jsp">返回,回去练习</a>

<br><br>

<a href="choiceGrade.jsp">重新选择级别</a>

</p>

</body>

</html>

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

顺序表实战——基于顺序表的通讯录

前言&#xff1a;本篇文章主要是利用顺序表作为底层&#xff0c; 实现一个通讯录。偏向于应用&#xff0c; 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友&#xff0c; 如果顺序表不会写&#xff0c; 或者说没有自己实现过&#xff0c; 请移步学习顺序表相关内…

代码随想录算法训练营Day14|二叉树理论基础和递归遍历

代码随想录卡哥视频 理论基础 需要了解 二叉树的种类&#xff0c;存储方式&#xff0c;遍历方式 以及二叉树的定义 文章讲解&#xff1a;代码随想录 递归遍历 &#xff08;必须掌握&#xff09; 二叉树的三种递归遍历掌握其规律后&#xff0c;其实很简单 题目链接/文章讲解/…

vue快速入门(十四)reduce求和

注释很详细&#xff0c;直接上代码 上一篇 新增内容 非嵌套情况求和嵌套情况求和 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

详解Spring event如何优雅实现系统业务解耦、实现原理及使用注意项

1.概述 在我们平时的项目业务系统开发过程中&#xff0c;一个需求功能的业务逻辑经常出现主线业务和副线业务之分。比如&#xff0c;在当下移动端电商app进行注册账号操作&#xff0c;注册成功之后会发送短信、邮箱、站内信等通知&#xff0c;发放红包活动抵用券&#xff0c;推…

注意力机制篇 | YOLOv8改进之清华开源ACmix:自注意力和CNN的融合 | 性能速度全面提升

前言:Hello大家好,我是小哥谈。混合模型ACmix将自注意力机制和卷积神经网络进行整合,使其同时具有自注意力机制和卷积神经网络的优点。这是清华大学、华为和北京人工智能研究院共同发布在2022年CVPR中的论文。ACmix结合了自注意力机制和卷积神经网络的优势,以提高模型的性能…

Java+BS +saas云HIS系统源码SpringBoot+itext + POI + ureport2数字化医院系统源码

JavaBS saas云HIS系统源码SpringBootitext POI ureport2数字化医院系统源码 医院云HIS系统是一种运用云计算、大数据、物联网等新兴信息技术的业务和技术平台。它按照现代医疗卫生管理要求&#xff0c;在特定区域内以数字化形式收集、存储、传递和处理医疗卫生行业的数据。通…

ios包上架系列 二、Xcode打应用市场ipa包

打包的时候一定要断开网络&#xff0c;上线包名只能在打包机配置 检查是否是正式环境&#xff0c;先在模拟器上运行 1、版本名称和本号号记得在这里更改&#xff0c;否则不生效 原因 &#xff1a;info.list <string>$(FLUTTER_BUILD_NAME)</string><key>CFB…

深入剖析UDP反射放大攻击原理及其有效防护策略

引言 随着互联网的飞速发展和业务复杂性的提升&#xff0c;网络安全问题日益凸显&#xff0c;其中分布式拒绝服务&#xff08;DDoS&#xff09;攻击成为危害最为严重的一类网络威胁之一。UDP反射放大攻击作为一种高效的DDoS手段&#xff0c;因其攻击成本低廉、威力巨大&#x…

【教学类-51-01】20240411动物皮毛图片的彩色打印PDF制作(一页两张图片,2个表格)

作品展示 背景需求&#xff1a; 为了便于快速做出A4两份图片的效果&#xff0c;设计以下代码&#xff0c;进行图片的PDF合成打印 代码参考&#xff1a; 【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读531次&#xff0c;点赞8次&#xff0c;收…

机器学习和深度学习--李宏毅(笔记与个人理解)Day11-12

Day11 when gradient is small…… 怎么知道是局部小 还是鞍点&#xff1f; using Math 这里巧妙的说明了hessan矩阵可以决定一个二次函数的凹凸性 也就是 θ \theta θ 是min 还是max&#xff0c;最后那个有些有些 哈 是一个saddle&#xff1b; 然后这里只要看hessan矩阵是不…

vue快速入门(十三)v-model的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容 数据双向绑定数据清空方法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

免重装系统,直接把家庭版升级为专业版!

前言 前段时间有小伙伴找小白重装系统。一般在重装系统之前&#xff0c;我都会问对方&#xff1a;为什么要重装系统&#xff1f; 结果她和我说&#xff1a;家庭版不好用&#xff0c;想要重装成专业版。感觉专业版更好一些&#xff0c;听起来好像也更厉害一些。 嗯……这个理由…

科技论文和会议录制高质量Presentation Video视频方法

一、背景 机器人领域&#xff0c;许多高质量的期刊和会议&#xff08;如IEEE旗下的TRO&#xff0c;RAL&#xff0c;IROS&#xff0c;ICRA等&#xff09;在你的论文收录后&#xff0c;需要上传一个Presentation Video材料&#xff0c;且对设备兼容性和视频质量有较高要求&#…

4.11作业

服务器端 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器端类 #include<QMessageBox> //消息对话框 #include<QTcpSocket> //客户端类 #include<QList> //链表容器QT_BEGIN_NAMESPACE namespace Ui { cla…

训练营第二十天(二叉树 part06)

训练营第二十天&#xff08;二叉树 part06&#xff09; 654.最大二叉树 力扣题目地址(opens new window) 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出…

蓝桥杯第十三届c++大学B组详解

目录 1.九进制转十进制 2.顺子日期 3.刷题统计 4.修剪灌木 5.x进制的减法 6.统计子矩阵 7.积木画 8.扫雷 9.李白打酒 10.砍竹子 1.九进制转换十进制 题目解析&#xff1a;就是将2022的每一位拿出来乘以9的n-1次方的和就是最终答案。次方是从0开始的到n-1. #include &…

OpenLayers6实战,OpenLayers实现鼠标拖拽方式绘制平行四边形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章介绍如何使用OpenLayers在地图上使用实现鼠标拖拽方式绘制平行四边形。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用: vue项目…

Unity单个物体绑定多个相机在轨道上移动,录制不同角度视频

环境搭建 下载Cinemachine插件安装 打开包管理器 下载cinemachine插件 创建轨道 使用dolly track 创建轨道 右侧可以删减关键点&#xff0c;注意调整y坐标 创建cart 把前面的轨道拖到path中&#xff0c;注意这里的speed要设定不为0才会动 设置VItual Camera 根据需…

win11 怎么去除桌面上的了解此图片

如上图,更新win11后换上了壁纸,却发现这么个鬼玩意儿,还没有删除选项 因为这个了解此图片,是win11个性化壁纸的功能 当你使用win11的壁纸选项是windows聚焦后,桌面就会出现这个 取消这个就行 选择纯色或者图片 就没有了,我干干净净的桌面

DAS-MIL

DAS-MIL论文笔记 题目&#xff1a;DAS-MIL: Distilling Across Scales for MIL Classification of Histological WSIs 摘要 近年来&#xff0c;采用多实例学习 &#xff08;MIL&#xff09; 对全玻片图像 &#xff08;WSI&#xff09; 进行分类的情况有所增加。事实上&#…