Санкт-Петербургский государственный университет информационных технологий, механики и оптики
Кафедра вычислительной техники
Системы программирования интернет-приложений
Лабораторная работа № 6
«JSP»
Вариант 304
Выполнили:
студенты группы 4103
Рябинина Александра
Пермяков Валерий
Голубцов Евгений
2011
Задание
Создать JSP-страницу, которая формирует HTTP-запрос на проверку попадания точки в заданную область на координатной плоскости и осуществляет обработку этого запроса.
Код JSP-страницы:
Index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Group 4103 Variant №304</title>
<script>
var flpoint=false;
var flmin=false;
var r=1;
function SetPos(Obj){
Obj.setSelectionRange(Obj.value.length,Obj.value.length);
}
function validate(Obj) {
len=Obj.value.length;
if (len==16) {event.returnValue=false; return 0;}
if ((event.keyCode==45) && (len==0)){
flmin=true;
return 0;
}
if ((event.keyCode==46)&&(!flpoint)&&(len>0)&&!(flmin&&len==1)){
flpoint=true;
return 0;
}
str=Obj.value.toString();
var st=String.fromCharCode(event.keyCode);
if (event.keyCode==8) {
if (str[len-1]=='.') {flpoint=false;}
if (len==1) flmin=false;
return 0;
}
if ((event.keyCode<48)||(event.keyCode>57)){event.returnValue=false;}
else {
str=str+st;
i=parseFloat(str);
if ((i<=-5)||(i>=3)) event.returnValue=false;
}
}
function ChangeR(Value){
r=Value;
}
function MagicTransport(trans_val){
document.getElementById("param1").value = trans_val;
}
function mousePageXY(e){
var x = 0, y = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY){
x = e.pageX;
y = e.pageY;
}
else if (e.clientX || e.clientY){
x = e.clientX + (document.documentElement.scrollLeft ||
document.body.scrollLeft) - document.documentElement.clientLeft;
y = e.clientY + (document.documentElement.scrollTop ||
document.body.scrollTop) - document.documentElement.clientTop;
}
var R=265*1.0/2;
var xx=(x-(R+380))*r*1.0/R;
var yy=((R+210)-y)*r*1.0/R;
document.getElementById("param1").value = xx;
document.getElementById("2").value = yy;
document.form1.submit();
}
</script>
</head>
<table width="800px" border="1" align="center" cellpadding="0" cellspacing="0" class="main_border">
<tr>
<td width="800px" height="150" bgcolor="#111111">
<CENTER>
<font color="#CCCCCC">
Рябинина А. Голубцов Е. Пермяков В.<BR>
Гр. 4103<BR>
Вар. №304
</font>
</CENTER>
</td>
</tr>
<tr>
<td width="600px" height="800px" align="left" valign="top" bgcolor="#CCCCCC">
<CENTER><font>№6 </font></CENTER>
<Label class="label1">Х: </Label>
<input name="button1" class="button2" type="submit" value="-3" onclick="MagicTransport(this.value)" />
<input name="button1" class="button3" type="submit" value="-2" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button4" type="submit" value="-1" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button5" type="submit" value="0" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button6" type="submit" value="1" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button7" type="submit" value="2" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button8" type="submit" value="3" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button9" type="submit" value="4" onclick="MagicTransport(this.value)"/>
<input name="button1" class="button10" type="submit" value="5" onclick="MagicTransport(this.value)"/>
<table width="490px" id="Tab_result" valign="top" bgcolor="#CCBBCC" border="1px" class="table1">
<tr>
<td width="30px"> X </td>
<td width="30px"> Y </td>
<td width="30px"> R </td>
<td width="200px"> Результат </td>
</tr>
<%
String str;
if (request.getParameter("param1")==null) str="";
else {
str = request.getParameter("param4");
double x= Double.parseDouble(request.getParameter("param1"));
double y= Double.parseDouble(request.getParameter("param2"));
double r= Double.parseDouble(request.getParameter("param3"));
boolean act=false;
if (((x>=0)&&(y>=0)&&(y<-2*x+r))||((x>0)&&(y<0)&&(x<r)&&(y>-r))||((x<0)&&(y<0)&&(Math.sqrt(y*y+x*x)<r*r)))
act=true; str+=request.getParameter("param1")+";"+request.getParameter("param2")+";"+request.getParameter("param3")+";";
if (act) str+="tt;";
else str+="ff;";
int n=str.length();
int count=0;
String[] s= new String [5];
for (int i=0;i<4;i++) s[i]="";
for(int i=0;i<n;i++){
if (str.charAt(i)==';') {
count++;
}
else s[count]+=str.charAt(i);
if (count==4) {
count=0;
%>
<tr>
<td><%= s[0] %></td>
<td><%= s[1] %></td>
<td><%= s[2] %></td>
<td><% if (s[3].charAt(0)=='t') {%> true <%} else {%> false <%}%></td>
</tr>
<%
for (int k=0;k<4;k++) s[k]="";
} }} %>
</table>
<form id="form1" name="form1" method="GET" action="" onSubmit = "return checkform(this)" >
<Label class="label9">Point coordinates:</Label>
<BR>
<input id="param1" type="hidden" name="param1" value="0">
<Label class="label2">Y: </Label>
<input type="text" id="2" name="param2" maxlength="15" class="input2" onKeyPress="validate(document.getElementById('2'))" onclick="SetPos(document.getElementById('2'))" required />
<Label class="label3">R: </Label>
<input type="radio" name="param3" value="1" CHECKED class="radiobut1" onclick="ChangeR(this.value)"> <Label class="label4">1 </Label>
<input type="radio" name="param3" id="1" value="1.5" class="radiobut2" onclick="ChangeR(this.value)"> <Label class="label5">1.5 </Label>
<input type="radio" name="param3" value="2" class="radiobut3" onclick="ChangeR(this.value)"> <Label class="label6">2 </Label>
<input type="radio" name="param3" value="2.5" class="radiobut4" onclick="ChangeR(this.value)"> <Label class="label7">2.5 </Label>
<input type="radio" name="param3" value="3" class="radiobut5" onclick="ChangeR(this.value)"> <Label class="label8">3 </Label>
<img src="img/pic.jpg" alt="Фигура по заданию (для определения попадания точки)" class="img1" onclick="mousePageXY(event)">
<input name="button1" id="sub" class="button1" type="submit" value="Send" />
<BR><BR><BR>
<input id="param4" type="hidden" name="param4" value=<%= str %>>
</form>
</table>
</body>
</html>
style.css:
root {display: block;}
.text1 {
background: #FFFFFF;
height: 20px;
}
.main_border {
border: 2px solid #000000;
position: absolute;
top: 20px;
left: 20px;
}
input{
background: #acacac;
color: #010101;
height: 20px;
border: 2px solid #111111;
font-size: 10px;
font-weight: bold;
vertical-align: top;
width: 120px;
}
.radiobut1{
position:absolute;
top: 275px;
left: 50px;
width: 20px;
}
.radiobut2{
position:absolute;
top: 275px;
left: 100px;
width: 20px;
}
.radiobut3{
position:absolute;
top: 275px;
left: 150px;
width: 20px;
}
.radiobut4{
position:absolute;
top: 275px;
left: 200px;
width: 20px;
}
.radiobut5{
position:absolute;
top: 275px;
left: 250px;
width: 20px;
}
.input2 {
position:absolute;
top: 240px;
left:50px;
}
.input3 {
background: #acacac;
color: #010101;
height: 12px;
border: 0px;
font-size: 10px;
font-weight: bold;
vertical-align: top;
width: 50px;
}
.label1 {
position:absolute;
top: 210px;
left: 30px;
}
.label2 {
position:absolute;
top: 240px;
left: 30px;
}
.label3 {
position:absolute;
top: 280px;
left: 30px;
}
.label4 {
position:absolute;
top: 280px;
left: 80px;
}
.label5 {
position:absolute;
top: 280px;
left: 130px;
}
.label6 {
position:absolute;
top: 280px;
left: 180px;
}
.label7 {
position:absolute;
top: 280px;
left: 230px;
}
.label8 {
position:absolute;
top: 280px;
left: 280px;
}
.label9 {
position:absolute;
top: 180px;
left: 150px;
}
.table1 {
border: 2px saddlebrown;
position:absolute;
top: 500px;
left: 50px;
}
.button1 {
height: 20px;
width: 150px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 350px;
left: 100px;
}
.button2 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 50px;
}
.button3 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 80px;
}
.button4 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 110px;
}
.button5 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 140px;
}
.button6 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 170px;
}
.button7 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 200px;
}
.button8 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 230px;
}
.button9 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 260px;
}
.button10 {
height: 20px;
width: 20px;
background: #acacca;
border-color: #000000;
font-size: 10px;
font-weight: bold;
color: #111111;
font-family: Arial,Helvetica,sans-serif;
position:absolute;
top: 210px;
left: 290px;
}
.img1{
position:absolute;
top: 190px;
left: 360px;
}
.p {font-family:Verdana; font-size:12px; margin:15px;}
.left {background-color:#CCCCCC; border-right:3px solid #424242; border-top:0px;}
.middle{
font-family: "Monotype Corsiva";
font-size: 14px;
color:#cccccc;
background-color: #000000;
}
body {background-image:url(img/bg.gif)}
Скриншот:
