JSP实用对象实验五bean的应用

实验五 、bean的应用

一、实验目的

1. 掌握bean的结构。

2. 掌握bean的作用域。

3. 掌握bean的使用。

4. 掌握bean的书写规则,理解bean的作用域,在JSP页面中熟练使用bean。

二、实验内容

1、教材5.5.1节 小数表示为分数。

2、教材5.5.2节 记忆测试。

3、教材5.5.3节 成语接龙。

三、实验步骤

1.小数表示为分数

① 实验代码

文件ch5_1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
	<style>
		#tomStyle{
			font-family:宋体;font-size:36;color:blue 
		}
	</style>
<HTML>
	<body bgcolor = #ffccff>
		<form action="ch5_2.jsp" id=tomStyle method=post >
		输入一个纯小数:<br>
		<input type=text name="number" id=tomStyle size=16 value = 0.618 />
		<br><input type="submit" id=tomStyle  value="提交" /><br>
		看小数的分数表示。
		</form> 
	</body>
</HTML>

文件ch5_2.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML>
	<body bgcolor = cyan>
		<p style="font-family:宋体;font-size:36;color:red">
		<jsp:useBean id="fraction" class="one.Fraction" scope="request" />
		<jsp:setProperty  name="fraction" property="number"  param = "number" />
		<jsp:getProperty  name="fraction" property="number" /> 
		表示成分数是:<br>
		<jsp:getProperty  name="fraction" property="numerator" /> /
		<jsp:getProperty  name="fraction" property="denominator" />
		</p>
	</body>
</HTML>

文件Fraction.java

package one;
public class Fraction {
    public double number ;   //存放小数
    public long numerator ;  //存放分子
    public long denominator; //存放分母 
    public double getNumber(){
        String numberString = String.valueOf(number);
        String xiaoshuPart = 
        numberString.substring(numberString.indexOf(".")+1);
        return Double.parseDouble("0."+xiaoshuPart);
    }
    public long getNumerator(){
        return numerator;
    }
    public long getDenominator(){
        return denominator;
    }
    public void setNumber(double number){
        this.number = number;
        String numberString = String.valueOf(number);
        String xiaoshuPart = 
        numberString.substring(numberString.indexOf(".")+1);
        int m = xiaoshuPart.length();
        numerator = Long.parseLong(xiaoshuPart); 
        denominator = (long)Math.pow(10,m); 
        long greatCommonDivisor = f(numerator,denominator);
        numerator = numerator/greatCommonDivisor;
        denominator = denominator/greatCommonDivisor;
    }
    private long f(long a,long b) {
      if(a==0) return 1;
      if(a<b) {
         long c = a;
         a = b;
         b = c; 
      }
      long r=a%b;
      while(r!=0) {
         a = b;
         b = r;
         r = a%b;
      } 
      return b;
   }
}

② 运行结果

2.记忆测试

①实验代码

文件ch5_3.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<HTML>
	<body bgcolor = #ffccff>
		<style>
			#textStyle{
				font-family:宋体;font-size:26;color:blue 
			}
		</style>
		<form action="ch5_4.jsp" id ="textStyle" method=post >
		<input type=radio name="grade"  value="5" />初级
		<input type=radio name="grade"  value="7" checked="ok" />中级
		<input type=radio name="grade"  value="10" />高级
		<br><input type="submit" id ="textStyle" value="提交"/>
		<input type="reset" id ="textStyle" value="重置" />
		</form> 
	</body>
</HTML>

 文件ch5_4.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Random" %>
<jsp:useBean id="memory" class="two.Memory" scope="session" />
<HTML>
	<body bgcolor = #ffccff>
		<style>
			#tomStyle{
			font-family:宋体;font-size:36;color:blue 
		}
		</style>
		<%  
		String grade = request.getParameter("grade");
		String testString ="";
		if(grade == null){
			memory.setGrade(memory.getGrade());
		}
		else {
			memory.setGrade(Integer.parseInt(grade));
		}
		if(memory.getIsGivenTestString()== false) {
			memory.giveTestString();
			testString = memory.getTestString();
			memory.setIsGivenTestString(true);
		}
		else if(memory.getIsGivenTestString()== true){
			response.sendRedirect("ch5_5.jsp");
		}
		%>
		<p id = tomStyle>给5秒种记住您看到的字符序列:<br>
		<%= testString %>
		<br>5秒种后,将转到答题页。
		<%  
		response.setHeader("refresh","5");
		%>
		</p>
	</body>
</HTML>

