posts - 23,comments - 12,trackbacks - 0

          struts in action 中的register-complete.war,在tomcat中部署后,當輸入用戶名和密碼后總是給出failure頁面的解決方法

          1、首先將程序放在一下沒有空格的目錄中(不能放在如Program Files中)
          例如在D盤的根目錄下新建目錄:myregister.
          在 server.xml中加入:
          <Context path="/myregister"
          docBase="d:\myregister\"
          crossContext="false"
          debug="0"
          reloadable="true" >

          <Logger className="org.apache.catalina.logger.FileLogger"
          prefix="localhost_dbtest_log." suffix=".txt"
          timestamp="true"/>

          </Context>


          2、找到UserDirectory.java中下面代碼:
              public void setUser(String userId, String password) throws
                      UserDirectoryException {

                  // no nulls
                  if ((null==userId) || (null==password)) {
                   System.out.print("userid is null");
                      throw new UserDirectoryException();
                  }


                  try {

                      // conform userId to uppercase when stored
                      p.put(fixId(userId), password);
                      String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
                      p.store(new FileOutputStream(o), UserDirectoryHeader);

                     
                  }

                  catch (IOException e) {
                      throw new UserDirectoryException();

                 }
              }


          修改為:
              public void setUser(String userId, String password) throws
                      UserDirectoryException {

                  // no nulls
                  if ((null==userId) || (null==password)) {
                   System.out.print("userid is null");
                      throw new UserDirectoryException();
                  }


                  try {

                      // conform userId to uppercase when stored
                      p.put(fixId(userId), password);
                      String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
               System.out.println(o); //o is /D:/myregister/WEB-INF/classes/resources/users.properties
               String ostr=o.substring(1); // the  line must be add is to use to remove the "/" in  String o
               System.out.println(ostr); //ostr is D:/myregister/WEB-INF/classes/resources/users.properties
                      p.store(new FileOutputStream(ostr), UserDirectoryHeader);//modify o as ostr

                     
                  }

                  catch (IOException e) {
                      throw new UserDirectoryException();

                 }
              }

          注意最關鍵的是將:this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();所獲得的字符串進行處理因為它前面多了一個"/"。需要去掉。



          英文:

          I found a solution to your problem

          first step:
          you must deploy the application build a folder  make sure you don't use
          a directory which has any spaces in the path (such as the Program Files directory on Windows)as this may
          cause the UserDirectoryException.
          such as build a folder "myregister"  in Driver D and copy the program in it.

          add the following codes to server.xml:

          <Context path="/myregister"
          docBase="d:\myregister\"
          crossContext="false"
          debug="0"
          reloadable="true" >

          <Logger className="org.apache.catalina.logger.FileLogger"
          prefix="localhost_dbtest_log." suffix=".txt"
          timestamp="true"/>

          </Context>

              

          second step:
          just find the following code within the 'UserDirectory.java'
              public void setUser(String userId, String password) throws
                      UserDirectoryException {

                  // no nulls
                  if ((null==userId) || (null==password)) {
                   System.out.print("userid is null");
                      throw new UserDirectoryException();
                  }


                  try {

                      // conform userId to uppercase when stored
                      p.put(fixId(userId), password);
                      String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
                      p.store(new FileOutputStream(o), UserDirectoryHeader);

                     
                  }

                  catch (IOException e) {
                      throw new UserDirectoryException();

                 }
              }


          modify as follow:
              public void setUser(String userId, String password) throws
                      UserDirectoryException {

                  // no nulls
                  if ((null==userId) || (null==password)) {
                   System.out.print("userid is null");
                      throw new UserDirectoryException();
                  }


                  try {

                      // conform userId to uppercase when stored
                      p.put(fixId(userId), password);
                      String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
               System.out.println(o); //o is /D:/myregister/WEB-INF/classes/resources/users.properties
               String ostr=o.substring(1); // the  line must be add is to use to remove the "/" in  String o
               System.out.println(ostr); //ostr is D:/myregister/WEB-INF/classes/resources/users.properties
                      p.store(new FileOutputStream(ostr), UserDirectoryHeader);//modify o as ostr

                     
                  }

                  catch (IOException e) {
                      throw new UserDirectoryException();

                 }
              }


          by the way,the String o is /D:/myregister/WEB-INF/classes/resources/users.properties
          the String ostr is D:/myregister/WEB-INF/classes/resources/users.properties

          posted on 2005-09-09 13:53 my java 閱讀(523) 評論(0)  編輯  收藏 所屬分類: java原創

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄱阳县| 蚌埠市| 嘉义市| 合阳县| 遂平县| 洛浦县| 石城县| 尉氏县| 宁津县| 城市| 太保市| 江川县| 湖北省| 祁门县| 新乐市| 错那县| 孟津县| 前郭尔| 宿松县| 清涧县| 新巴尔虎左旗| 剑阁县| 吴江市| 小金县| 田东县| 永靖县| 青冈县| 绵竹市| 琼中| 正定县| 霍林郭勒市| 许昌县| 平南县| 乐业县| 金川县| 西昌市| 台山市| 彭泽县| 镶黄旗| 资阳市| 衡南县|