现在的位置: 首页 > 综合 > 正文

【Jsp】在网页中产生特定的随机数,融合至各个组件

2017年11月27日 ⁄ 综合 ⁄ 共 2613字 ⁄ 字号 评论关闭

一、目标

在网页中创造一个表格,每刷新一下,表格内的随机生成的内容就会更新

其中OpenID为一个不可编辑的文本框

省份为一个可以编辑的下拉列表

二、基本思想

(1)

JSP中与Java中产生随机数的方法一致,

其中Math.random()必须加以修饰,否则只会在0-1中产生随机数。

(2)

HTML中,下拉列表的基本写法应该是这样的:

<select name="s1"> 
<option selected>请选择</option> 
<option value="1">脚本语言</option> 
<option value="2">高级语言</option> 
<option value="3">其他语言</option> 
</select> 

其中,后台通过如String myValue=request.getParameter("s1");来获取这个下拉列表的值

三、制作过程

由于没有调用后台,仅仅是一个基本的前台网页,详情请看代码,但必须注意的是,凡是涉及到随机数的部分,不要先声明一个类,

否则随机数只产生一次,然后这个类需要直到服务器重启才不会永驻内存,也就是客户端的刷新是没有用的

应该直接在<% %>中的代码段生成。

这样客户端刷新一次,原来的随机数就是重新产生一次。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%!int random = 0;%>
<!-- 声明变量与代码段的符号是不同的,一个是<% %>一个是<%! %> -->
<!-- 以下修改的,只有<title>标签中的网页标题,其余都是Eclipse编辑网页时生成的,本网页关键的是下<body>标签下的内容 -->
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">
		<title>用户信息页</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
	<!-- 设置表格的表框 -->
		<table border="1">
			<tr>
				<td> 
					OpenID: 
				</td>
				<td>
					<%
							String[] code = new String[] { "1", "2", "3", "4", "5", "6", "7",
									"8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i",
									"j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
									"v", "w", "x", "y", "z" };
					//指定随机数产生的范围				
							int length = code.length;
							StringBuffer randomStr = new StringBuffer();
							for (int i = 0; i < 32; i++) {
								random = (int) (Math.random() * length);
								//这样保证所产生的随机数在这个数组内。强制类型转换保证没有小数
								randomStr.append(code[random]);
								//append与+是没有区别的,都是用来连接字符串的,但注意是与StringBuffer类型想对应
								//StringBuffer与String也是没有区别的,据说只是用来提升性能的
								//每random出一个随机数,就相加一次
							}
							String Openid = randomStr.toString();
							//用一个字符串变量来承载这个随机数,以便后续用这个稳定的变量去操作
						%>

					<input type="text" name="openid" disabled value="<%=Openid%>">
				</td>

			</tr>
			<tr>
				<td>
					省份:
				</td>
				<td>
					<%//这里的思想与前面OpenID思想相同,同时少了连接字符串的那一步
							String[] provinceArray = new String[] { "北京", "上海", "天津", "重庆",
									"河北", "山西", "内蒙", "辽宁", "吉林", "黑龙江", "江苏", "浙江", "安徽",
									"福建", "江西", "山东", "河南", "湖北", "湖南", "广东", "广西", "海南", "四川",
									"贵州", "云南", "西藏", "陕西", "甘肃", "宁夏", "青海", "新疆", "香港", "澳门",
									"台湾", "其它" };
							random = (int) (Math.random() * provinceArray.length);
							String Province = provinceArray[random];
						%>
						<!-- 这是根据HTML下拉列表的基本写法来套用JSP循环语句来完成这个大型的下拉列表 -->
					<select name="select">
						<%
								for (int i = 0; i < provinceArray.length; i++) {
							%>
						<option value="<%out.print(i);%>">
							<%
									out.print(provinceArray[i]);
								%>
						</option>
						<%
								}
							%>
							<!-- 设置下拉菜单当前的默认值 -->
						<option selected="selected"><%=Province%></option>
					</select>
				</td>
			</tr>
		</table>
	</body>
</html>

抱歉!评论已关闭.