Bootstrap

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页面太多不好开发

第二题老师答案:

;