網(wǎng)上營業(yè)廳系統(tǒng)操作說明
1.登錄系統(tǒng)
2.輸入計劃類型、提箱單位、提箱日期、提箱時間段、費用截止日期、聯(lián)系人電話
3.選箱:輸入船名、航次、提單號,點擊檢索
4.海關(guān)放行:點擊校核
5.保存計劃
6.計費:點擊確認(rèn)支付,跳轉(zhuǎn)至支付頁面
|
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)上支付(B2B或B2C)
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)上支付,生成訂單號,公司收到推送通知,生成提箱計劃。
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);
}
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
{
}
}

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;
}

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());

}

}*/
}
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>

<#if lib_fun.BrowserType()==1 >
parent = window.dialogArguments.document.getElementById("hwlxcn").value;
<#else>
parent = window.opener.document.getElementById("hwlxcn").value;
</#if>
摘要: showModalDialog
參數(shù)詳細(xì)說明
使用
showModalDialog
顯示數(shù)據(jù)
,
因為緩存的原因
,
有時候數(shù)據(jù)不會立即更新
,
所以需要在
HTML
頁面的
Head
標(biāo)簽內(nèi)添加使網(wǎng)頁過期的語句
,
這樣才能使
showModalDialog
數(shù)據(jù)能夠得
到及時的更新:
<meta&...
閱讀全文
在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)換同上
this.databaseEncoding = "GBK";
// this.databaseEncoding = "ISO8859-1";
this.platformEncoding = "GBK";
獲得數(shù)據(jù)庫字符時候需要轉(zhuǎn)換