<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE劍俠行

    直覺我的J2EE應用生涯,打造我心中的一把利劍。

    常用鏈接

    統計

    技術鏈接

    最新評論

    struts表單 vs JSTL表現之多條件查詢示例

    ??? struts表單主要是利用actionform來取得JSP頁面所有的request的,所有的Struts標簽無非在取得request當中的所有INPUT,并賦值回標簽值的,同理,JSTL能夠在JSP表單當中輕易的表現要輸出的結果。
    ??? 如果你是高手,你就知道這個標題有誤,是的,struts表單與JSTL表現沒有可比性,但是如果我們要在實現一個多條件的查詢頁面時,這個比較就比較有效了。
    ??? 我不妨比較一下利用struts表單的查詢實現 和 利用JSTL做為表現而實現的查詢功能有什么不同,讓讀者尋其方便。
    ??? 示例說明:
    ??? 用戶表-USER
    ??? username? 用戶名稱
    ??? loginid?? 登錄ID
    ??? sex?????? 性別
    ??? 一、利用struts表單的查詢實現
    ??????? 實現步驟:
    ??????? 創(chuàng)建多條件的序列化對象(java)->在struts.config當中申明actionform->Action當中實現->輸出結果
    ???????
    ????/**?The?value?of?the?simple?userName?property.?*/
    ????
    private?java.lang.String?userName;
    ????
    /**?The?value?of?the?simple?loginId?property.?*/
    ????
    private?java.lang.String?loginId;
    ????
    /**?The?value?of?the?simple?sex?property.?*/
    ????
    private?java.lang.String?sex;
    ????
    /**
    ?????*?Return?the?value?of?the?USER_NAME?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getUserName()
    ????{
    ????????
    return?this.userName;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?USER_NAME?column.
    ?????*?
    @param?userName
    ?????
    */
    ????
    public?void?setUserName(java.lang.String?userName)
    ????{
    ????????
    this.userName?=?userName;
    ????
    /**
    ?????*?Return?the?value?of?the?LOGIN_ID?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getLoginId()
    ????{
    ????????
    return?this.loginId;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?LOGIN_ID?column.
    ?????*?
    @param?loginId
    ?????
    */
    ????
    public?void?setLoginId(java.lang.String?loginId)
    ????{
    ????????
    this.loginId?=?loginId;
    ????}
    ????
    /**
    ?????*?Return?the?value?of?the?sex?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getSex()
    ????{
    ????????
    return?this.sex;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?sex?column.
    ?????*?
    @param?loginId
    ?????
    */
    ????
    public?void?setSex(java.lang.String?sex)
    ????{
    ????????
    this.sex?=?sex;
    ????}
    <!-- struts_fonfig -->
    ???????
    <form-bean?name="UserActionForm"?type="org.apache.struts.validator.DynaValidatorForm">
    <form-property?name="userCondition"?type="com.antbee.searchCondition.UserFindCondition"?/>????????
    ????????
    </form-bean>
    Action當中
    DynaValidatorForm?UserForm?=?(DynaValidatorForm)?form;
    ????????UserFindCondition?Condition?
    =?(UserFindCondition)?UserActionForm
    ????????????????.get(
    "userCondition");//?取得查詢條件
    List?user?=?userManager.find(Condition,
    ????????????????(iCurPageNo?
    -?1)?*?pageCon.PAGE_SIZE,?pageCon.PAGE_SIZE);//呵呵,加入了hibernate的分頁
    具體實現:
    ????public?List?find(UserFindCondition?Condition,?int?begin,
    ????????????
    int?count)?{
    ????????StringBuffer?sql?
    =?new?StringBuffer("from?User?as?a?where?1=1");??????????????
    ? ? ? ?
    if?(Condition?!=?null)?{
    ????????????makeSql(sql,?shipmentFindCondition);
    ????????}
    ????????String?fsql?
    =?sql.toString();
    ????????Query?query?
    =?this.getSession().createQuery(fsql);
    ????????
    if?(Condition?!=?null)?{
    ????????????setParameter(query,?Condition);
    ????????}
    ????????query.setFirstResult(begin);
    ????????query.setMaxResults(count);
    ????????List?tt?
    =?query.list();
    ????????
    return?tt;
    ????}

    --
    ??? /**
    ??? ?* 根據條件生成一個sql語句
    ??? ?*
    ??? ?* @author 和
    ??? ?* @param sql
    ??? ?*??????????? 初始的sql語句(一般為select a from A as a where 1=1)
    ??? ?* @param condition
    ??? ?*??????????? 查詢的條件
    ??? ?* @return
    ??? ?* @version 1.0
    ??? ?*/
    private
    ?void?makeSql(StringBuffer?sql, UserFindCondition?condition)?{
    ????????
    if?(condition.getUsername()?!=?null
    ????????????????
    &&?!condition.getUsername().toString().equals(""))?{
    ????????????sql
    ????????????????????.append(
    "?and a.username like?:username");
    ????????}

    ????????
    if?(condition.getLoginid()?!=?null
    ????????????????
    &&?!condition.getLoginid(().equals(""))?{
    ????????????sql
    ????????????????????.append(
    "?and a.loginid( =?:loginid(");
    ????????}

    ????????
    if?(condition.getSex()?!=?null
    ????????????????
    &&?!condition.getSex().equals(""))?{
    ????????????sql.append(
    "?and a.sex =?:sex");
    ????????}


    ????}

    ????
    /**
    ?????*?根據條件設置query的值
    ?????*?
    ?????*?
    @author?和
    ?????*?
    @param?query
    ?????*????????????一個hibernate的Query對象
    ?????*?
    @param?condition
    ?????*????????????查詢的條件
    ?????*?
    @return
    ?????*?
    @version?1.0
    ?????
    */
    ????
    private?void?setParameter(Query?query, UserFindCondition?condition)?{

    ????????
    if?(condition.getUsername()?!=?null
    ????????????????
    &&?!condition.getUsername().equals(""))?{
    ????????????query.setString(
    "username",?"%"?+?condition.getUsername()
    ????????????????????
    +?"%");
    ????????}

    ????????
    if?(condition.getLoginid()?!=?null
    ????????????????
    &&?!condition.getLoginid().equals(""))?{
    ????????????query.setString(
    "loginid",?condition.getLoginid());
    ????????}

    ????????
    if?(condition.getSex()?!=?null
    ????????????????
    &&?!condition.getSex().equals(""))?{
    ????????????query.setString(
    "sex",?condition.getSex());
    ????????}?????

    ????}

    呵呵,笑死人了,這個方法很通用,我才在我的第二個項目當中才用到,真是可惜,當然了,使用Actionform有一個毛病就是對date類型要轉換成STRING類型來處理,這是actionform的一個死穴。還有對Actionform不能夠重置,只能夠回來從前。不知道這群設計者怎么想的,真是由于這一點,所以我們有必要使用最原始的方法來解決問題了。使用頁面當中的input,我們來拼request如何?
    ?? 二、利用JSTL做為表現而實現的查詢功能
    ???? 步驟:在JSP頁面布置很多的input,當然,你可以加入value了。(省略了...)
    ?????????? 創(chuàng)建查詢條件的序列化對象(同樣user.java)
    ?????????? 在action當中拼個condition了,做為查詢條件,后面的處理類同第一種方式。
    ?????UserSearchCondition?userSearchCondition?=?null;
    ?????userSearchCondition?
    =?makeUserSearchCondition(request);

    private UserSearchCondition?makeUserSearchCondition(HttpServletRequest?request)?throws?Exception{
    ???????
    UserSearchCondition userSearchCondition?=?new?OrderSearchCondition();
    ????????String username
    =?request.getParameter("Username");
    ????????String loginid
    =?request.getParameter("Loginid");
    ????????String sex
    =?request.getParameter("Sex");??
    ???????

    ????????????????
    ????????
    if(username!=?null?&&?!username.trim().equals("")){
    ???????????
    usernameSearchCondition.setUsername(username);
    ????????}
    ????????
    ????????
    if(loginid? !=?null?&&?!loginid.trim().equals("")){
    ??????????? userSearchCondition.set
    Loginid (loginid );
    ????????}
    ????????
    ????????
    if(sex !=?null?&&?!sex.trim().equals("")){????????
    ??????????? userSearchCondition.setSex(
    sex);
    ????????}??????

    ????????
    ????????
    return userSearchCondition;
    ????}

    ???? 以后的方法,我就不用再做舉例了吧,可以參考如上第一種方法的實現.
    ???? 第二種方法的好處就是:在頁面上比較好控制,比如重置,又比如日期性數據等。
    ???? (所有過程當中的代碼沒有經過測試,只是說明這種方法而已)

    posted on 2006-07-21 11:20 @家軍 閱讀(2711) 評論(1)  編輯  收藏 所屬分類: J2EE技術類

    評論

    # re: struts表單 vs JSTL表現之多條件查詢示例[未登錄] 2008-05-23 12:00 aa

    qqq  回復  更多評論   

    主站蜘蛛池模板: 亚洲人成无码网站在线观看| 亚洲欧洲综合在线| 精品亚洲成A人在线观看青青| 精品无码免费专区毛片| 亚洲色欲www综合网| 99re6热视频精品免费观看| 亚洲综合激情九月婷婷| 亚洲w码欧洲s码免费| 亚洲丰满熟女一区二区v| 成人在线免费观看| 精品久久久久久久久亚洲偷窥女厕| 国产精品公开免费视频| 青青久久精品国产免费看| 亚洲伊人久久综合影院| 国产白丝无码免费视频| 亚洲国产成人资源在线软件| 四虎影视大全免费入口| 日韩免费码中文在线观看| 亚洲乱码国产乱码精品精| 99re免费在线视频| 亚洲人成人伊人成综合网无码 | 日韩亚洲翔田千里在线| 亚洲国模精品一区| 久久免费视频网站| 亚洲三级视频在线观看 | 中文字幕精品无码亚洲字 | 亚洲精彩视频在线观看| 成人免费视频软件网站| 日韩在线观看视频免费| 亚洲综合久久综合激情久久 | 一级毛片免费观看| 亚洲色偷偷色噜噜狠狠99| 中文字幕亚洲专区| 久久精品免费视频观看| 亚洲 日韩 色 图网站| 亚洲av无码成人精品区在线播放 | 亚洲av纯肉无码精品动漫| 亚洲国产一二三精品无码| 成人无遮挡裸免费视频在线观看| 午夜在线亚洲男人午在线| 久久久无码精品亚洲日韩蜜臀浪潮 |