Win10系统中windows防火墙监视器状
688 2023-04-02 18:11:25
我们要实现页面效果:
了解过html的都知道,提交数据用的是form表单,表单中的内容是被发送出去的内容。
大部分开发都是这样的,先画ui后考虑功能,所以我们先用代码表示出这个界面:
<form action="" method="get"><h1>加法计算</h1><!-- h1表示标题大小级数,还有h2,h3....数字越大则标题字大小越小 -->操作数1<input name="num1"><br> <!-- name值的作用是用来根据名字取参数的,相当于“键值对” -->操作数2<input name="num2"><br> <input type="submit" value="计算"></form>
然后我们考虑我们的逻辑代码:
<%int a=Integer.parseInt(request.getParameter("num1"));int b=Integer.parseInt(request.getParameter("num2"));out.print(a+b);%>
解释一下,因为在jsp中,request属于9个内置函数中的一员,所以不用实例化(即不用创建对象),这是属于jsp的内置对象,所以进行纯java开发的时候不能这么写。
运行,噫!报错了?
我们观看出错信息(红色划线处)可以知道:变量被赋予了null值 ( 这是新手最最最最容易犯的错 )
原来是因为 jsp 刚运行的时候,输入框内都是没有值的,所以这时候直接输出a+b就会输出null+null。
为了解决这个错误,我们必须设置 if 语句判断值是否为空,所以完整代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" 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=ISO-8859-1"><title>Insert title here</title></head><body><!-- 表单内的内容是被发送出去的内容,action表示提交给谁,不写就默认提交给自己。method是提交信息的方式:get,post --><!-- get是明码提交 ,post则暗中操作--><!-- 下面是ui界面代码 --><form action="" method="get"><h1>加法计算</h1><!-- h1表示标题大小级数,还有h2,h3....数字越大则标题字大小越小 -->操作数1<input name="num1"><br>操作数2<input name="num2"><br><input type="submit" value="计算"></form><%//这个是逻辑代码String num1=request.getParameter("num1");String num2=request.getParameter("num2");if(num1!=null&&num2!=null){int a=Integer.parseInt(num1);int b=Integer.parseInt(num2);out.print(a+b);//虽然out.print(a+b)和<%=a+b>等效,但是写在这里面是错误的,因为表达式是相互独立的,不能互相嵌套//和System.out.print(a+b);也等效啦,但是一个是显示在页面的,一个是显示在控制台中的}%></body></html>
还有另一种实现方式,通过按钮的点击事件:
<%@ page language="java" contentType="text/html; charset=UTF-8" 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=ISO-8859-1"><title>Insert title here</title></head><body> <form action="" method="get" name="abadd"><!-- 这一行有所修改,新增了特定name值 --><h1>加法计算</h1> 操作数1<input name="num1"><br>操作数2<input name="num2"><br><input type="button" value="计算" onclick="add()" ><!-- 这一行有所修改:表示当点击按钮时触发add()事件 --></form><!-- 新增下面的 --><script language="javascript">function add(){ document.abadd.submit();//表示触发了名为abadd的表单的数据提交}</script><%String num1=request.getParameter("num1");String num2=request.getParameter("num2");if(num1!=null&&num2!=null){int a=Integer.parseInt(num1);int b=Integer.parseInt(num2);out.print(a+b);}%></body></html>举一反三,我们可以融合一些以前学过的html的知识加强我们的页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" 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=ISO-8859-1"><title>Insert title here</title></head><body><form action="" method="get" name="abadd"><!-- 表单内的内容是被发送出去的内容,action表示提交给谁,不写就默认提交给自己,method是提交方式 --><h1>加法计算</h1>操作数1<input type="text" name="num1"><br> 操作数2<input type="text" name="num2"><br><input type="radio" name="op" value="1">加法 <br><!-- 加法和减法的name都相同是为了保证它们都是同一组选择按钮,而不是单独的可选按钮 --><input type="radio" name="op" value="2">减法<br> <!-- 正因为name是相同的,所以同组的通过value来获取实例 --><input type="submit" value="计算" onclick="add()" ></form><%int a=0,b=0;//局部变量要记得赋初值String str1=request.getParameter("num1");String str2=request.getParameter("num2");String op_value=request.getParameter("op");if(str1!=null&&str2!=null){a=Integer.parseInt(str1);b=Integer.parseInt(str2);}if(op_value!=null)switch(op_value){case "1":out.print(a+b); break;case "2":out.print(a-b); break;default:out.print("异常");break;} %></body></html>