9.14 javaBean

本文详细介绍了Servlet中的Applation与JSP中的pageContext的作用及使用方法,包括如何获取真实路径、页面跳转及参数传递等。此外还讲解了JavaBean的封装规则和在JSP中的使用方式。

Applation:整个Servlet的上下文,serlvetContext代表了整个容器的操作

获取完整路径:appliation.getRealPath(“/”);//得到当前虚拟目录下对应的真实路径

       也可以使用  this.getServletContext().getRealPath(“/”);

       尽量用this.getServletContext()来取代appliation

 

pageContextJSP的上下文

       前:pageContext.forward(“xxx.jsp?xx=xxx”);

       后:String xx = pageContext.getRequest().getParameter(“xxx”);

              realPath = <%= pageContext .getServletContext().getRealPath(“/”)%>

 

 

javabean:所有的类必须放在一个包中

               所有的类必须声明为public class,方便被外部访问

               类中所有属性必须封装,即用private声明

               封装的属性要被外部调用的话就要编写对应的settergetter方法

               至少存在一个无参构造方法,被JSP中的标签所使用

 

<%

              xxBean xx = new xxBean();

              ss.setxx(“xxx”);

%>

<%=xx.getxx()%>

 

       <jsp:useBean id=”实例化对象名称” scope=”保存范围” class=”.类名称”/>

       Scope: pagerequestsessionapplication

       < jsp:useBean id=”xx” scope=”page” class=”xx.xx.xxBean”/>

<%

              ss.setxx(“xxx”);

%>

<%=xx.getxx()%>

 

如果嫌每次配置javaBean都要重启服务器麻烦就可以设置自动加载,但只适用与开发时,真正运行时会拖慢速度

<Context path=”/jordan” docBase=”D:\jordanDemo” reloadable=”true”/>

 

<jsp:setProperty name=”” property=””>

Name:对应着<jsp:useBean>中声明的id属性

Property:表示要操作的属性

javaBean保存范围:在<jsp:useBean>指令上存在scope属性

       page:一页

       request:一次服务器跳转的范围中

       session:一个用户操作范围中,重新打开浏览器失效

       application:整个服务器上保存,服务器关闭失效

### Python 编程练习 9.14:彩票模拟 在 Python 编程实践中,第 9 章主要介绍面向对象编程的基本概念,并通过实际例子帮助理解类和对象的使用。练习 9.14 是一个与“彩票”相关的编程任务,旨在通过随机选择机制模拟中奖过程。 #### 模拟思路 目标是创建一个程序来模拟彩票抽奖的过程,并验证你的彩票是否中奖。基本步骤包括: 1. **定义候选号码**:可以包含数字或字母。 2. **生成中奖号码**:从候选列表中随机选择若干个唯一元素。 3. **生成用户彩票**:每次模拟一张彩票,判断其是否与中奖号码匹配。 4. **计算尝试次数**:统计多少次尝试后才中奖。 #### 示例代码 以下是一个完整的实现示例: ```python from random import choice def generate_winning_numbers(pool, count): """从给定池中随机选出指定数量的不重复中奖号码""" winning_numbers = [] while len(winning_numbers) < count: number = choice(pool) if number not in winning_numbers: winning_numbers.append(number) return winning_numbers def check_ticket(my_ticket, winning_numbers): """检查用户的彩票是否中奖""" for num in my_ticket: if num not in winning_numbers: return False return True def simulate_lottery(pool, ticket, attempts=1_000_000): """模拟多次抽奖,直到中奖为止""" winning_numbers = generate_winning_numbers(pool, len(ticket)) print(f"中奖号码是: {winning_numbers}") for attempt in range(1, attempts + 1): if check_ticket(ticket, winning_numbers): print(f"恭喜!你在第 {attempt} 次尝试中中奖了!") break else: winning_numbers = generate_winning_numbers(pool, len(ticket)) # 定义候选号码池和用户彩票 lottery_pool = [str(i) for i in range(10)] + [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;] my_ticket = [&#39;7&#39;, &#39;d&#39;, &#39;2&#39;, &#39;a&#39;] # 开始模拟 simulate_lottery(lottery_pool, my_ticket) ``` #### 关键点说明 - **`generate_winning_numbers()`** 函数用于生成一组唯一的中奖号码。 - **`check_ticket()`** 函数负责判断用户的彩票是否与中奖号码完全匹配。 - **`simulate_lottery()`** 函数不断重新生成中奖号码并检查用户彩票,直到中奖为止。 - 此外,该程序允许设置最大尝试次数以避免无限循环[^3]。 #### 扩展挑战 你可以进一步优化这个程序: - 支持多种彩票类型(如不同长度的号码)。 - 统计中奖概率。 - 使用 `random.sample()` 替代手动去重逻辑,提高效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值