`

JavaBean

    博客分类:
  • web
 
阅读更多

一、JavaBean出现的目的

由于只用JSP开发会发现使用了很多的Scriptlet(java脚本),会使得jsp文件非常混乱。如果使用JavaBean,则可以大大减少JSP中代码量。JSP的理想状态是只负责显示,而不负责处理。

二、JavaBean介绍

JavaBean说的通俗点就是一个Java类用于JSP中。通过<jsp:useBean>或者import导入。

JavaBean导入的类的约定:

(1)类必须是public的;

(2)必须有无参构造;

(3)属性必须是private的;

(4)必须有get和set方法,类的字段必须通过get和set方法来访问。

三、JavaBean存放位置

在tomcat中的理想目录结构如下:



 

JavaBean存放在WEB-INF/classes内。

注意:

(1)每次修改classes文件或web.xml后必须要重启服务器。

如果觉得很麻烦,则在开发过程中可以通过在Server.xml中设置虚拟目录的位置添加:

<Context path="..." docBase="..." reloadable="true"/>,这样就会变成自动导入模式,不必重启服务器。

但是有一个缺点,就是服务器必须时刻监视,会降低性能。

(2)在classes中放入的是class文件。

(3)类必须要有所在的包。

四、<jsp:useBean>用法:

一般的形式:<jsp:useBean id="实例化名称" scope="page" class="包.类名"/>,id是实例化对象;scope中可以是

(1)page:在一页中保存

(2)request:服务器端跳转仍保存;

(3)session:跳转仍保存;

(4)application:服务器没有关闭仍保存;


class为实例化对象的类的完整名称;

使用<jsp:useBean>的好处是自动帮助你创建一个名为id的值的对象。

注意:JavaBean中一定要有无参构造函数。

五、<jsp:setProperty>用法

一般形式有四种:

(1)<jsp:setProperty name="实例化名称" property="*"/>:自动调用set方法;

(2)<jsp:setProperty name="实例化名称" property="name1"/>:对于name1属性自动调用set方法;

(3)<jsp:setProperty name="实例化名称" property="name1" value="value1"/>:对于name1属性赋予value1值;

(4)<jsp:setProperty name="实例化名称" property="name1" param="param1"/>:把param1的值赋给name1属性;

但是一般使用第一种方法最多。

六、<jsp:getProperty>用法

一般形式:<jsp:getProperty name="c1" propety="name1"/>自动调用c1对象的getName1()方法,并返回;

其实效果和getter方法是一样的;

七、JavaBean删除

通过pageConext.removeAttribute("JavaBean名称");删除scope为page的JavaBean对象。依次类推。
 

八、有了JavaBean以后,我们怎么在JSP页面中访问它呢?

方法有2种: 直接访问JSP标签访问 (不过我们推荐通过标签来访问)
1)直接访问
a) 声明bean
在页面顶部导入JavaBean类: <%@ page import="mytrain.formbean.userBean" %>
在JSP段实例化类: <% userBean user = new userBean(); %>
b) 访问bean
<% user.setXXX(aa); %>
<%=user.getXXX();%>
2)标签访问(推荐)
a) 声明bean
使用userBean标签:
<jsp:useBean id="user" class="mytrain.formbean.userBean"/>
b) 访问bean
通过setProperty标签来设置:<jsp:setProperty name="user" property="name" param="mUserName"/>
通过getProperty标签来取得:<jsp:getProperty name="user" property="name"/>
下面我们来看一下完整的代码。

package mytrain.formbean;

public class UserBean {	
	
	private String name;
	private String password;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 login.html:

<%@ page language="java" pageEncoding="GBK"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>表单Bean例子2</title>
	</head>

	<body>

		<form action="register.jsp" method="post">

			用户名:
			<input type="text" name="mUserName" size="20">
			<br>


			密码:
			<input type="password" name="mPassword" size="20">
			<br>

			<input type=submit value="submit" />

		</form>



	</body>
</html>

 标签访问法:register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		
	</head>

	<body>
		<jsp:useBean id="user" class="mytrain.formbean.UserBean" />
		<jsp:setProperty name="user" property="name" param="mUserName" />
		<jsp:setProperty name="user" property="password" param="mPassword" />

		<hr />

		用户名:<jsp:getProperty name="user" property="name" />
		<br>
		密 码:<jsp:getProperty name="user" property="password" />


	</body>
</html>

 

 标签访问法:register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="mytrain.formbean.UserBean" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

	</head>

	<body>
		<%
			UserBean user = new UserBean();
			user.setName(request.getParameter("mUserName"));
			user.setPassword(request.getParameter("mPassword"));
		%>


		<hr />

		用户名:<%=user.getName()%>
		<br>
		密 码:<%=user.getPassword()%>



	</body>
</html>

 

  • 大小: 27.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics