test

          網(wǎng)上營業(yè)廳系統(tǒng)操作說明

          1.登錄系統(tǒng)

          2.輸入計劃類型、提箱單位、提箱日期、提箱時間段、費用截止日期、聯(lián)系人電話

          3.選箱:輸入船名、航次、提單號,點擊檢索

          4.海關(guān)放行:點擊校核

          5.保存計劃

          6.計費:點擊確認(rèn)支付,跳轉(zhuǎn)至支付頁面

           

          一.注冊用戶



          三.網(wǎng)上支付

           

          B2B支付

          1.登陸中國銀行企業(yè)網(wǎng)銀系統(tǒng)

          2.進(jìn)入支付頁面,確認(rèn)支付金額,提交訂單

          3.企業(yè)財務(wù)人員進(jìn)入支付審核系統(tǒng)

          4. 企業(yè)財務(wù)人員復(fù)合相應(yīng)訂單

          5. 企業(yè)財務(wù)人員授權(quán)相應(yīng)訂單

          6.完成訂單授權(quán),查詢訂單

          7.完成B2B支付,生成訂單號,公司收到推送通知,生成提箱計劃

          二.提重辦理

          B2C支付

          1.登陸中國銀行個人網(wǎng)銀系統(tǒng)

          2.選擇付款賬戶,提交訂單

          3.完成B2C支付,生成訂單號,公司收到推送通知,生成提箱計劃


          附:詳細(xì)操作步驟

          第一部分 用戶注冊

          第二部分 提重辦理

          2.1 登陸系統(tǒng),進(jìn)入“重箱出場計劃”頁面。點擊頁面左側(cè)“提重辦理” ,頁面右側(cè)出現(xiàn)“重箱出場計劃”。

          2.2 選擇“計劃類型”,輸入“提箱單位”,選擇“提箱日期”,選擇“提箱時間段”,選擇“費用截止日期”,輸入“聯(lián)系人電話”。

          2.3  點擊“選箱” ,進(jìn)入選箱頁面。輸入“船名”,“航次”,“提單號” ,點擊“檢索” ,出現(xiàn)箱號列表,選擇相應(yīng)集裝箱。

          ,點擊“確認(rèn)” ,返回“重箱出場計劃”頁面。

          2.4  點擊“海關(guān)放行” ,進(jìn)入“報關(guān)單信息”頁面。(注:進(jìn)行“增、刪、改“操作后,點擊”保存,報關(guān)單詳細(xì)中可添加修改箱號),點擊“校核” ,核對海關(guān)放行信息,返回“重箱出場計劃”頁面。

          2.5  點擊“保存計劃” ,出現(xiàn)保存成功提示

          2.6  點擊“計費” ,進(jìn)入“費用統(tǒng)計”頁面。確認(rèn)統(tǒng)計箱號和費用總計無誤后,點擊“確認(rèn)支付” ,進(jìn)入中國銀行網(wǎng)上支付頁面。

           

          第三部分 中國銀行網(wǎng)上支付(B2BB2C

           

          3.1B2B 企業(yè)支付(注:由于銀行網(wǎng)上支付操作規(guī)定,請于在3個小時內(nèi)完成訂單授權(quán),否則需要重新提交訂單)

          3.1.1  進(jìn)入中國銀行企業(yè)網(wǎng)上支付頁面,輸入“用戶名”,“密碼”,“驗證碼” ,點擊“確認(rèn)”,進(jìn)入支付頁面。

          3.1.2  在支付頁面確認(rèn)支付金額,輸入動態(tài)口令

          ,點擊“確定”,完成訂單提交。

          3.1.3  企業(yè)財務(wù)審核人員進(jìn)入“支付審核”頁面,輸入“用戶名”,“密碼”,“動態(tài)口令”,點擊“登錄”進(jìn)入網(wǎng)上銀行系統(tǒng)

          3.1.4  點擊“電子商務(wù)”,“B2B支付服務(wù)”,“訂單復(fù)核”進(jìn)行訂單復(fù)合。 。點擊相應(yīng)訂單號進(jìn)入復(fù)合頁面 ,在“復(fù)核意見”選項中選擇“復(fù)合通過”,點擊“確定”。

          3.1.5  點擊“訂單授權(quán)”頁面,選擇相應(yīng)訂單號進(jìn)行授權(quán)操作頁面 ,在“授權(quán)意見”選項中選擇“授權(quán)通過”,點擊“確定”進(jìn)入授權(quán)頁面。

          3.1.6  輸入“動態(tài)口令” ,點擊“確定”,完成授權(quán)。訂單內(nèi)容可在“訂單查詢”選項中查詢。

          3.1.7  企業(yè)完成B2B網(wǎng)上支付,生成訂單號,公司收到推送通知,生成提箱計劃。

           

          3.2個人支付B2C(推薦使用)

          3.2.1 進(jìn)入中國銀行個人網(wǎng)上支付頁面,輸入“用戶名”,“密碼”,“驗證碼” ,點擊“確認(rèn)”,進(jìn)入支付頁面。

          3.2.2  進(jìn)入支付頁面,選擇“付款賬戶” ,點擊“確定”,輸入“手機(jī)交易碼”和“動態(tài)口令” ,點擊“確定”。

          3.2.3 個人完成B2C網(wǎng)上支付,生成訂單號,公司收到推送通知,生成提箱計劃。

          posted @ 2013-08-07 16:10 youngturk 閱讀(1326) | 評論 (0)編輯 收藏

          js post方法

          function postToNethall(PARAMS) {
          var pay_no;
          var money;
          var checkcode;
          var feeetype;
          var old_pay_no;
          var old_money;

          var splitAll = new Array();
          //測試 PARAMS = "pay_no=jmW9n%2fJCCDo%3d&money=wB1k5PqI0oU%3d&checkcode=nhIAV2UrfsUreUdGf0wS3kcPYe5P6iTZ%2boRAgdGvPLN33eTEKYp75j%2f%2bhT7xSYg%2be%2bHGf2MZyyAcYpRMl6ng3ireWvV%2bj5kRZkldFCGF8nhE1ANvxGBMBQ%3d%3d&feeetype=Q1dQXRPDVOc%3d&old_pay_no=0GUN11ebpe4%3d&old_money=0GUN11ebpe4%3d";
                 splitAll =  PARAMS.split("&");
                 var arrayvar;
                  for( var isplit = 0 ; isplit < splitAll.length ; isplit++){
                      arrayvar = new Array();
                      arrayvar = splitAll[isplit].split("=");
                      for(var i = 0; i < arrayvar.length;i++){
                          if(arrayvar[i] = "pay_no"){
                              pay_no = arrayvar[i+1];
                              //alert(pay_no);
                              break;
                          }
                          if(arrayvar[i] = "money"){
                              money = arrayvar[i+1];
                              // alert(money);
                              break;
                          }
                          if(arrayvar[i] = "checkcode"){
                              checkcode = arrayvar[i+1];
                              // alert(checkcode);
                              break;
                          }
                          if(arrayvar[i] = "feeetype"){
                              feeetype = arrayvar[i+1];
                              // alert(feeetype);
                              break;
                          }
                          if(arrayvar[i] = "old_pay_no"){
                              old_pay_no = arrayvar[i+1];
                              // alert(old_pay_no);
                              break;
                          }
                          if(arrayvar[i] = "old_money"){
                              old_money = arrayvar[i+1];
                              // alert(old_money);
                              break;
                          }
                      }
                  }
                   var name = "test"
                   var tempForm = document.createElement("form"); 
                   tempForm.id="tempForm1"; 
                   tempForm.method="post"; 
                   //tempForm.action="         tempForm.action="         tempForm.target=name; 
                   
                    var hideInput1 = document.createElement("input"); 
                    hideInput1.type="hidden"; 
                   hideInput1.name= "pay_no"
                   hideInput1.value= "EeM1whUd4q4%3d";
                    tempForm.appendChild(hideInput1); 
                   
                    var hideInput2 = document.createElement("input"); 
                    hideInput2.type="hidden"; 
                   hideInput2.name= "money"
                   hideInput2.value= "i6hN5C6DIN4%3d";
                    tempForm.appendChild(hideInput2); 
                   
                    var hideInput3 = document.createElement("input"); 
                    hideInput3.type="hidden"; 
                   hideInput3.name= "checkcode"
                   hideInput3.value= "nhIAV2UrfsWnq1I38RKp5%2b46w4bxah62p6tSN%2fESqefuOsOG8WoetiUOtz2bp40id93kxCmKe%2bY%2f%2foU%2b8UmIPnvhxn9jGcsgHGKUTJep4N4q3lr1fo%2bZEWZJXRQhhfJ4RNQDb8RgTAU%3d";
                    tempForm.appendChild(hideInput3); 
                   
                    var hideInput4 = document.createElement("input"); 
                    hideInput4.type="hidden"; 
                   hideInput4.name= "feeetype"
                   hideInput4.value= "Q1dQXRPDVOc%3d";
                    tempForm.appendChild(hideInput4); 
                   
                    var hideInput5 = document.createElement("input"); 
                    hideInput5.type="hidden"; 
                   hideInput5.name= "old_pay_no"
                   hideInput5.value= "0GUN11ebpe4%3d";
                    tempForm.appendChild(hideInput5); 
                   
                    var hideInput6 = document.createElement("input"); 
                    hideInput6.type="hidden"; 
                   hideInput6.name= "old_money"
                   hideInput6.value= "0GUN11ebpe4%3d";
                    tempForm.appendChild(hideInput6); 
                    
                    tempForm.attachEvent("onsubmit",function(){ openWindow(name); });
                   document.body.appendChild(tempForm); 
                   tempForm.fireEvent("onsubmit");
                   alert("tempForm");
                   tempForm.submit();
                  document.body.removeChild(tempForm);
             }
              

          posted @ 2013-07-16 11:11 youngturk 閱讀(1634) | 評論 (0)編輯 收藏

          直接訪問后臺,跳過filter過濾器,AuthorizationFilter.java,filter為特定權(quán)限過濾器

          web.xml
          <filter>
                  
          <filter-name>AuthorizationFilter</filter-name>
                  
          <filter-class>com.cenin.util.filter.AuthorizationFilter</filter-class>
              
          </filter>
          <filter-mapping>
                  
          <filter-name>AuthorizationFilter</filter-name>
                  
          <url-pattern>/*</url-pattern>
              </filter-mapping>
          AuthorizationFilter.java
          public class AuthorizationFilter implements Filter
          {

              public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException
              {

                  HttpServletRequest request = (HttpServletRequest) req;
                  HttpServletResponse response = (HttpServletResponse) resp;
                  HttpSession session = request.getSession();

                  String servletPath = request.getServletPath();//獲得如: /baseinfo/codeBillTypeList.action

                  Object user = session.getAttribute(Config.getConfig().getSessionUser());

                  //判斷權(quán)限
                  boolean passed = true;


                  /*if(user == null && (servletPath.indexOf("action")>=0 )){
                      passed = false;
                      String[] noLimit = Config.getConfig().getNoFilter().split(";");
                      for(int i=0;i<noLimit.length;i++){
                          if(servletPath.matches(noLimit[i])){
                              System.out.println(servletPath + "  " + noLimit[i]);
                              passed = true;
                              break;
                          }
                      }
                  }
          */

                  request.getRequestDispatcher(servletPath).forward(request, response);
          //控制struts or xwork跳轉(zhuǎn)

          //        if(passed)
          //            chain.doFilter(request, response);
          //        else
          //        {
          //            String modelType = request.getParameter("model.bmoduleType");
          //            String particalUrl = request.getParameter("particalUrl");
          //            session.setAttribute("model.bmoduleType", modelType);
          //            session.setAttribute("particalUrl", particalUrl);
          //            String url = Config.getConfig().getPageLogin();
          //            RequestDispatcher dispatcher = request.getRequestDispatcher(url);
          //            dispatcher.forward(request, response);
          //        }
              }
              
          public void init(FilterConfig filterConfig) throws ServletException
              
          {

              }

              
          public void destroy()
              
          {

              }


          }
          xwork.xml添加
          <include file="xwork-onlinehall.xml"/>
          xwork
          -onlinehall.xml文件內(nèi)容:
          <package name="onlinehall" extends="cenin" namespace="/onlinehall" externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">
          <action name="myOrderLoadList" class="com.cenin.web.action.onlinehall.MyOrderAction" method="myOrderLoadList">
                      
          <result name="success" type="freemarker">/onlinehall/myOrder.ftl</result>
                  
          </action>   
          </package>
          MyOrder.java內(nèi)容
          public class MyOrderAction extends BaseActionSupport {
          public String myOrderLoadList() throws Exception {}
          }

          posted @ 2013-07-12 13:15 youngturk 閱讀(3604) | 評論 (1)編輯 收藏

          XML解析SAX

          public List xmlElements(String xmlDoc) {
                  
          //創(chuàng)建一個新的字符串
                  StringReader read = new StringReader(xmlDoc);
                  
          //創(chuàng)建新的輸入源SAX 解析器將使用 InputSource 對象來確定如何讀取 XML 輸入
                  InputSource source = new InputSource(read);
                  
          //創(chuàng)建一個新的SAXBuilder
                  SAXBuilder sb = new SAXBuilder();
                  List list 
          = new ArrayList();
                  
          try {
                      
          //通過輸入源構(gòu)造一個Document
                      Document doc = sb.build(source);
                      
          //取的根元素
                      Element root = doc.getRootElement();
                      System.out.println(root.getName());
          //輸出根元素的名稱(測試)
                      
          //得到根元素所有子元素的集合
                      List jiedian = root.getChildren();
                      
          //獲得XML中的命名空間(XML中未定義可不寫)
                      Namespace ns = root.getNamespace();
                      Element et 
          = null;
                      DataModel dataModel 
          = new DataModel();
                      Collections c ;
                      Ctnfee ctnfee 
          = null;
                      
          for(int i=0;i<jiedian.size();i++){
                          et 
          = (Element) jiedian.get(i);//循環(huán)依次得到子元素
                          ctnfee = new Ctnfee();
                          
          /**//*
                           * 無命名空間定義時
                           * et.getChild("users_id").getText();
                           * et.getChild("users_address",ns).getText()
                           
          */

                          
          /*System.out.println(et.getChild("users_id",ns).getText());
                          System.out.println(et.getChild("users_address",ns).getText());
          */

                          System.out.println(et.getChild(
          "p_id",ns).getText());
                          System.out.println(et.getChild(
          "ctnno",ns).getText());
                          ctnfee.setP_id(et.getChild(
          "p_id",ns).getText());
                          ctnfee.setCtnno(et.getChild(
          "ctnno",ns).getText());
                          ctnfee.setFee_type(et.getChild(
          "fee_type",ns).getText());
                          ctnfee.setStart_time(et.getChild(
          "start_time",ns).getText());
                          ctnfee.setEnd_time(et.getChild(
          "end_time",ns).getText());
                          ctnfee.setFee(Double.parseDouble(et.getChild(
          "fee",ns).getText()));
                          ctnfee.setFee_count(Double.parseDouble(et.getChild(
          "fee_count",ns).getText()));
                          ctnfee.setCpid(et.getChild(
          "cpid",ns).getText());
                          ctnfee.setFee_name(et.getChild(
          "fee_name",ns).getText());
                          ctnfee.setFee_rate_id(Double.parseDouble(et.getChild(
          "fee_rate_id",ns).getText()));
                          ctnfee.setJffs(et.getChild(
          "jffs",ns).getText());
                          ctnfee.setIf_hand(et.getChild(
          "if_hand",ns).getText());
                          ctnfee.setSfid(et.getChild(
          "sfid",ns).getText());
                          ctnfee.setWt_company(et.getChild(
          "wt_company",ns).getText());
                          ctnfee.setOpid(et.getChild(
          "opid",ns).getText());
                          ctnfee.setCy(et.getChild(
          "cy",ns).getText());
                          ctnfee.setIf_bf(et.getChild(
          "if_bf",ns).getText());
                          ctnfee.setDays_count(et.getChild(
          "days_count",ns).getText());
                          ctnfee.setIf_collect(Double.parseDouble(et.getChild(
          "if_collect",ns).getText()));
                          ctnfee.setIf_dd(et.getChild(
          "if_dd",ns).getText());
                          ctnfee.setDd_fee_name(et.getChild(
          "dd_fee_name",ns).getText());
                          ctnfee.setSpec_sign(et.getChild(
          "spec_sign",ns).getText());
                          
                          list.add(ctnfee);
                          counttotal 
          = counttotal +Double.parseDouble(et.getChild("fee_count",ns).getText());
                      }

                      
          /**//*
                       * 如要取<row>下的子元素的名稱
                       
          */

                      et 
          = (Element) jiedian.get(0);
                      List zjiedian 
          = et.getChildren();
                      
          for(int j=0;j<zjiedian.size();j++){
                          Element xet 
          = (Element) zjiedian.get(j);
                          System.out.println(xet.getName());
                      }

                  }
           catch (JDOMException e) {
                      
          // TODO 自動生成 catch 塊
                      e.printStackTrace();
                  }
           catch (IOException e) {
                      
          // TODO 自動生成 catch 塊
                      e.printStackTrace();
                  }

                  
          return list;
              }

          posted @ 2013-07-10 15:03 youngturk 閱讀(320) | 評論 (0)編輯 收藏

          java中發(fā)起POST請求,并接收返回的響應(yīng)內(nèi)容的方式

          public static void main(String[] args) throws IOException {

              String bocNo1
          ="6124"
              String orderNos1
          ="104110059475569"
              String signData1
          ="eeb5705cffb3820d8cf8b6cae5774730_21ec2425-883b-4974-a036-360ddec9fb9a"+
          "MIIDuAYJKoZIhvcNAQcCoIIDqTCCA6UCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCCAmww"+
          "ggJoMIIB0aADAgECAhB9RyYZTkOnSvrpIjNNqTqUMA0GCSqGSIb3DQEBBQUAMFoxCzAJBgNVBAYT"+
          "AkNOMRYwFAYDVQQKEw1CQU5LIE9GIENISU5BMRAwDgYDVQQIEwdCRUlKSU5HMRAwDgYDVQQHEwdC"+
          "RUlKSU5HMQ8wDQYDVQQDEwZCT0MgQ0EwHhcNMTEwNjE4MTAyNjI0WhcNMjEwNDI2MTAyNjI0WjBH"+
          "MQswCQYDVQQGEwJDTjEWMBQGA1UEChMNQkFOSyBPRiBDSElOQTENMAsGA1UECxMEVEVTVDERMA8G"+
          "A1UEAx4IbUuL1VVGYjcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMNF+o1mNobAG60gm9cG"+
          "DbOuq5KLKsRF/jjstfjzorz1qQdiY5ibCu3ngk2VHxAf3JV7beDw7OuWjxIaxntsWiOaFhujSlxS"+
          "7dyefk4uOwHWuFOoZGIG/scXcjU74NLdSM0ptj42SfdMsbqzcQ8kqvV7MbPqJW8ztlefmafdYpJh"+
          "AgMBAAGjQjBAMB8GA1UdIwQYMBaAFHjxtvO9ykQNfC/o0jbI/gawwPmfMB0GA1UdDgQWBBS6HTP9"+
          "uBZMvHzqidY/hp7m9hx0zTANBgkqhkiG9w0BAQUFAAOBgQAyLyYGKopiY0fSaTM/fElg/3JRrOcv"+
          "8xrNNr5tdym61W44d3Uh53zD+5cOhQnQfYEE6d6QeiRicNi3kwh3mr9BX0+H7uBq4SQ9Gq99gk3E"+
          "tdLe4EMIZbE01SPzKViUE2A+7ewffHgFy5i4VweoB9MmppaF1RPj0pGftFp6d0+dWDGCARQwggEQ"+
          "AgEBMG4wWjELMAkGA1UEBhMCQ04xFjAUBgNVBAoTDUJBTksgT0YgQ0hJTkExEDAOBgNVBAgTB0JF"+
          "SUpJTkcxEDAOBgNVBAcTB0JFSUpJTkcxDzANBgNVBAMTBkJPQyBDQQIQfUcmGU5Dp0r66SIzTak6"+
          "lDAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIGAa6dnWBArRLTMDYcWeYYLBFRVIeYX0WkQHniU"+
          "AN4umk64gC/4r96v5BVm7tuetH2QtqVJIelvHZZKnvQsqAG108TkPR9+12JbxApu/eE5DTXmXqdj"+
          "zfrQE7sk7rCBdqbFjqkETzU7oAwfqCuZGa6q+4TDWvdmYkM33ZdmtFJ53a0="
              
          /**
                java中兩種發(fā)起POST請求,并接收返回的響應(yīng)內(nèi)容的方式  2011-07-22 09:43:29|  分類: 默認(rèn)分類 |  標(biāo)簽: |字號大
                中
                小 訂閱 
                1、利用apache提供的commons-httpclient-3.0.jar包

                代碼如下:

                
                  * 利用HttpClient發(fā)起POST請求,并接收返回的響應(yīng)內(nèi)容
                  * 
                  * 
          @param url 請求鏈接
                  * 
          @param type 交易或響應(yīng)編號
                  * 
          @param message 請求內(nèi)容
                  * 
          @return 響應(yīng)內(nèi)容
                  
          */

          //        public String transRequest(String url, String type, String message) {
                  
          // 響應(yīng)內(nèi)容
                  String result = "";
                  
                  
          // 定義http客戶端對象--httpClient
                  HttpClient httpClient = new HttpClient();
                   
                  
          // 定義并實例化客戶端鏈接對象-postMethod
                  PostMethod postMethod = new PostMethod("http://180.168.146.75:81/PGWPortal/CommonB2BQueryOrder.do");
                   
                  
          try{
                   
          // 設(shè)置http的頭
          //         postMethod.setRequestHeader("ContentType",
          //           "application/x-www-form-urlencoded;charset=UTF-8");
                 
                   
          // 填入各個表單域的值
                   NameValuePair bocNo  = new NameValuePair("bocNo", bocNo1);
                      NameValuePair orderNos 
          = new NameValuePair("orderNos", orderNos1);
                      NameValuePair signData 
          = new NameValuePair("signData", signData1);
          //            postMethod.setRequestBody( new NameValuePair[] {bocNo, orderNos,signData});
                      NameValuePair[] data = { bocNo,
                              orderNos,signData }
          ;
          //         NameValuePair[] data = { bocNo, orderNos,signData);
                   
                   
          // 將表單的值放入postMethod中
                   postMethod.setRequestBody(data);
                 
                   
          // 定義訪問地址的鏈接狀態(tài)
                   int statusCode = 0;
                   
          try {
                    
          // 客戶端請求url數(shù)據(jù)
                    statusCode = httpClient.executeMethod(postMethod);
                   }
           catch (Exception e) {
                    e.printStackTrace();
                   }

                   
                   
          // 請求成功狀態(tài)-200
                   if (statusCode == HttpStatus.SC_OK) {
                    
          try {
                     result 
          = postMethod.getResponseBodyAsString();
                     System.out.println(result);
                    }
           catch (IOException e) {
                     e.printStackTrace();
                    }

                   }
           else {
                    System.out.println(
          "請求返回狀態(tài):" + statusCode);
                   }

                  }
           catch (Exception e) {
                      System.out.println(e.getMessage());
                  }
           finally {
                   
          // 釋放鏈接
                   postMethod.releaseConnection();
                   httpClient.getHttpConnectionManager().closeIdleConnections(
          0);
                  }

                 
          /* GetMethod authpost1 = new GetMethod("http://180.168.146.75:81/PGWPortal/CommonB2BQueryOrder.do" );

                  httpClient.executeMethod(authpost1);
                  result = authpost1.getResponseBodyAsString();
                  System.out.println(result);
          */

                
          //查看cookie信息

                  
          /*Cookie[] cookies = httpClient.getState().getCookies();
                  httpClient.getState().addCookies(cookies);

                 if (cookies.length == 0) {

                     System.out.println("None");

                 } else {

                     for (int i = 0; i < cookies.length; i++) {

                         System.out.println(cookies[i].toString());

                     }

                 }
          */

          }

          posted @ 2013-07-10 14:48 youngturk 閱讀(3632) | 評論 (1)編輯 收藏

          Tomcat部署Web應(yīng)用方法總結(jié) .

          Tomcat部署Web應(yīng)用方法總結(jié)
          在Tomcat中部署Java Web應(yīng)用程序有兩種方式:靜態(tài)部署和動態(tài)部署。

          在下文中$CATALINA_HOME指的是Tomcat根目錄。

          一、靜態(tài)部署 


          靜態(tài)部署指的是我們在服務(wù)器啟動之前部署我們的程序,只有當(dāng)服務(wù)器啟動之后,我們的Web應(yīng)用程序才能訪問。

          以下3種方式都可以部署:(以PetWeb項目為例說明,PetWeb目錄假設(shè)是F:
          /PetWeb)

          1.利用Tomcat自動部署 


          將PetWeb目錄拷貝到$CATALINA_HOME
          /webapps下,然后啟動服務(wù)器就可以了,Tomcat啟動時將自動加載應(yīng)用。

          訪問地址如下:http:
          //localhost:8080/PetWeb/ 

          這種方式比較簡單,但是web應(yīng)用程序必須在webapps目錄下。Tomcat的Webapps目錄是Tomcat默認(rèn)的應(yīng)用目錄,當(dāng)服務(wù)器啟動時,會加載所有這個目錄下的應(yīng)用。

          2.修改Server.xml文件部署 


          這種方式可以不必將PetWeb目錄拷貝到webapps下,直接在F:
          /部署。方法如下,更改$CATALINA_HOME/conf/server.xml文件,

          找到以下內(nèi)容:

          Xml代碼:

          1.<Context  path ="/Pet"  reloadable ="false"  docBase ="F:/PetWeb"  workDir ="d:/Mywebapps/emp"  /> 
          path:是訪問時的根地址,表示訪問的路徑;如上述例子中,訪問該應(yīng)用程序地址如下:http:
          //localhost:8080/Pet/ 

          reloadable:表示可以在運行時在classes與lib文件夾下自動加載類包。其中reloadable
          ="false"表示當(dāng)應(yīng)用程序中的內(nèi)容發(fā)生更改之后服務(wù)器不會自動加載,這個屬性在開發(fā)階段通常都設(shè)為true,方便開發(fā),在發(fā)布階段應(yīng)該設(shè)置為false,提高應(yīng)用程序的訪問速度。

          docbase:表示應(yīng)用程序的路徑,注意斜杠的方向“
          /”。 docBase可以使用絕對路徑,也可以使用相對路徑,相對路徑相對于webapps。

          workdir:表示緩存文件的放置地址

          3.增加自定義web部署文件(推薦使用,不需要重啟Tomcat ) 


          這種方式和方法2差不多,但不是在Server.xml文件中添加Context標(biāo)簽,而是在$CATALINA_HOME
          /conf /Catalina/localhost中添加一個xml文件,如Pet.xml.在Tomcat安裝目錄conf/Catalina /localhost下,里面有Tomcat自帶的三個應(yīng)用,隨意復(fù)制其中的一個XML文件,然后修改docbase指向你自己的應(yīng)用程序,并把文件名改名,各參數(shù)參見方法2中的<Context>標(biāo)簽的參數(shù),或者你也可以自己新建一個XML文件。(注意此文件名將作為Context中的path屬性值,不管文件里的path屬性值如何設(shè)置也是無效的 ),將以下內(nèi)容復(fù)制過去,修改相應(yīng)路徑即可。

          Xml代碼:

          1.<Context  path ="/Pet"  docBase ="F:/PetWeb"   
          2.        debug ="0"  privileged ="true"  reloadable ="false"  >   
          3.</Context> 
          訪問地址如下:http:
          //localhost:8080/Pet/   

           

           

          注: Web應(yīng)用以.war文件的形式部署 



          可以將JSP程序打包成一個war包放在目錄下,服務(wù)器會自動解開這個war包,并在這個目錄下生成一個同名的文件夾。一個war包就是有特性格式的jar包,它是將一個Web程序的所有內(nèi)容進(jìn)行壓縮得到。

          我們剛才是將PetWeb文件夾部署在了服務(wù)器中,我們知道可以將Web應(yīng)用程序的內(nèi)容打成.war 包,然后在部署在服務(wù)器上。打包請參考如下步驟: 
              
          1、打開命令提示符(cmd) 
              
          2、設(shè)置jdk環(huán)境變量  
              
          3、在命令提示符中進(jìn)入項目文件夾F:/PetWeb后,鍵入如下命令:jar cvf Pet.war */ .   (注意最后有個“. ”)。這樣在F:/PetWeb下應(yīng)該有Pet.war文件。 (也可以打包到指定的地方,命令如下:jar cvf d:/Pet.war */ . )

          部署Pet.war文件非常簡單,將剛才xml文件中的docBase 
          ="F:/PetWeb" 更改為docBase ="F:/Pet.war" 或者直接將其拷貝到webapps目錄下就可以。然后重新啟動服務(wù)器就可以將Pet.war部署為一個Web應(yīng)用程序了。

          如果你夠細(xì)心的話你會發(fā)現(xiàn),服務(wù)器將Pet.war文件解開,并且在webapps下面又生成了一個Pet文件夾,然后把Pet.war的內(nèi)容拷貝到里面去了。我們可以通過以下方式取消自動解壓縮,將xml配置文件中的unpackWAR 屬性設(shè)置為
          "false" 即可。

           

           

          二、動態(tài)部署 


          動態(tài)部署是指可以在服務(wù)器啟動之后部署web應(yīng)用程序,而不用重新啟動服務(wù)器。動態(tài)部署要用到服務(wù)器提供的manager.war文件,如果在$CATALINA_HOME
          /webapps/下沒有該文件,你必須去重新下載tomcat,否則不能完成以下的功能。要想使用該管理程序必須首先編輯$CATALINA_HOME/conf/tomcat-users.xml文件,內(nèi)容如下:(關(guān)于這個文件的更多內(nèi)容,請參考 Java Web應(yīng)用程序的安全模型二 )

          <tomcat-users> 
          <role rolename="tomcat"/> 
          <role rolename="role1"/> 
          <role rolename="manager"/> 
          <user username="coresun" password="coresun" roles="manager"/> 
          <user username="tomcat" password="tomcat" roles="tomcat"/> 
          <user username="both" password="tomcat" roles="tomcat,role1"/> 
          <user username="role1" password="tomcat" roles="role1"/> 
          </tomcat-users> 

          posted @ 2013-07-07 11:45 youngturk 閱讀(1526) | 評論 (0)編輯 收藏

          獲得父窗口字段值window.dialogArguments.document.getElementById("hwlxcn").value;

          <#if lib_fun.BrowserType()==1 >
                  parent = window.dialogArguments.document.getElementById("hwlxcn").value;
             <#else>
                  parent = window.opener.document.getElementById("hwlxcn").value;
             </#if>

          posted @ 2013-06-28 14:35 youngturk 閱讀(2434) | 評論 (2)編輯 收藏

          清除緩存

               摘要: showModalDialog 參數(shù)詳細(xì)說明   使用 showModalDialog 顯示數(shù)據(jù) , 因為緩存的原因 , 有時候數(shù)據(jù)不會立即更新 , 所以需要在 HTML 頁面的 Head 標(biāo)簽內(nèi)添加使網(wǎng)頁過期的語句 , 這樣才能使 showModalDialog 數(shù)據(jù)能夠得 到及時的更新:     <meta&...  閱讀全文

          posted @ 2013-06-05 12:36 youngturk 閱讀(1488) | 評論 (0)編輯 收藏

          eclipse package,source folder,folder區(qū)別及相互轉(zhuǎn)換

          在eclipse下,package,source folder,folder都是文件夾.  

          它們的區(qū)別如下:  
          package:當(dāng)你在建立一個package時,它自動建立到source folder下,也只能建立在這個目錄之下.  

          source folder:存放java源代碼的文件夾,當(dāng)然也包括一些package文件夾,還可以包含其他文件.  
          項目構(gòu)建后,source folder里面的java自動編譯成class文件到相應(yīng)的/web-inf/classes文件夾中,其他文件也會移到/web-inf/classes相應(yīng)的目錄下.  

           
          package和sourceFolder比較
          相同之外:package下除了java文件也可以包含其他文件,而且編譯、打包后的文件路徑與source folder下的文件路徑有一樣規(guī)則
          不同之外:1.sourceFolder靠"/"來進(jìn)行上下級劃分,package靠“.”來進(jìn)行上下級劃分。
            2.source folder下能建package,而package下不能建source folder
            3.java文件中的package屬性是按package路徑來進(jìn)行賦值的,source folder路徑不參與java文件的package屬性賦值,再由第二條不同得到結(jié)論,所有source folder下的java文件package屬性都為空。

          folder:里面可以放入任何文件.包括java源文件,jar文件,其他文件(例如,圖片,聲音等).在此我說明一下,如果里面含有java源文件,不管程序是否正確,eclipse都不會報錯,把它們當(dāng)做普通文件處理.但是項目如果要使用這里面的文件,情況就不同了. 

          package,source folder,folder 之間相互轉(zhuǎn)換 
          package 轉(zhuǎn)成 folder 顯示:選中package, build path-> Exclude 
          folder 轉(zhuǎn)成 package 顯示:選中folder, build path-> Include 

          package 轉(zhuǎn)成 source folder 顯示:選中package, build path-> Use as Source folder 
          source folder 轉(zhuǎn)成 package 顯示:選中folder, build path-> Remove from BuildPath 

          pacage 與 source folder 的轉(zhuǎn)換同上 

          posted @ 2013-06-04 10:34 youngturk 閱讀(501) | 評論 (0)編輯 收藏

          web頁面檢索數(shù)據(jù)庫中的字段是亂碼問題

          this.databaseEncoding = "GBK";
          //  this.databaseEncoding = "ISO8859-1";
            this.platformEncoding = "GBK";

          獲得數(shù)據(jù)庫字符時候需要轉(zhuǎn)換

          posted @ 2013-05-03 10:33 youngturk 閱讀(310) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共33頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 镇赉县| 茌平县| 定南县| 平谷区| 昌江| 罗城| 文化| 淮北市| 大姚县| 抚远县| 海丰县| 武城县| 华坪县| 扶绥县| 平安县| 玉田县| 黄大仙区| 西吉县| 江北区| 资溪县| 涟水县| 屯留县| 巍山| 永州市| 永城市| 武冈市| 任丘市| 新余市| 开远市| 塔河县| 盈江县| 虎林市| 广宁县| 太原市| 漠河县| 敖汉旗| 万载县| 郸城县| 长寿区| 十堰市| 儋州市|