文件ch5_5.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<jsp:useBean id="memory" class="two.Memory" scope="session" />
<HTML>
	<body bgcolor = #ffccff>
		<style>
			#tomStyle{
			font-family:宋体;font-size:26;color:blue 
			}
		</style>
		<form action="ch5_6.jsp" id = tomStyle method=post>
		您记住的字符序列是怎样的,请选择:
		<%
		int n = memory.getGrade();
		memory.setIsGivenTestString(false);
		for(int i=1;i<=n;i++){
		out.print("<br>第"+i+"个字符:");
		out.print("<input type=radio id = tomStyle name=R"+i+" value='★'/>★"+
              "<input type=radio id =tomStyle name=R"+i+" value='●' />●"+ 
              "<input type=radio id =tomStyle name=R"+i+" value='▲' />▲"+ 
              "<input type=radio id =tomStyle name=R"+i+" value='■' />■"+ 
              "<input type=radio id =tomStyle name=R"+i+" value='◆' />◆");
		} 
		%>
		<br><input type="submit"  id=tomStyle value="提交"/>
		<input type="reset" id=tomStyle value="重置" />
		</form> 
	</body>
</HTML>

文件ch5_6.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<jsp:useBean id="memory" class="two.Memory" scope="session" />
<HTML>
	<body bgcolor = white >
		<p style="font-family:宋体;font-size:26;color:blue"> 
		<%
		memory.setIsGivenTestString(false);
		request.setCharacterEncoding("utf-8"); 
		int n = memory.getGrade(); 
		StringBuffer buffer = new StringBuffer();
		for(int i=1;i<=n;i++){
			buffer.append(request.getParameter("R"+i));
			out.print(""+request.getParameter("R"+i));
		}
		String userAnswer = new String(buffer);
		String testString = memory.getTestString();
		if(testString.equals(userAnswer)){
			out.print("您记忆不错");
		}
		else {
			out.print("您没记忆住额!答案是:<br>"+testString);
		}
		%>
		<br><a href = "ch5_4.jsp">返回,继续练习记忆</a>
		<br><a href = "ch5_3.jsp">重新选择级别</a>
		</p>
	</body>
</HTML>

文件Memory.java

package two;
import java.util.ArrayList;
import java.util.Random;
public class Memory {
    static ArrayList<String> list = new  ArrayList<String>();
    static {
        list.add("★");
        list.add("●");
        list.add("▲");
        list.add("■");
        list.add("◆");
    }
    int grade = 5 ;
    String testString; 
    boolean isGivenTestString = false;
    public void setGrade(int n){
        grade = n;
    }
    public int getGrade(){
        return grade;
    }
    public void giveTestString(){
        StringBuffer buffer = new StringBuffer();
        Random random = new Random(); 
        for(int i=0;i<grade;i++) {
          int index = random.nextInt(list.size());
          String str = list.get(index); 
          buffer.append(str);
        }
        testString = new String(buffer);
    }
    public void setIsGivenTestString(boolean b){
        isGivenTestString =b;
    }
    public boolean getIsGivenTestString(){
        return isGivenTestString;
    }
    public String getTestString(){
        return testString;
    }
}

②运行结果

3.成语接龙

①实验代码

文件ch5_7.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="idioms" class="three.ContinueIdioms" scope="application" />
		<style>
			#tomStyle{
				font-family:宋体;font-size:26;color:blue 
			}
		</style>
		<% request.setCharacterEncoding("utf-8");%>
<jsp:setProperty name="idioms" property="nowIdioms" param ="nowIdioms" />
<HTML>
	<body bgcolor = #ffccff>
		<p id = tomStyle>
		目前的接龙情景:<br>
		<textArea id = tomStyle rows=5 cols=38>
		<%= idioms.getAllIdioms() %>
		</textArea><br>
		<form action="" id = tomStyle method = post >
		继续接龙,输入成语:<text  name="nowIdioms" value = 10 />
		<br><input type="text" name ="nowIdioms"  id = tomStyle />
		<input type="submit"  id = tomStyle value="提交"/>
		</form> 
		</p>
	</body>
</HTML>

 文件ContinueIdioms.java

package three;
import java.util.LinkedList;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class ContinueIdioms {
    LinkedList<String> listIdioms ;
    public String nowIdioms;     
    public ContinueIdioms(){
        listIdioms = new LinkedList<String>();
    }
    public synchronized void setNowIdioms(String s){
        nowIdioms = s;
        try{
           String previous = listIdioms.getLast();
           char endChar = previous.charAt(previous.length()-1);
           char startChar = nowIdioms.charAt(0);
           if(startChar == endChar) 
                  listIdioms.add(nowIdioms);
         }
         catch(NoSuchElementException exp){
            listIdioms.add(nowIdioms);
            System.out.println(exp);
         }
    }
    public String getAllIdioms(){
        StringBuffer buffer = new StringBuffer();
        Iterator<String> iterator =listIdioms.iterator();
        if(iterator.hasNext() == false)
           buffer.append("→");
        while(iterator.hasNext()){
           buffer.append(iterator.next()+"→");
        }
        return new String(buffer);
    }
}

②运行结果

四、实验总结

本次实验学习了Javabean的内容掌握使用了requestbean对页面数据的存储。在第二个实验中使用了sessionbean与上一个实验做出了对比,体现了使用bean的方便,最后学习了application bean存储所有用户共享的数据,实现了成语接龙的效果

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值