jsp jSP中<jsp:setProperty>动作指令
2017-05-25 11:27
344 查看
<jsp:setProperty>标签用来设置已经实例化的JavaBean对象的属性.设置setProperty标签属性值有三种语法格式.
1.通过表达式或字符串设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" value="<%=expression%>|字符串" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值,value表示设置属性的表达式或者字符串.
如果将表达式的值设置为JavaBean属性的值,表达式值的类型必须和JavaBean属性的类型一致;如果将字符串设置为JavaBean属性的值,这个字符串将会自动转化成JavaBean属性的类型.
比如:
<HTML>
<BODY>
<%@ page language="java" %>
<jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
<jsp:setProperty name="taxbean" property="product" value="A002" />
<jsp:setProperty name="taxbean" property="rate" value="17" />
产品: <jsp:getProperty name="taxbean" property="product">
<br>
税率:<jsp:getProperty name="taxbean" property="rate">
</BODY>
</HTML>
2.通过HTTP表单的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="*" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property为星号,表示不用再具体指定JavaBean属性的值将对应表单中的那个参数,系统会自动根据名字进行匹配.但要求表单参数的名字必须与JavaBean中属性的名字完全相同.
3.通过request的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" param="paramName" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值;param表示表单中的参数名字.此种格式通过request获得表单中的参数值,JSP引擎自动将request获取的参数值传递给JavaBean中对应的属性.但要求request参数名字必须与JavaBean中的属性名字一致.
如:使用JavaBean验证客户身份
程序的流程是这样的:当用户在用户登录页面Usebeanexample.jsp填完登录信息后,把信息提交给验证页面Usebean.jsp,验证页面加载JavaBean,由JavaBean进行连接数据库,验证用户身份等逻辑操作.这样就实现了表示层和业务逻辑层的完全分离,符合实际开发规范的要求.用户输入登录信息后进入验证页面,在验证页面中使用useBean标签加载JavaBean对象,然后使用setProperty标签,通过接收request的参数设置Javabean的属性值,最后调用AccountValidate()方法,根据属性值执行数据库查询语句,根据查询结果判断用户是否合法.这个例子体现了JavaBean的优点是简化了JSP代码,界面代码和逻辑代码互相分离,便于程序员查看和调试.
/////////Usebeanexample.jsp
<HTML>
<HEAD><TITLE>User validation</TITLE></HEAD>
<BODY bgcolor="#fffffr" >
<FORM method="post" action="Usebean.jsp">
<TABLE border="0" cellspacing="1" cellpadding="5">
<TR>
<TD width="100"> </TD>
<TD align="right">
<H1><FONT color="red">Welcome to Earnest bank</FONT></H1></TD>
</TR>
<TR>
<TD width="100" align="right">
<B><FONT color="blue">Account ID:</FONT></B>
</TD>
<TD align="left">
<INPUT type="text" name="sAccountID" size="30"></TD>
</TR>
<TR>
<TD width="100" align="right">
<B><FONT color="blue">Pin Number</FONT></B></TD>
<TD align="left">
<INPUT type="password" name="sPin" size="30"></TD>
</TR>
<TR>
<TD width="100" </TD>
<TD align="right"></TD>
</TR>
<TR>
<TD width="100"> </TD>
<TD align="left">
<INPUT type="submit" value="Submit" ></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Usebean.jsp
<%@ page import="java.util.*" %>
<%@ page language = "java" %>
"<jsp:useBean>:用来寻找与装入现有bean
–使用的属性是id, class, scope, 及 beanName
重用JSP 页面中Bean构件 :
–用<jsp:useBean>动作,把加入到JSP页面的bean构件的引用加进去中
–指出动作元素的 id, 作用域, 及类属性
–用作用域属性指出对象的生命期
<jsp:useBean id="BA" scope="application" class="test.BankAccount" />
"<jsp:setProperty>:用来设置所指bean的属性
–使用的属性是名、属性、值、及参数
<jsp:setProperty name="BA" property="sAccountID" param="sAccountID" />
<jsp:setProperty name="BA" property="sPin" param="sPin" />
<HTML>
<HEAD><TITLE>RESULT PAGE</TITLE></HEAD>
<BODY>
<%
String sAccountID= BA.getsAccountID();
String sPin = BA.getsPin();
boolean validate = BA.AccountValidate();
if(validate == true)
{
out.println("The User is validated");
}
else
{
out.println("The User is not valid");
}
%>
</BODY>
</HTML>
BankAccount.java
import java.io.*;
import java.sql.*;
public class BankAccount
{
private String sAccountID=" ";
private String sPin=" ";
private boolean AccountValidate;
Connection connect = null;
Statement state = null;
ResultSet result = null;
public void setsAccountID(String sAccountID)
{
System.out.println("Inside setter method"+sAccountID);
this.sAccountID=sAccountID;
}
public void setsPin(String sPin)
{
this.sPin=sPin;
}
public String getsAccountID()
{
return this.sAccountID;
}
public String getsPin()
{
return sPin;
}
public BankAccount() throws ClassNotFoundException
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
public boolean AccountValidate()
{
boolean validate=false;
String sPinNo="";
try{
sAccountID=getsAccountID();
sPin=getsPin();
System.out.println("Inside VALIDATE method"+sAccountID);
connect=DriverManager.getConnection("jdbc:odbc:MyDataSource","user1","");
String strQuery = "Select cPin_no from Login where cAccount_id='"+sAccountID+"'" ;
System.out.println("Query: "+strQuery);
state = connect.createStatement();
ResultSet result = state.executeQuery(strQuery);
while(result.next())
{
sPinNo = result.getString(1);
System.out.println("Inside Result method"+sPinNo+sPin);
}
sPinNo=sPinNo.trim();
sPin=sPin.trim();
if(sPinNo.equals(sPin))
{
validate
= true;
}
}
catch(Exception e)
{
System.out.println("SQL Exception is caught.");
}
return validate;
}
}
1.通过表达式或字符串设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" value="<%=expression%>|字符串" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值,value表示设置属性的表达式或者字符串.
如果将表达式的值设置为JavaBean属性的值,表达式值的类型必须和JavaBean属性的类型一致;如果将字符串设置为JavaBean属性的值,这个字符串将会自动转化成JavaBean属性的类型.
比如:
<HTML>
<BODY>
<%@ page language="java" %>
<jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
<jsp:setProperty name="taxbean" property="product" value="A002" />
<jsp:setProperty name="taxbean" property="rate" value="17" />
产品: <jsp:getProperty name="taxbean" property="product">
<br>
税率:<jsp:getProperty name="taxbean" property="rate">
</BODY>
</HTML>
2.通过HTTP表单的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="*" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property为星号,表示不用再具体指定JavaBean属性的值将对应表单中的那个参数,系统会自动根据名字进行匹配.但要求表单参数的名字必须与JavaBean中属性的名字完全相同.
3.通过request的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" param="paramName" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值;param表示表单中的参数名字.此种格式通过request获得表单中的参数值,JSP引擎自动将request获取的参数值传递给JavaBean中对应的属性.但要求request参数名字必须与JavaBean中的属性名字一致.
如:使用JavaBean验证客户身份
程序的流程是这样的:当用户在用户登录页面Usebeanexample.jsp填完登录信息后,把信息提交给验证页面Usebean.jsp,验证页面加载JavaBean,由JavaBean进行连接数据库,验证用户身份等逻辑操作.这样就实现了表示层和业务逻辑层的完全分离,符合实际开发规范的要求.用户输入登录信息后进入验证页面,在验证页面中使用useBean标签加载JavaBean对象,然后使用setProperty标签,通过接收request的参数设置Javabean的属性值,最后调用AccountValidate()方法,根据属性值执行数据库查询语句,根据查询结果判断用户是否合法.这个例子体现了JavaBean的优点是简化了JSP代码,界面代码和逻辑代码互相分离,便于程序员查看和调试.
/////////Usebeanexample.jsp
<HTML>
<HEAD><TITLE>User validation</TITLE></HEAD>
<BODY bgcolor="#fffffr" >
<FORM method="post" action="Usebean.jsp">
<TABLE border="0" cellspacing="1" cellpadding="5">
<TR>
<TD width="100"> </TD>
<TD align="right">
<H1><FONT color="red">Welcome to Earnest bank</FONT></H1></TD>
</TR>
<TR>
<TD width="100" align="right">
<B><FONT color="blue">Account ID:</FONT></B>
</TD>
<TD align="left">
<INPUT type="text" name="sAccountID" size="30"></TD>
</TR>
<TR>
<TD width="100" align="right">
<B><FONT color="blue">Pin Number</FONT></B></TD>
<TD align="left">
<INPUT type="password" name="sPin" size="30"></TD>
</TR>
<TR>
<TD width="100" </TD>
<TD align="right"></TD>
</TR>
<TR>
<TD width="100"> </TD>
<TD align="left">
<INPUT type="submit" value="Submit" ></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Usebean.jsp
<%@ page import="java.util.*" %>
<%@ page language = "java" %>
"<jsp:useBean>:用来寻找与装入现有bean
–使用的属性是id, class, scope, 及 beanName
重用JSP 页面中Bean构件 :
–用<jsp:useBean>动作,把加入到JSP页面的bean构件的引用加进去中
–指出动作元素的 id, 作用域, 及类属性
–用作用域属性指出对象的生命期
<jsp:useBean id="BA" scope="application" class="test.BankAccount" />
"<jsp:setProperty>:用来设置所指bean的属性
–使用的属性是名、属性、值、及参数
<jsp:setProperty name="BA" property="sAccountID" param="sAccountID" />
<jsp:setProperty name="BA" property="sPin" param="sPin" />
<HTML>
<HEAD><TITLE>RESULT PAGE</TITLE></HEAD>
<BODY>
<%
String sAccountID= BA.getsAccountID();
String sPin = BA.getsPin();
boolean validate = BA.AccountValidate();
if(validate == true)
{
out.println("The User is validated");
}
else
{
out.println("The User is not valid");
}
%>
</BODY>
</HTML>
BankAccount.java
import java.io.*;
import java.sql.*;
public class BankAccount
{
private String sAccountID=" ";
private String sPin=" ";
private boolean AccountValidate;
Connection connect = null;
Statement state = null;
ResultSet result = null;
public void setsAccountID(String sAccountID)
{
System.out.println("Inside setter method"+sAccountID);
this.sAccountID=sAccountID;
}
public void setsPin(String sPin)
{
this.sPin=sPin;
}
public String getsAccountID()
{
return this.sAccountID;
}
public String getsPin()
{
return sPin;
}
public BankAccount() throws ClassNotFoundException
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
public boolean AccountValidate()
{
boolean validate=false;
String sPinNo="";
try{
sAccountID=getsAccountID();
sPin=getsPin();
System.out.println("Inside VALIDATE method"+sAccountID);
connect=DriverManager.getConnection("jdbc:odbc:MyDataSource","user1","");
String strQuery = "Select cPin_no from Login where cAccount_id='"+sAccountID+"'" ;
System.out.println("Query: "+strQuery);
state = connect.createStatement();
ResultSet result = state.executeQuery(strQuery);
while(result.next())
{
sPinNo = result.getString(1);
System.out.println("Inside Result method"+sPinNo+sPin);
}
sPinNo=sPinNo.trim();
sPin=sPin.trim();
if(sPinNo.equals(sPin))
{
validate
= true;
}
}
catch(Exception e)
{
System.out.println("SQL Exception is caught.");
}
return validate;
}
}
相关文章推荐
- jsp的6个动作(<jsp:include><jsp:forward><jsp:param><jsp:useBean><jsp:setProperty><jsp:getProperty>)
- <jsp:setProperty property="*">的快捷访问方式
- jsp动作元素<jsp:include page="">与指令元素<%include file=""%>的区别
- <jsp:setProperty>
- <jsp:setProperty>
- javaBean=====jsp标签之<jsp:setProperty> <jsp:getProperty>
- <jsp:setproperty>详解
- 设置属性<jsp:setProperty>
- <jsp:setProperty>
- JSP的基本语法之include指令与<jsp:include>动作标识的区别
- (三十二):设置属性:<jsp:setProperty> (JSP学习第九天)
- jsp的<jsp:setProperty>动作元素的value和param属性的区别。
- javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Invalid property in <set>: "age2"
- JavaBean与Jsp、在JSP中使用JavaBean(<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签)
- < jsp:setProperty>元素使用全解
- JavaBean中的<jsp:getProperty>标签与<jsp:setProperty>标签
- JSP标签的<jsp:useBean>和<jsp:setProperty><jsp:getProperty>的使用
- [JSP]<%@include%>指令与<jsp:include>动作区别
- Include指令和<jsp:include>两种动作表示的区别
- 关于jsp中使用 <jsp:userBean/> <jsp:setProperty/> <jsp:getProperty/>