当前位置: 首页 > article >正文

Javaweb 实验6 JSP内置对象

我发现了有些人喜欢静静看博客不聊天呐,

但是ta会点赞。

这样的人呢帅气低调有内涵,

美丽大方很优雅。

说的就是你,

不用再怀疑哦

目的:

  1. 掌握JSP内置对象的使用。
  2. 理解JSP的作用域
  3. 掌握JSP的表达式使用

实验要求:

  1. 完成实验题目
  2. 要求提交实验报告,将代码和实验结果页面截图放入报告中

第一题登录页面

1、设计一个简单的后台管理系统,用户通过登陆页面的合法验证后才能使用其他页面,否则访问这些页面是跳转回登录页面。

1)要求设计用户类和用户账号的验证方法

2) “其他页面”可以编写任意内容,用户在未进行登陆验证时,该页面无法直接访问,直接访问该页面会导致跳转到登录页。

【参考代码】

Login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="check.jsp" method="post">
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" required><br>
    <label for="password">密码:</label>
    <input type="password" id="password" name="password" required><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

Check.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login-check</title>
</head>
<body>
<%
//    账号admin 密码1111
    if ( request.getParameter("username").equals("admin") &&
            request.getParameter("password").equals("1111")) {
        //重定向到success.jsp
        application.setAttribute("username",request.getParameter("username"));
        response.sendRedirect("success.jsp");
    }
    else {
        //重定向到failure.jsp
        response.sendRedirect("failure.jsp");
    }
%>
</body>
</html>

Success.jsp:

<%@ page import="java.util.Objects" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>success</title>
</head>
<body>
<%
    Object isUserLoggedIn = application.getAttribute("username");
    if (isUserLoggedIn == null)
        // 用户未登录,跳转到登录页
        response.sendRedirect("login.jsp");
%>
<h1>登录成功!</h1>
</body>
</html>

Failure.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>failure</title>
</head>
<body>
<h1>登录失败!</h1>
</body>
</html>

【运行结果】

未登录进入success.jsp页面:跳转到login

第二题猜数字

3、编写一个猜数字的小游戏。当用户访问页面c1.jsp时,服务器随机分配给用户一个1~100的整数(Math.Random可以在[0.0,1.0]范围内产生随机数),然后将这个证书存在用户的session对象中。

    用户单击超链接“去猜这个数”,将转到页面guess.jsp。在该页面中,如果猜测数大于机器生成的数,显示“您猜大了”和这是第几次猜测;如果猜小了,显示“您猜小了”和这是第几次猜测;如果相等,显示“您猜对了”和这是第几次猜测,同时下面显示一个超链接“重新获得随机数”,单击此链接返回c1.jsp页面重新开始猜数。

【参考代码】

c1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
    <h1>猜数字的小游戏</h1>
    <a href="guess.jsp">“去猜这个数”</a>
</body>

guess.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
随机分给了你一个1到100之间的数,请猜!
<%
    int number=(int)(Math.random()*100)+1;
    session.setAttribute("count", new Integer(0));
    session.setAttribute("save", new Integer(number));
%>
输入你所需猜的数
<form action="Result.jsp" method="post" name=form>
    <input type="text" name="boy">
    <input type="submit" value="提交" name="submit">
</form>
</body>

Result.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
<%
    String str=request.getParameter("boy");
    if(str==null){
        str="0"; //用于报错
    }
    int guessNumber=Integer.parseInt(str);
    Integer integer=(Integer)session.getAttribute("save");
    int realnumber=integer.intValue(); //答案
    if(guessNumber==realnumber)
    {
        int n=((Integer)session.getAttribute("count")).intValue();
        n=n+1;
        session.setAttribute("count", new Integer(n));
        response.sendRedirect("success2.jsp");
    }
    else if(guessNumber>realnumber){
        int n=((Integer)session.getAttribute("count")).intValue();
        n=n+1;
        session.setAttribute("count", new Integer(n));
        response.sendRedirect("large.jsp");
    }
    else if(guessNumber<realnumber)
    {
        int n=((Integer)session.getAttribute("count")).intValue();
        n=n+1;
        session.setAttribute("count", new Integer(n));
        response.sendRedirect("small.jsp");
    }
%>
</body>

Large.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
所猜的数比实际的大,请再猜:
<form action="Result.jsp" method="get" name=form>
    <input type="text" name="boy">
    <input type="submit" value="提交" name="submit">
</form>
<%
    Integer integer=(Integer)session.getAttribute("save");
    int realnumber=integer.intValue();
    out.println("答案:" + realnumber);
%>
</body>

Small.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
所猜的数比实际的小,请再猜:
<form action="Result.jsp" method="post" name=form>
    <input type="text" name="boy">
    <input type="submit" value="提交" name="submit">
</form>
<%
    Integer integer=(Integer)session.getAttribute("save");
    int realnumber=integer.intValue();
    out.println("答案:" + realnumber);
%>
</body>

Success2.jsp

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<body>
<%
    int count=((Integer)session.getAttribute("count")).intValue();
    int num=((Integer)session.getAttribute("save")).intValue();
%>
恭喜你,猜对了!
您共猜了<%=count%>次
这个数字就是<%=num %>
<a href="c1.jsp">单击此链接返回c1.jsp页面重新开始猜数</a>
</body>

【运行结果】

4、实验心得。

挺复杂的这次实验,主要是写出来之后bug多,而且jsp页面太多不好开发

第二题老师答案:


http://www.kler.cn/a/371849.html

相关文章:

  • MySQL基础(二)
  • 【AI】【一般认知】AI3.0读后总结1-人工智能的挑战与未来:从复杂系统到人类理解
  • Linux 之 文件属性与目录、字符串处理、系统信息获取
  • 局域网 docker pull 使用代理拉取镜像
  • 了解AIGC——自然语言处理与生成
  • 晓羽扫码点餐快销版系统源码
  • 文心一言 VS 讯飞星火 VS chatgpt (380)-- 算法导论24.4 12题
  • Oracle 19c OCM技术培训课程深度解析
  • 刷代随有感(134):单调栈——下一个更大元素I(难点涉及哈希表与单调栈的结合)
  • jenkins搭建及流水线配置
  • 求助帖:ubuntu22.10 auto install user-data配置了为何还需要选择语言键盘(如何全自动)
  • python通过translate库实现中英文翻译
  • 【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so
  • 数据采集(全量采集和增量采集)
  • 三方接口调用设计方案
  • 3. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验1:PWM驱动LED呼吸灯)
  • sparksql建临时表的几种方式
  • Java | Leetcode Java题解之第513题找树左下角的值
  • 数据结构 ——— 二叉树的概念及结构
  • 联动香港、成都、武汉三所高校!“2024 深圳国际金融科技大赛”校园行圆满结束
  • MySql基础34题写题记录(21-29)
  • 【AI】numpy_pandas_matplotlib_sklearn合集
  • macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载
  • 没有对象来和我手撕红黑树吧
  • 安装git-lfs发生报错Could not find Git; can not register Git LFS.解决方案
  • Milvus - 内存索引类型详解