制作一个含有"绘制多边形"和"双色球"的jsp首页
时间: 2023-07-02 21:16:34 浏览: 136
好的,我可以为你提供一个简单的实现方案。
首先,我们需要编写一个 `index.jsp` 页面,代码如下:
```jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>欢迎来到我的首页</h1>
<h2>绘制多边形</h2>
<p>在这里你可以绘制一个多边形并计算它的面积和周长。</p>
<form action="polygon.jsp" method="post">
<label for="sides">请输入多边形的边数:</label>
<input type="number" id="sides" name="sides" min="3" required>
<br><br>
<button type="submit">开始绘制</button>
</form>
<hr>
<h2>双色球</h2>
<p>在这里你可以生成一组双色球号码。</p>
<form action="lottery.jsp" method="post">
<button type="submit">生成号码</button>
</form>
</body>
</html>
```
在这个页面中,我们使用了两个表单,分别对应着绘制多边形和生成双色球号码。这两个表单的 `action` 属性分别指向了 `polygon.jsp` 和 `lottery.jsp`。
接下来,我们需要编写 `polygon.jsp` 页面。这个页面需要接收从首页传递过来的多边形边数,然后让用户在页面上绘制多边形,并计算它的面积和周长。代码如下:
```jsp
<%@page import="java.util.*"%>
<%@page import="java.math.*"%>
<%@page import="java.awt.*"%>
<%@page import="java.awt.geom.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>绘制多边形</title>
<script>
var sides = <%= request.getParameter("sides") %>;
var canvas;
var context;
var points = [];
var dragging = false;
var polygon;
var area;
var perimeter;
function init() {
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
canvas.addEventListener("mousedown", onMouseDown);
canvas.addEventListener("mousemove", onMouseMove);
canvas.addEventListener("mouseup", onMouseUp);
canvas.addEventListener("mouseleave", onMouseLeave);
canvas.addEventListener("dblclick", onDoubleClick);
polygon = new Path2D();
area = document.getElementById("area");
perimeter = document.getElementById("perimeter");
}
function onMouseDown(event) {
points.push({ x: event.offsetX, y: event.offsetY });
dragging = true;
}
function onMouseMove(event) {
if (dragging) {
redraw();
context.beginPath();
context.moveTo(points[0].x, points[0].y);
for (var i = 1; i < points.length; i++) {
context.lineTo(points[i].x, points[i].y);
}
context.lineTo(event.offsetX, event.offsetY);
context.stroke();
}
}
function onMouseUp(event) {
points.push({ x: event.offsetX, y: event.offsetY });
redraw();
}
function onMouseLeave(event) {
dragging = false;
}
function onDoubleClick(event) {
// Close the polygon
points.push(points[0]);
redraw();
// Calculate area and perimeter
var path = new Path2D();
path.moveTo(points[0].x, points[0].y);
for (var i = 1; i < points.length; i++) {
path.lineTo(points[i].x, points[i].y);
}
area.innerHTML = "面积:" + (Math.abs(context.measureText(path).width) * 0.5 * 0.5).toFixed(2);
perimeter.innerHTML = "周长:" + (context.measureText(path).width * 0.5).toFixed(2);
}
function redraw() {
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.moveTo(points[0].x, points[0].y);
for (var i = 1; i < points.length; i++) {
context.lineTo(points[i].x, points[i].y);
}
context.stroke();
}
</script>
</head>
<body onload="init()">
<h1>绘制多边形</h1>
<canvas id="canvas" width="400" height="400"></canvas>
<div>
<p id="area"></p>
<p id="perimeter"></p>
</div>
</body>
</html>
```
在这个页面中,我们使用了 HTML5 的 canvas 元素来绘制多边形。当用户在页面上点击鼠标时,我们会记录下当前的坐标,并在 canvas 上绘制出来。当用户双击鼠标时,我们会计算多边形的面积和周长,并将结果显示在页面上。
最后,我们需要编写 `lottery.jsp` 页面。这个页面需要生成一组双色球号码,并显示在页面上。代码如下:
```jsp
<%@page import="java.util.*"%>
<%@page import="java.lang.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>双色球</title>
</head>
<body>
<h1>双色球</h1>
<p>你的双色球号码是:</p>
<p>
<%
List<Integer> redBalls = new ArrayList<Integer>();
for (int i = 1; i <= 33; i++) {
redBalls.add(i);
}
Collections.shuffle(redBalls);
List<Integer> selectedRedBalls = redBalls.subList(0, 6);
Collections.sort(selectedRedBalls);
for (int i = 0; i < selectedRedBalls.size(); i++) {
out.print(selectedRedBalls.get(i));
if (i < selectedRedBalls.size() - 1) {
out.print(", ");
}
}
out.print(" + ");
out.print((int) (Math.random() * 16 + 1));
%>
</p>
</body>
</html>
```
在这个页面中,我们使用了 Java 的随机数生成器来生成一组双色球号码。我们首先生成 33 个红球号码,然后随机选取其中的 6 个作为本次开奖的红球号码。蓝球号码是从 1 到 16 中随机生成的一个数。
现在,我们已经完成了含有 "绘制多边形" 和 "双色球" 的 JSP 首页的制作。你可以将这三个页面放在同一个 Web 应用程序中,然后通过访问首页来进入这个应用程序。
阅读全文