JSP学习笔记六之JavaBean

接着之前的内容继续下去。接下来是讲解JavaBean。

1.什么是javabean

Javabean是特殊的java类。使用java语言编写的,他的主要特征如下:

   a 提供一个默认的无参的构造函数。

  b 需要被序列化并且实现了Serializable接口。

  c 有一系列的可读写的属性。

  d 有一系列的getter和setter方法。

2.javabean属性

一个JavaBean对象的属性应该是可访问的。这个属性可以是任意合法的Java数据类型,包括自定义Java类。一个JavaBean对象的属性可以是可读写,或只读,或只写。JavaBean对象的属性通过JavaBean实现类中提供的两个方法来访问:

getPropertyName():举例来说,如果属性的名称为myName,那么这个方法的名字就要写成getMyName()来读取这个属性。这个方法也称为访问器

setPropertyName():举例来说,如果属性的名称为myName,那么这个方法的名字就要写成setMyName()来写入这个属性。这个方法也称为写入器。

一个只读的属性只提供getPropertyName()方法,一个只写的属性只提供setPropertyName()方法。

3.如何创建javabean对象

使用普通方式来应用javabean。就像使用普通java类一样。

   a 创建一个web project项目。

   b 在src文件下,创建一个包。在包中创建一个类,满足设计原则即可。

   c 在webRoot文件的index.jsp页面中通过<%@ page import=包名.类名%>。

   d 通过使用new来创建javabean对象的实例

   e 使用set方法进行赋值

   f 使用get方法进行取值。

具体步骤如下图所示:




最后执行的结果如下:


4、使用javabean的动作标签useBeans来实例化对象

常用标签如下:
useBeans 实例化对象
setProperty 设置对象属性值
getProperty 获取对象属性值

代码如下:

<body>
    <jsp:useBean id="myUsers" class="com.wq.Users" scope="page"/>
<h1>使用useBean动作创建javabean的实例</h1>
<% myUsers.setUsername("lulei") ;
       myUsers.setPassword("123456");
    %>
    <hr>
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br>
  </body>

结果如下:


5、<jsp: setProperty>动作、<jsp: getProperty>动作和javaBean的四种作用域

  <jsp:setProperty>动作:给【已经实例化的Javabean对象的属性赋值】,一共有四种形式
1、需要表单提交属性:

<jsp:setProperty name="Javabean实例名" property="*"/>

与之前页面提交的表单的【所有属性进行匹配】,若有与javabean类属性名相同的,则进行赋值。比如表坛提交了username="xxx",而javabean里有username属性,则对其进行赋值

2、需要表单提交属性

<jsp:setPropery name="Javabean实例名" property="javabean属性名" />

对指定的属性进行匹配

3、手动设置属性:

<jsp:setProperty name = "Javabean实例名" property="Javabean属性名" value="BeanValue" />

4、与request参数有关,通过url传参 

<jsp:setProperty name="Javabean实例名" property="propertyName" param="request对象中的参数名" />

 

测试代码如下:

dologin.jsp

<body>
    <jsp:useBean id="myUsers" class="com.wq.Users" scope="page"/>
    <h1>setProperty动作元素</h1>
    <hr>
   <!--根据表单自动匹配所有的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="*"/>  
   --%>
   <!--根据表单匹配部分的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username"/>  
   --%>
   <!--根表单无关,通过手工赋值给属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username" value="lulei"/>
   <jsp:setProperty name="myUsers" property="password" value="888888"/>
   --%>
   <!--通过URL传参数给属性赋值 -->
<!--表单中action属性url传递参数值:action=“dologin.jsp?mypass=999999”-->
   <jsp:setProperty name="myUsers" property="username"/>
   <jsp:setProperty name="myUsers" property="password" param="mypass"/>
   <!-- 使用传统的表达式方式来获取用户名和密码 -->
   <%--     
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br> 
   --%>
   <!-- 使用getProperty方式来获取用户名和密码 -->
      用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
      密码:<jsp:getProperty name="myUsers" property="password"/><br>
   <br>
   <br>
      <a href="testScope.jsp">测试javabean的四个作用域范围</a>
      <% 
//进行请求转发         request.getRequestDispatcher("testScope.jsp").forward(request, response);
      %>
  </body>

这里涉及到了java的动作元素。 java的动作元素:

