在一個jsp頁面內實現簡單計算器(一般來說最好不要一個頁面實現)

来源:https://www.cnblogs.com/enxi599/archive/2019/08/18/11372107.html
-Advertisement-
Play Games

首先創建一個calculate.jsp 這是用Javascript代碼來驗證,代碼如下: <script type="text/javascript"> function check(){ if(form.n1.value==""&&form.value.n2==""){ window.alert( ...


首先創建一個calculate.jsp

這是用Javascript代碼來驗證,代碼如下:

<script type="text/javascript">

function check(){
if(form.n1.value==""&&form.value.n2==""){
window.alert("值不能為空");
return false;
}
if(isNaN(form.n1.value)&&isNaN(form.n2.vavlue)){
window.alert("請確認輸入的是否是數字!");
return false;
}
if(form.operator.value=="/"&&form.n2.value=="0"){
window.alert("除數不能為0,請重新輸入! ");
return false;
}
}
</script>

使用Java代碼來計算,代碼如下:

<%
String operator=request.getParameter("operator");
int n1=Integer.parseInt(request.getParameter("n1"));
int n2=Integer.parseInt(request.getParameter("n2"));
int result=0;
if("+".equals(operator)){
result= n1+n2;
}
else if("-".equals(operator)){
result=n1-n2;
}
else if("*".equals(operator)){
result=n1*n2;
}
else {
result=n1/n2;
}
request.setAttribute("n1", n1);
request.setAttribute("n2", n2);
request.setAttribute("result", result); //往request作用域里放一個值
request.getRequestDispatcher("calculate.jsp").forward(request,response);
%>

form表單來寫一個簡單的頁面,代碼如下:

<form name="form" action="calculate_do.jsp" method="post" >
<input name="n1" value="<%= request.getAttribute("n1")==null?"":request.getAttribute("n1") %>">
<select name="operator">
<option value="+" <%= "+".equals(operator)?"selected":"" %>>+</option>
<option value="-" <%= "-".equals(operator)?"selected":"" %>>-</option>
<option value="*" <%= "*".equals(operator)?"selected":"" %>>*</option>
<option value="/" <%= "/".equals(operator)?"selected":"" %>>/</option>

</select>
<input name="n2" value="<%= request.getAttribute("n2")==null?"":request.getAttribute("n2") %>">
<input type="submit" value="=" onclick="return check();" >
<input name="result" value="<%= request.getAttribute("result")==null?"":request.getAttribute("result") %>">
</form>

源代碼:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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>My JSP 'calaulate.jsp' starting page</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">
<script type="text/javascript">

function check(){
if(form.n1.value==""&&form.value.n2==""){
window.alert("值不能為空");
return false;
}
if(isNaN(form.n1.value)&&isNaN(form.n2.vavlue)){
window.alert("請確認輸入的是否是數字!");
return false;
}
if(form.operator.value=="/"&&form.n2.value=="0"){
window.alert("除數不能為0,請重新輸入! ");
return false;
}
}
</script>

</head>

<body>
<%
String operator=request.getParameter("operator");
int n1=Integer.parseInt(request.getParameter("n1"));
int n2=Integer.parseInt(request.getParameter("n2"));
int result=0;
if("+".equals(operator)){
result= n1+n2;
}
else if("-".equals(operator)){
result=n1-n2;
}
else if("*".equals(operator)){
result=n1*n2;
}
else {
result=n1/n2;
}
request.setAttribute("n1", n1);
request.setAttribute("n2", n2);
request.setAttribute("result", result); //往request作用域里放一個值
request.getRequestDispatcher("calculate.jsp").forward(request,response);
%>


<form name="form" action="calculate_do.jsp" method="post" >
<input name="n1" value="<%= request.getAttribute("n1")==null?"":request.getAttribute("n1") %>">
<select name="operator">
<option value="+" <%= "+".equals(operator)?"selected":"" %>>+</option>
<option value="-" <%= "-".equals(operator)?"selected":"" %>>-</option>
<option value="*" <%= "*".equals(operator)?"selected":"" %>>*</option>
<option value="/" <%= "/".equals(operator)?"selected":"" %>>/</option>

</select>
<input name="n2" value="<%= request.getAttribute("n2")==null?"":request.getAttribute("n2") %>">
<input type="submit" value="=" onclick="return check();" >
<input name="result" value="<%= request.getAttribute("result")==null?"":request.getAttribute("result") %>">
</form>


</body>
</html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 深入Vue.js響應式原理 一、創建一個Vue應用 new Vue({ data() { return { name: 'yjh', }; }, router, store, render: h => h(App), }).$mount('#app'); 二、實例化一個Vue應用到底發生了什麼? v ...
  • 寫在前面: 該篇是個人平時對web前端小知識點的總結,會不定時更新...... 如有錯誤,敬請批評指正。 正文: 1、WWW是World Wide Web的縮寫。 2、HTML(Hyper Text Markup Language)是用於描述網頁文檔的超文檔標記性語言。 3、Web主要包括超文本傳輸 ...
  • jQuery知識梳理20190817 [TOC] 1. jQuery的特征 強大選擇器: 方便快速查找DOM元素 隱式遍歷(迭代): 一次操作多個元素 讀寫合一: 讀數據/寫數據用的是一個函數 鏈式調用: 可以通過.不斷調用jQuery對象的方法 事件處理 DOM操作(CUD) 樣式操作 動畫 瀏覽 ...
  • 隨機驗證碼: ...
  • module.exports Node應用由模塊組成,採用CommonJS模塊規範。根據這個規範,每個文件就是一個模塊,有自己的作用域。在這些文件裡面定義的變數、函數、類,都是私有的,對外不可見,因此規避掉了作用域污染。 根據CommonJS規定,每個模塊內部,module變數代表當前模塊,這個變數 ...
  • 一、查找字元串的位置(找到返回字元串首字母的位置,找不到返回-1): indexOf("string"):查找字元串string在字元串中首次出現的位置; indexOf("string",number):從number位置開始往後查找字元串string在字元串中首次出現的位置;number為負數從 ...
  • if(val.toString().length == 10){ val = val.toString().padEnd(13,"0")*1 //不夠十三位放後面補零,超過13位也可以 } toString() 方法可把一個邏輯值轉換為字元串,並返回結果。 ES2017 引入了字元串補全長度的功能。 ...
  • 0. Typescript Typescript對於前端來說可以說是越來越重要了,前端的很多項目都用Typescript進行了重構。這主要得益於Typescript有比較好的類型支持,在編碼的過程中可以很好地做一些類型推斷(主要是編輯器會有代碼提示,就很舒服)。再者Typescript的語法相較於j ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...