您的位置:首页 > 运维架构

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;

              }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: