struts2+hibernate3+spring3(ssh2)框架下的web應用-SBPMS系統

當用戶成功登錄了以後,應該跳轉到他們的主頁,而後在他的主界面進行它可以進行的業務操做。並且應該將他的們的頁面分開,由於我若是不是經過 object-j或者使用javascript動態生成頁面的話,用戶能夠經過查看頁面源代碼來看到頁面全部操做。因此將主頁建成統一主頁是好的,這樣可 以減小建設網站的時間和頁面地址數量。可是缺點一樣明顯,除了上面說的以外,還增長了額外的服務器解析負擔,頁面響應速度慢,代碼穩定性弱。總之,我決定 主頁使用分開的頁面,或許會寫不少重複代碼,調用重複方法,可是是值得的。javascript

       那麼先修改登陸界面~修改ManageUserAction.java裏面的login()函數,並將用戶登陸信息存儲到session裏面css

 /*
     * This method is used to the login JSP, include the operations of call
     * database and do validation.
     */
    public String login() throws Exception { 
        // Put all information of this user saved in the database to
        // session by key user_login
        ActionContext.getContext().getSession().put("user_login",
                this.user);
        EnumSet<Role> rolesSet = EnumSet.allOf(Role.class);  
        for (Role role : rolesSet) {  
            if(this.user.getRole().equals(role.toString())){
                return role.toString().toUpperCase();
            }
        }
        return INPUT;
    }

順便修改了validate方法,把對空值的斷定加在了前面,這樣避免了nullpointexception。算是bug修復。java

public void validateLogin() {
        
        this.clearActionErrors();

        if (null == this.user) {
            this.addActionError("User name must not be empty");
            return;
        }
        
        // Judge the the name input by whether it is empty.
        if (null == this.user.getName() || this.user.getName() == "") {
            this.addActionError("User name must not be empty");
        } else {
            // Judge the pre_password input by whether it it empty.
            if (null == this.user.getPre_password() || this.user.getPre_password().isEmpty()) {
                this.addActionError("Password must not be empty");
            } else {
                // Change pre_password into password
                String md5Password;
                try {md5Password = MD5EncrypterUtil.getMD5(
                        this.user.getPre_password());
                
                this.user.setPassword(md5Password);
                // Judge the input name and password by whether they are accord
                // with the database.
                this.user = this.service.login(this.user);
                if (null == this.user) {
                    this.addActionError("User name or Password error");
                    this.user = null;
                } else {
                    // Do Nothing
                }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

我返回的是角色信息,是一個String類型。由於ACtion的返回值必須是String類型,我調用了一個toUpperCase方法,防止用戶輸入錯誤的角色大小寫。web

      在用戶登陸的時候,咱們現實下welcome:***就能夠去session取值,咱們作攔截器,攔截用戶行爲的時候,就經過判斷session裏面存儲 的用戶信息。好比session裏面判斷用戶爲SMS,那麼它想訪問SUP的界面的話,咱們就讓他返回登陸。這就是攔截器的通常使用的小例子。咱們當用戶 登陸10分鐘不動做時候,讓session超時(在配置web.xml裏面寫的),清空session,那麼用戶再進行操做,咱們攔截它,發現沒 session,就讓他返回登陸。等等。。。session能夠理解爲存儲在內存裏面的一個臨時的數據塊。至關於一個記事本。嗯名能夠這麼理解。服務器

      而後進入struts.xml,修改LoginAction的響應:session

   <action name="login" class="ManageUserAction" method="login">
      <result name="input">/WEB-PAGE/Login.jsp</result>
      <result name="SUP">/WEB-PAGE/SUP-PAGES/Homepage_SUP.jsp</result>
      <result name="SMM">/WEB-PAGE/SMM-PAGES/Homepage_SMM.jsp</result>
      <result name="SMS">/WEB-PAGE/SMS-PAGES/Homepage_SMS.jsp</result>
      <result name="MS">/WEB-PAGE/MS-PAGES/Homepage_MS.jsp</result>
      <result name="SS">/WEB-PAGE/SS-PAGES/Homepage_SS.jsp</result>
    </action>

效果如圖jsp

       這樣,獲得不一樣角色後就進入不一樣頁面。固然須要在制定的目錄創建jsp頁面,咱們先暫時創建一個幾個空白的頁面,在最後纔會去修改和完善。實際上咱們這樣 跳轉,會存在一個url地址混亂的問題,由於咱們login.jsp是在根目錄,進入action後,會繼續在根目錄。可是咱們跳轉到具體home目錄 後,會將url制定到其所在目錄,那麼,咱們的css樣式和javascript函數就會很差加載。固然我會在後面寫頁面的時候給出解決方案。函數

相關文章
相關標籤/搜索