Javabean基础知识
来源:互联网 发布:女生香水 知乎 编辑:程序博客网 时间:2024/06/03 17:17
Javabean简介
Javabeans就是符合某种特定的规范的Java类。使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。
Javabean的设计原则
是一个公有的类
包含无参的公有构造方法
属性是私有的
属性使用getter和setter方法
JSP动作元素
JSP动作元素,动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。
有五类JSP动作元素
第一类是与存取JavaBean有关的,包括:
<jsp:useBean><jsp:setProperty><jsp:getProperty>
第二类是JSP1.2就开始有的基本元素,包括6个动作元素
<jsp:include><jsp:forward><jsp:param><jsp:plugin><jsp:params><jsp:fallback>
第三类是JSP2.0新增加的元素,主要与JSP Document有关,包括六个元素
<jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>
第四类是JSP2.0新增加的元素,主要用来动态生成XML元素标签的值,包括3个动作
<jsp:attribute><jsp:body><jsp:element>
第五类是JSP2.0新增加的元素,主要用在Tag File中,有两个元素
<jsp:invoke><jsp:dobody>
我们要看的就是第一类,与存取JavaBean有关的
在JSP页面中如何使用Javabeans
1.像使用普通java类一样,创建javabean实例。
建一个用户类,遵循javabean的设计原则
package com.po;/* * 用户类 * */public class Users { private String username;//用户名 private String password;//密码 //保留此默认的构造方法 public Users() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
在jsp页面中使用的时候,可以使用page的import属性将它导入
<%@ page import="com.po.Users" %>
然后是使用:
<% Users user = new Users(); user.setUsername("admin"); //设置用户名 user.setPassword("123456");//设置密码 %> <h1>使用普通方式创建javabean的实例</h1> <hr> 用户名:<%=user.getUsername() %><br> 密码:<%=user.getPassword() %><br>
2.在JSP页面中通常使用jsp动作标签使用javabean。
useBeans动作
setProperty动作
getProperty动作
1.useBean动作标签
<jsp:useBeans>
作用:在jsp页面中实例化或者在指定范围内使用javabean:
<jsp:useBean id="标示符" class="java类名" scope="作用范围"/>
这里就不需要page指令来引入
代码如下:
<body> <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/> <h1>使用useBean动作创建javabean的实例</h1> <hr> 用户名:<%=myUsers.getUsername() %><br> 密码:<%=myUsers.getPassword() %><br> </body>
不过这里获得的值都为null,因为没有对username和password进行初始化,可以用setProperty来初始化。
2.setProperty动作标签
<jsp:setProperty>
作用:给已经实例化的Javabean对象的属性赋值,一共有四种形式
<jsp:setProperty name="JavaBean实例名" property="*"/>(跟表单关联)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名"/>(跟表单关联)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue"/>(手工设置)<jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中的参数名"/>(跟request参数关联)
第一种形式,name是我们要实例化JavaBean的id或者说名字,property的 * 表示要根据表单提交过来的参数的名字和JavaBean中的属性的名字进行一一匹配,如果匹配上了就自动赋值。
既然和表单相关联,所以要在项目中创建一个表单,可以创建一个用户登录界面
<body> <h1>系统登录</h1> <hr> <form name="loginForm" action="dologin.jsp?mypass=999999" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username" value=""/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password" value=""/></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="登录"/></td> </tr> </table> </form> </body>
然后是dologin.jsp页面,里边重点讲解setProperty动作元素的使用。
要用到JavaBean所以要用useBean来实例化一个对象,同时后边还要显示用户名和密码
<body> <jsp:useBean id="myUsers" class="com.po.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="lisi"/> <jsp:setProperty name="myUsers" property="password" value="888888"/> --%> <!--通过URL传参数给属性赋值 --> <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>
注意setProperty动作标签里的name和useBean动作标签的内容是一样的。
第一种方式里,这里边会到User类中看是否有对应的属性username和password,如果有就会自动调用set方法,将表单提交过来的用户名和密码给这个属性来赋值。
第二种方式没有用 * ,所以不会自动匹配所有属性,对部分属性进行匹配。
第三种方式的话,表单上边写的是没有作用的,username和password都给定了。
第四种,param是通过url地址传参的方式,在login.jsp中,传过来一个参数mypass,这样用户名是自己写的,密码就是这个mypass的值。
3.getProperty动作标签
<jsp:getProperty>
作用:获取指定Javabean对象的属性值。
<jsp:getProperty name="JavaBean实例名" property="属性名"/>
在前边的例子的代码中已经实现了,详情看前边的代码。
JavaBean四个作用域范围
说明:使用useBeans的scope属性可以用力啊指定javabean的作用范围
作用域范围有四种,如下:
page:仅在当期页面有效
request:可以通过HttpRequest.getAttribute()方法取得JavaBean对象
session:可以通过HttpSession.getAttribute()方法取得JavaBean对象
application:可以通过application.getAttribute()方法取得JavaBean对象
新建一个testScope.jsp来测试作用范围
在前边的dologin.jsp下边加一个超链接,链接到testScope.jsp
在testScope.jsp中新建一个javabean。若在dologin设置作用范围是application,这是最大的(全局),然后在testScope也设置application,那么在testScope中可以获得用户名和密码。获取用户名和密码的时候也可以通过getProperty来实现,也可以用内置对象获取(需要用page指令将User引入)。
不仅是application,都写为session也可以。
request不可以,因为超链接等于是一次请求重定向,请求重定向就相当于发送了一次新的请求,而这个请求里并没有myUsers这个JavaBean实例。可以使用服务器内部转发来实现,request.getRequestDispatcher("testScope.jsp").forward(request, response);
。
page的范围是最小的,只在当前的页面有效,所以不管是请求重定向还是请求转发都不行。
<body> <jsp:useBean id="myUsers" class="com.po.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="lisi"/> <jsp:setProperty name="myUsers" property="password" value="888888"/> --%> <!--通过URL传参数给属性赋值 --> <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>
- Javabean基础知识
- JavaBean 基础知识-学习
- 有关JavaBean的基础知识
- JavaBean 基础知识梳理
- JSP+Servlet+JavaBean基础知识
- 常见乱码解决以及javaBean基础知识
- 【问题】JSP常见乱码解决以及javaBean基础知识
- JavaBean
- JAVABEAN
- JavaBean
- javabean
- JAVABEAN
- javabean
- javabean
- JavaBean
- JavaBean
- javabean
- JavaBean
- 蒟蒻复习之—–二进制
- Python6--函数
- 算法竞赛入门经典(第2版)-刘汝佳-第九、十一章例题解题源码(C++语言)(部分)
- 关于在eclipse中编写jsp代码时没有智能提示的问题
- Linux Shell经典面试题(其四)
- Javabean基础知识
- 关于Android设置控件margin无效的解决办法
- 第九、十一章 动态规划、图论相关知识点总结
- 三个修饰符(abstract,static,final)
- zcmu-1979
- 游戏人工智能读书笔记
- LeetCode [53. Maximum Subarray]
- 如何使用UDDI服务?
- 习题2-6 排列(permutation)