1. 编写JSP程序,实现图4-24所示的简易计算器。要求:输入“第一个参数”,选择运算类型(+,-,*,/),输入“第二个参数”后,按“计算”按钮,结果将显示在“结果”文本框中。
注意:程序需要对输入参数是否合法进行判断,例如参数是否为数字,除法时,除数不为0的判断。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<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">
<script type="text/javaScript">
function operater(){
var num1Vaule = document.form1.num1.value;
var num2Value=document.form1.num2.value;
if(num1Vaule=="" || num2Value == ""){
alert("参与计算的操作数的数值不能为空 !!");
return false;
}
//判断num1是不是一个数
if(isNaN(num1Vaule)){
alert("第一个数不是数值型数据,请确认!")
return false;
}
if(isNaN(num2Value)){
alert("第二个数不是数值型数据,请确认!");
return false;
}
var operValue = document.form1.oper.value;
var resultValue = 0;
if(operValue=="0"){
resultValue = parseFloat(num1Vaule)+parseFloat(num2Value);
}
if(operValue=="1"){
resultValue = parseFloat(num1Vaule)-parseFloat(num2Value);
}
if(operValue=="2"){
resultValue = parseFloat(num1Vaule)*parseFloat(num2Value);
}
if(operValue=="3"){
resultValue = parseFloat(num1Vaule)/parseFloat(num2Value);
}
document.form1.result.value= resultValue;
}
</script>
</head>
<body>
<form name="form1" action="">
<h1>我的计算器</h1>
<hr size="2"/>
<p>请输入第一个数:<input type="text" name="num1"></p>
<p>请选择运算方式:
<select name="oper">
<option value="0">+</option>
<option value="1">-</option>
<option value="2">*</option>
<option value="3">/</option>
</select>
</p>
<p>请输入第二个数:<input type="text" name="num2"></p>
<input type="button" value="计算" οnclick="operater()"/>
<input type="reset" value="重置" />
<p>结果:<input type="text" name="result"></p>
</form>
</body>
</html>
2. 编写一个JSP页面,将用户名和密码存放到会话中(假设用户名为“孤独求败”,密码为“123456”),再重新定向到另一个JSP页面,将会话中存放的用户名和密码显示出来。(提示:使用response对象的sendRedirect()方法进行重定向)。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session存储用户名和密码</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">
</head>
<body>
<form name="form1" action="">
<p>用户名:孤独求败</p>
<p>密码:******</p>
<%
session.setAttribute("username","孤独求败");
session.setAttribute("password","123456");
response.sendRedirect("success.jsp");
%>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session会话获取重定向前一页面的数据</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">
</head>
<body>
<h2>我是重定向后的页面</h2>
<p>用户名:<%= session.getAttribute("username") %></p>
<p>密码:<%= session.getAttribute("password") %></p>
</body>
</html>
3. 编写一个JSP登录页面,可输入用户名和密码,提交请求到另一个JSP页面,该JSP页面获取请求的相关数据并显示出来。请求的相关数据包括用户输入的请求数据和请求本身的一些信息(比如请求使用的协议getProtocol() 、请求的URI request.getServletPath() 、请求方法request.getMethod() 、远程地址request.getRemoteAddr()等)。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<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">
</head>
<body>
<form name="form1" action="loginSuccess.jsp">
<p>用户名:<input type="text" name="username"/></p>
<p>密码:<input type="password" name="password"/></p>
<p> <input type="submit" value="提交"/></p>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<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">
</head>
<body>
<h2>我是登录提交后的跳转页面</h2>
<p>用户名:<%= request.getParameter("username") %></p>
<p>密码:<%= request.getParameter("password") %></p>
<hr/>
<p>请求使用的协议:<%= request.getProtocol() %></p>
<p>请求URI:<%= request.getServletPath() %></p>
<p>请求方法:<%= request.getMethod() %></p>
<p>远程地址:<%= request.getRemoteAddr() %></p>
</body>
</html>
4. 利用隐式对象为某一网站编写一个JSP程序,统计该网站的访问次数。
一种情况是按照客户进行统计(按照浏览器进行统计,一个浏览器如果访问网站的话,就算一次访问,换句话说如果这个浏览器刷新多次网站的话,也算是一次访问);
另一种情况是刷新一次页面,就算是一次访问。要求用隐式对象去实现。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<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">
</head>
<body>
<h2>统计页面访问次数</h2>
<%
//初始化处理:
if (pageContext.getAttribute("pageCount") == null) {
pageContext.setAttribute("pageCount", new Integer(0));
}
if (application.getAttribute("appCount") == null) {
application.setAttribute("appCount", new Integer(0));
}
ArrayList al=(ArrayList)application.getAttribute("al");
if (al==null){
al=new ArrayList();
}
if(!al.contains(session.getId())){
al.add(session.getId());
}
application.setAttribute("al",al);
//信息累加的处理
Integer count = (Integer) pageContext.getAttribute("pageCount");
pageContext.setAttribute("pageCount", new Integer(
count.intValue() + 1));
Integer count1 = (Integer) application.getAttribute("appCount");
application.setAttribute("appCount", new Integer(
count1.intValue() + 1));
%>
<b>情况1:网站访问次数: </b>
<%=al.size()%>
<br />
<br />
<b>情况2:网站访问次数: </b>
<%=application.getAttribute("appCount")%>
<br />
<br />
</body>
</html>