(1)JSP动作元素为请求处理阶段提供信息。
(2)动作元素遵循XML元素的语法。有一个包含元素名的开始标签,可以有属性、可选内容,以及结束标签。
--------------------------------------------------------------------*----------------------------------------------------------------------------
JSP动作分为以下几类:
(1)与存取JavaBean有关的6个元素。 如:
<jsp:useBean> <jsp:setProperty> <jsp:getProperty>
(2)6个动作元素。 如:
<jsp:include> <jsp:forward> <jsp:param> <jsp:plugin> <jsp:params> <jsp:fallback>
(3)与Document有关的6个元素:
<jsp:root> <jsp:declaration> <jsp:scriptlet> <jsp:expression> <jsp:text> <jsp:output>
(4)用来动态生成XML元素标签的3个动作:
<jsp:attribute> <jsp:body> <jsp:element>
(5)用在Tag File中的2个元素:
<jsp:invoke> <jsp:dobody>

testScope.jsp

<body>
    <h1>Javabean的四个作用域范围</h1>
    <hr>
    <jsp:useBean id="myUsers" class="com.wq.Users" <span style="color:#ff0000;">scope="page"</span>/>
       用户名:<jsp:getProperty name="myUsers" property="username"/><br>
       密码:<jsp:getProperty name="myUsers" property="password"/><br>
    <!-- 使用内置对象获取用户名和密码 -->
    <hr>
   <%-- 
       用户名:<%=((Users)application.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)application.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <%-- 
       用户名:<%=((Users)session.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)session.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <%-- 
       用户名:<%=((Users)request.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)request.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <% 
       String username = "";
       String password = "";
       if(pageContext.getAttribute("myUsers")!=null )
       {
          username = ((Users)pageContext.getAttribute("myUsers")).getUsername();
          password = ((Users)pageContext.getAttribute("myUsers")).getPassword();
       }
       
   %>
    
       用户名:<%=username%><br>
       密码:<%=password%><br>
   
  </body>

结果显示:


page作用域:


application作用域:(记得将所有的Scope设为application)


session作用域:(记得将所有的Scope设为session)


request作用域:(记得将所有的Scope设为request)


最后总结一下四种作用域:

1.page指当前页面有效。在一个jsp页面里有效

2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。

3.Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中

4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用

总结:当数据只需要在下一个forward有用 时,用request就够了;若数据不只是在下一个forward有用 时,就用session。如果是上下文,环境信息之类的变量用application。



  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本篇笔记主要介绍JSP中的EL表达式和JSTL标签库。 一、EL表达式(Expression Language) EL表达式是JSP中一个非常重要的特性,它可以在JSP页面中方便地访问JavaBean中的属性和方法,同时还可以进行一些简单的运算操作。EL表达式的语法非常简单,使用${}表示。例如,我们可以通过${user.name}访问一个为user的JavaBean中的name属性。 EL表达式支持许多运算符,如算数运算符(+、-、*、/、%)、比较运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)等等,还支持一些特殊的运算符,如“empty”用于判断一个对象是否为空,如${empty user}表示判断user对象是否为空。 二、JSTL标签库(JSP Standard Tag Library) JSTL是JSP标准标签库,提供了一组标签和函数,可以方便地实现一些常见的任务,如迭代、条件判断、格式化等等。JSTL标签库包含五个核心标签库: 1.核心标签库(Core Tag Library):提供了一些基本的标签,如if、forEach等等。 2.格式化标签库(Formatting Tag Library):提供了一些标签,用于格式化日期、数字等等。 3.SQL标签库(SQL Tag Library):提供了一些标签,用于执行SQL查询和更新操作。 4.XML标签库(XML Tag Library):提供了一些标签,用于处理XML文档。 5.函数标签库(Functions Tag Library):提供了一些函数,可以用于字符串处理、日期处理等等。 使用JSTL标签库需要在JSP页面中引入相应的标签库,例如: ``` <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ``` 其中,prefix表示标签库的前缀,uri表示标签库的统一资源标识符(URI)。 使用JSTL标签库的语法和EL表达式类似,也是使用${}来引用JavaBean中的属性和方法,同时可以使用JSTL标签来实现一些复杂的逻辑。例如,可以使用<c:if>标签来实现条件判断,如: ``` <c:if test="${user.age > 18}"> <p>成年人</p> </c:if> ``` 以上就是本篇笔记的全部内容,EL表达式和JSTL标签库是JSP中非常重要的特性,掌握它们可以让我们更加方便地开发JSP应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值