作业4 猜数字游戏jsp
2014-04-14 23:48
465 查看
实验类型:验证性
实验目的:掌握JSP语法、JSP内置对象
实验内容:
编写JSP程序,完成以下功能:
1. 编写login.jsp,登录时只输入一个昵称。但要检查昵称是否已经被其他用户使用。
2. 编写game.jsp, 每次游戏程序随机产生一个0-9之间的整数,要求玩家输入自己猜的数字,并对用户输入数字进行检查,进行如下提示:
(1)如果用户猜对了,则提示:恭喜你,猜对了。结束本次游戏。
(2)如果用户猜错了,则提示:你猜的数字太(大或小)了。要求用户继续猜。
如果连续3次没有猜对,则提示:游戏失败。
一次游戏结束时,将用户本次猜数字情况记入“排行榜”。
然后询问用户是否继续新的游戏,果用户选择继续,则开始新一次游戏,
3. 排行榜页面,显示所有参加游戏的用户的游戏情况。
昵称 游戏次数 成功次数
ABC 10 8
XYX 11 7
.......
4. 必须登录后才能进入游戏页面,而进入登录页面和排行榜页面,无须登录。
5. 提示,排行榜数据结构应该放在application中,用户登录状态放在session中。
提交要求:打包为 学号-job4.war文档,其中要包含源程序文件。
界面:
运用到js、application、session,localStorage,界面用到部分css3的,Ajax的得学。
记录下一些比较有用的:
Author:June
实验目的:掌握JSP语法、JSP内置对象
实验内容:
编写JSP程序,完成以下功能:
1. 编写login.jsp,登录时只输入一个昵称。但要检查昵称是否已经被其他用户使用。
2. 编写game.jsp, 每次游戏程序随机产生一个0-9之间的整数,要求玩家输入自己猜的数字,并对用户输入数字进行检查,进行如下提示:
(1)如果用户猜对了,则提示:恭喜你,猜对了。结束本次游戏。
(2)如果用户猜错了,则提示:你猜的数字太(大或小)了。要求用户继续猜。
如果连续3次没有猜对,则提示:游戏失败。
一次游戏结束时,将用户本次猜数字情况记入“排行榜”。
然后询问用户是否继续新的游戏,果用户选择继续,则开始新一次游戏,
3. 排行榜页面,显示所有参加游戏的用户的游戏情况。
昵称 游戏次数 成功次数
ABC 10 8
XYX 11 7
.......
4. 必须登录后才能进入游戏页面,而进入登录页面和排行榜页面,无须登录。
5. 提示,排行榜数据结构应该放在application中,用户登录状态放在session中。
提交要求:打包为 学号-job4.war文档,其中要包含源程序文件。
界面:
运用到js、application、session,localStorage,界面用到部分css3的,Ajax的得学。
记录下一些比较有用的:
1:实现登录处理,看看用户昵称是否使用过:
<% request.setCharacterEncoding("UTF-8"); //设置编码 String username = request.getParameter("username"); //获取用户名 int flag=0; //判断用户是否登录过 //application.removeAttribute("LOGINED_USER"); List loginedUsers = new ArrayList(); if (application.getAttribute("LOGINED_USER") != null) { loginedUsers = (List) application.getAttribute("LOGINED_USER"); for (int i = 0; i < loginedUsers.size(); i++) { User loginedUser = (User) loginedUsers.get(i); if (loginedUser.getUsername().equals(username))//存在过, { flag=1; out.print("<script>alert('此昵称已有人使用过!请重新输入');location.href='login.jsp';</script>"); // response.sendRedirect("login.jsp"); } } if(flag==0){ User newUser = new User(username, 0, 0); loginedUsers.add(newUser); newUser.add(newUser); session.setAttribute("LOGINED_USER", newUser); session.setAttribute("username", username);//存储用户名,方便检测 application.setAttribute("LOGINED_USER", loginedUsers); response.sendRedirect("game.jsp"); } } if (application.getAttribute("LOGINED_USER") == null) { User newUser = new User(username, 0, 0); loginedUsers.add(newUser); newUser.add(newUser); session.setAttribute("LOGINED_USER", newUser); session.setAttribute("username", username);//存储用户名,方便检测 application.setAttribute("LOGINED_USER", loginedUsers); response.sendRedirect("game.jsp"); } %>
2:在登录页面、游戏页面和排行榜页面,检测下用户是否登录,若无登录,则跳转到登录界面,为了减少代码的冗余性,可将此部分抽离到一个jsp文件中,然后在不同的文件中include下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.wgh.User"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>降低代码冗余,修改共性内容</title> </head> <body> <% User user=(User) session.getAttribute("LOGINED_USER"); if(user==null) response.sendRedirect("login.jsp"); String username=(String)session.getAttribute("username"); if(username==null) response.sendRedirect("login.jsp"); %> </body> </html>
3:localStorage存储本地用户名,并检测不重复(虽然实验这个是多余的,但此功能可以保留以后有用途),此处也涉及到怎么用js创建新元素li:
window.onload = init; function showUser() { } function save(item) { var userArray = getStoreArray("username"); userArray.push(item); localStorage.setItem("username", JSON.stringify(userArray)); } function load(item) { var getKey = localStorage.key(localStorage.length - 1); var user = localStorage.getItem(getKey); return user; } function localUserlist() { var userArray = getSavedNames(); var ul = document.getElementById("userAlready"); if (userArray != null) { for (var i = 0; i < userArray.length; i++) { var li = document.createElement("li"); li.innerHTML = userArray[i]; ul.appendChild(li); } } } function getSavedNames() { return getStoreArray("username"); } function getStoreArray(key) { var userArray = localStorage.getItem(key); if (userArray == null || userArray == "") { userArray = new Array(); } else { userArray = JSON.parse(userArray); } return userArray; } function init() { // localStorage.clear(); //清除本地存储的全部数据 var loginButton = document.getElementById("login-button"); loginButton.onclick = handleButtonClick; localUserlist(); } /* * 这是ranklist.jsp的初始显示页面的内容,意在显示所有用户的排行榜情况 */ function initRanklist() { // localStorage.clear(); //清除本地存储的全部数据 var gameplayer = document.getElementById("username").innerHTML; document.getElementById("userNum").innerHTML = parseInt(localStorage .getItem("username").length - 1); localUserlist(); } /* * handleButtonClick()函数用于在初始登录界面中的昵称判断 若昵称已存在,则提醒用户重新输入; * 若昵称是新使用的,则调用save()函数将其存入本地,并跳转页面至游戏界面 */ function handleButtonClick() { var textInput = document.getElementById("username"); var names = textInput.value; var flag = 1; var ul = document.getElementById("userAlready"); var liArray = ul.getElementsByTagName("li"); var lis = liArray.length; var li = document.createElement("li"); li.innerHTML = names; ul.appendChild(li); save(names); }
Author:June
相关文章推荐
- jsp大富翁猜数字游戏
- 利用jsp/servlet/Ajax,实现一个猜数字游戏!
- 3月22日的课后作业,猜数字的游戏
- 第二次作业个人作业、猜数字游戏
- jsp---猜数字游戏,深有感触
- java基础作业之猜数字游戏;
- JSP学习笔记(七)-----猜数字游戏
- 第二次作业个人作业、猜数字游戏
- 使用jsp和servlet写的一猜数字游戏
- 第二次作业个人作业、猜数字游戏
- C语言基础项目练习-猜数字游戏
- jQuery,ajax请求返回长数字字符串,jsp页面不显示为科学计数法
- codevs1229 数字游戏
- 1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- 实验三 Java猜数字游戏开发
- 11.3 作业 Problem L: 数字统计
- JSP+Servlet培训班作业管理系统[21] -番外篇之登录页美工实现
- 网易2017内推笔试题-数字游戏
- 用ServletJSP动态生成英文、数字图像验证码
- BZOJ1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