網(wǎng)上營(yíng)業(yè)廳系統(tǒng)操作說(shuō)明
1.登錄系統(tǒng)
2.輸入計(jì)劃類(lèi)型、提箱單位、提箱日期、提箱時(shí)間段、費(fèi)用截止日期、聯(lián)系人電話
3.選箱:輸入船名、航次、提單號(hào),點(diǎn)擊檢索
4.海關(guān)放行:點(diǎn)擊校核
5.保存計(jì)劃
6.計(jì)費(fèi):點(diǎn)擊確認(rèn)支付,跳轉(zhuǎn)至支付頁(yè)面
|
B2B支付
1.登陸中國(guó)銀行企業(yè)網(wǎng)銀系統(tǒng)
2.進(jìn)入支付頁(yè)面,確認(rèn)支付金額,提交訂單
3.企業(yè)財(cái)務(wù)人員進(jìn)入支付審核系統(tǒng)
4. 企業(yè)財(cái)務(wù)人員復(fù)合相應(yīng)訂單
5. 企業(yè)財(cái)務(wù)人員授權(quán)相應(yīng)訂單
6.完成訂單授權(quán),查詢(xún)訂單
7.完成B2B支付,生成訂單號(hào),公司收到推送通知,生成提箱計(jì)劃 |
B2C支付
1.登陸中國(guó)銀行個(gè)人網(wǎng)銀系統(tǒng)
2.選擇付款賬戶(hù),提交訂單
3.完成B2C支付,生成訂單號(hào),公司收到推送通知,生成提箱計(jì)劃 |
附:詳細(xì)操作步驟
第一部分 用戶(hù)注冊(cè)
第二部分 提重辦理
2.1 登陸系統(tǒng),進(jìn)入“重箱出場(chǎng)計(jì)劃”頁(yè)面。點(diǎn)擊頁(yè)面左側(cè)“提重辦理” ,頁(yè)面右側(cè)出現(xiàn)“重箱出場(chǎng)計(jì)劃”。
2.2 選擇“計(jì)劃類(lèi)型”,輸入“提箱單位”,選擇“提箱日期”,選擇“提箱時(shí)間段”,選擇“費(fèi)用截止日期”,輸入“聯(lián)系人電話”。
2.3 點(diǎn)擊“選箱” ,進(jìn)入選箱頁(yè)面。輸入“船名”,“航次”,“提單號(hào)” ,點(diǎn)擊“檢索” ,出現(xiàn)箱號(hào)列表,選擇相應(yīng)集裝箱。
,點(diǎn)擊“確認(rèn)” ,返回“重箱出場(chǎng)計(jì)劃”頁(yè)面。
2.4 點(diǎn)擊“海關(guān)放行” ,進(jìn)入“報(bào)關(guān)單信息”頁(yè)面。(注:進(jìn)行“增、刪、改“操作后,點(diǎn)擊”保存,報(bào)關(guān)單詳細(xì)中可添加修改箱號(hào)),點(diǎn)擊“校核” ,核對(duì)海關(guān)放行信息,返回“重箱出場(chǎng)計(jì)劃”頁(yè)面。
2.5 點(diǎn)擊“保存計(jì)劃” ,出現(xiàn)保存成功提示 。
2.6 點(diǎn)擊“計(jì)費(fèi)” ,進(jìn)入“費(fèi)用統(tǒng)計(jì)”頁(yè)面。確認(rèn)統(tǒng)計(jì)箱號(hào)和費(fèi)用總計(jì)無(wú)誤后,點(diǎn)擊“確認(rèn)支付” ,進(jìn)入中國(guó)銀行網(wǎng)上支付頁(yè)面。
第三部分 中國(guó)銀行網(wǎng)上支付(B2B或B2C)
3.1B2B 企業(yè)支付(注:由于銀行網(wǎng)上支付操作規(guī)定,請(qǐng)于在3個(gè)小時(shí)內(nèi)完成訂單授權(quán),否則需要重新提交訂單)
3.1.1 進(jìn)入中國(guó)銀行企業(yè)網(wǎng)上支付頁(yè)面,輸入“用戶(hù)名”,“密碼”,“驗(yàn)證碼” ,點(diǎn)擊“確認(rèn)”,進(jìn)入支付頁(yè)面。
3.1.2 在支付頁(yè)面確認(rèn)支付金額,輸入動(dòng)態(tài)口令
,點(diǎn)擊“確定”,完成訂單提交。
3.1.3 企業(yè)財(cái)務(wù)審核人員進(jìn)入“支付審核”頁(yè)面,輸入“用戶(hù)名”,“密碼”,“動(dòng)態(tài)口令”,點(diǎn)擊“登錄”進(jìn)入網(wǎng)上銀行系統(tǒng) 。
3.1.4 點(diǎn)擊“電子商務(wù)”,“B2B支付服務(wù)”,“訂單復(fù)核”進(jìn)行訂單復(fù)合。 。點(diǎn)擊相應(yīng)訂單號(hào)進(jìn)入復(fù)合頁(yè)面 ,在“復(fù)核意見(jiàn)”選項(xiàng)中選擇“復(fù)合通過(guò)”,點(diǎn)擊“確定”。
3.1.5 點(diǎn)擊“訂單授權(quán)”頁(yè)面,選擇相應(yīng)訂單號(hào)進(jìn)行授權(quán)操作頁(yè)面 ,在“授權(quán)意見(jiàn)”選項(xiàng)中選擇“授權(quán)通過(guò)”,點(diǎn)擊“確定”進(jìn)入授權(quán)頁(yè)面。
3.1.6 輸入“動(dòng)態(tài)口令” ,點(diǎn)擊“確定”,完成授權(quán)。訂單內(nèi)容可在“訂單查詢(xún)”選項(xiàng)中查詢(xún)。
3.1.7 企業(yè)完成B2B網(wǎng)上支付,生成訂單號(hào),公司收到推送通知,生成提箱計(jì)劃。
3.2個(gè)人支付B2C(推薦使用)
3.2.1 進(jìn)入中國(guó)銀行個(gè)人網(wǎng)上支付頁(yè)面,輸入“用戶(hù)名”,“密碼”,“驗(yàn)證碼” ,點(diǎn)擊“確認(rèn)”,進(jìn)入支付頁(yè)面。
3.2.2 進(jìn)入支付頁(yè)面,選擇“付款賬戶(hù)” ,點(diǎn)擊“確定”,輸入“手機(jī)交易碼”和“動(dòng)態(tài)口令” ,點(diǎn)擊“確定”。
3.2.3 個(gè)人完成B2C網(wǎng)上支付,生成訂單號(hào),公司收到推送通知,生成提箱計(jì)劃。
function postToNethall(PARAMS) {
var pay_no;
var money;
var checkcode;
var feeetype;
var old_pay_no;
var old_money;
var splitAll = new Array();
//測(cè)試 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)建一個(gè)新的字符串
StringReader read = new StringReader(xmlDoc);
//創(chuàng)建新的輸入源SAX 解析器將使用 InputSource 對(duì)象來(lái)確定如何讀取 XML 輸入
InputSource source = new InputSource(read);
//創(chuàng)建一個(gè)新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
List list = new ArrayList();

try
{
//通過(guò)輸入源構(gòu)造一個(gè)Document
Document doc = sb.build(source);
//取的根元素
Element root = doc.getRootElement();
System.out.println(root.getName());//輸出根元素的名稱(chēng)(測(cè)試)
//得到根元素所有子元素的集合
List jiedian = root.getChildren();
//獲得XML中的命名空間(XML中未定義可不寫(xiě))
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();

/** *//**//*
* 無(wú)命名空間定義時(shí)
* 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>下的子元素的名稱(chēng)
*/
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 自動(dòng)生成 catch 塊
e.printStackTrace();

} catch (IOException e)
{
// TODO 自動(dòng)生成 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請(qǐng)求,并接收返回的響應(yīng)內(nèi)容的方式 2011-07-22 09:43:29| 分類(lèi): 默認(rèn)分類(lèi) | 標(biāo)簽: |字號(hào)大
中
小 訂閱
1、利用apache提供的commons-httpclient-3.0.jar包

代碼如下:

* 利用HttpClient發(fā)起POST請(qǐng)求,并接收返回的響應(yīng)內(nèi)容
*
* @param url 請(qǐng)求鏈接
* @param type 交易或響應(yīng)編號(hào)
* @param message 請(qǐng)求內(nèi)容
* @return 響應(yīng)內(nèi)容
*/
// public String transRequest(String url, String type, String message) {
// 響應(yīng)內(nèi)容
String result = "";
// 定義http客戶(hù)端對(duì)象--httpClient
HttpClient httpClient = new HttpClient();
// 定義并實(shí)例化客戶(hù)端鏈接對(duì)象-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");
// 填入各個(gè)表單域的值
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);
// 定義訪問(wèn)地址的鏈接狀態(tài)
int statusCode = 0;

try
{
// 客戶(hù)端請(qǐng)求url數(shù)據(jù)
statusCode = httpClient.executeMethod(postMethod);

} catch (Exception e)
{
e.printStackTrace();
}
// 請(qǐng)求成功狀態(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("請(qǐng)求返回狀態(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)部署和動(dòng)態(tài)部署。

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

一、靜態(tài)部署


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

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

1.利用Tomcat自動(dòng)部署


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

訪問(wèn)地址如下:http://localhost:8080/PetWeb/

這種方式比較簡(jiǎn)單,但是web應(yīng)用程序必須在webapps目錄下。Tomcat的Webapps目錄是Tomcat默認(rèn)的應(yīng)用目錄,當(dāng)服務(wù)器啟動(dòng)時(shí),會(huì)加載所有這個(gè)目錄下的應(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:是訪問(wèn)時(shí)的根地址,表示訪問(wèn)的路徑;如上述例子中,訪問(wèn)該應(yīng)用程序地址如下:http://localhost:8080/Pet/

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

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

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

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


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

Xml代碼:

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



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



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

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

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

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



二、動(dòng)態(tài)部署


動(dòng)態(tài)部署是指可以在服務(wù)器啟動(dòng)之后部署web應(yīng)用程序,而不用重新啟動(dòng)服務(wù)器。動(dòng)態(tài)部署要用到服務(wù)器提供的manager.war文件,如果在$CATALINA_HOME/webapps/下沒(méi)有該文件,你必須去重新下載tomcat,否則不能完成以下的功能。要想使用該管理程序必須首先編輯$CATALINA_HOME/conf/tomcat-users.xml文件,內(nèi)容如下:(關(guān)于這個(gè)文件的更多內(nèi)容,請(qǐng)參考 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ì)說(shuō)明
使用
showModalDialog
顯示數(shù)據(jù)
,
因?yàn)榫彺娴脑?,
有時(shí)候數(shù)據(jù)不會(huì)立即更新
,
所以需要在
HTML
頁(yè)面的
Head
標(biāo)簽內(nèi)添加使網(wǎng)頁(yè)過(guò)期的語(yǔ)句
,
這樣才能使
showModalDialog
數(shù)據(jù)能夠得
到及時(shí)的更新:
<meta&...
閱讀全文
在eclipse下,package,source folder,folder都是文件夾.
它們的區(qū)別如下:
package:當(dāng)你在建立一個(gè)package時(shí),它自動(dòng)建立到source folder下,也只能建立在這個(gè)目錄之下.
source folder:存放java源代碼的文件夾,當(dāng)然也包括一些package文件夾,還可以包含其他文件.
項(xiàng)目構(gòu)建后,source folder里面的java自動(dòng)編譯成class文件到相應(yīng)的/web-inf/classes文件夾中,其他文件也會(huì)移到/web-inf/classes相應(yīng)的目錄下.
package和sourceFolder比較
相同之外:package下除了java文件也可以包含其他文件,而且編譯、打包后的文件路徑與source folder下的文件路徑有一樣規(guī)則
不同之外:1.sourceFolder靠"/"來(lái)進(jìn)行上下級(jí)劃分,package靠“.”來(lái)進(jìn)行上下級(jí)劃分。
2.source folder下能建package,而package下不能建source folder
3.java文件中的package屬性是按package路徑來(lái)進(jìn)行賦值的,source folder路徑不參與java文件的package屬性賦值,再由第二條不同得到結(jié)論,所有source folder下的java文件package屬性都為空。
folder:里面可以放入任何文件.包括java源文件,jar文件,其他文件(例如,圖片,聲音等).在此我說(shuō)明一下,如果里面含有java源文件,不管程序是否正確,eclipse都不會(huì)報(bào)錯(cuò),把它們當(dāng)做普通文件處理.但是項(xià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ù)庫(kù)字符時(shí)候需要轉(zhuǎn)換