📄 wutil.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.www;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.mail.internet.*;
import org.apache.ecs.*;
import org.apache.ecs.xhtml.*;
import org.apache.log4j.Logger;
import org.compiere.wstore.*;
import org.compiere.util.*;
import org.compiere.model.*;
/**
* Servlet Utilities
*
* @author Jorg Janke
* @version $Id: WUtil.java,v 1.10 2003/05/04 06:47:28 jjanke Exp $
*/
public final class WUtil
{
/** Logging */
private static Logger s_log = Logger.getLogger("org.compiere.www.WUtil");
/**
* Create Timeout Message
*
* @param request request
* @param response response
* @param servlet servlet
* @param ctx context
* @param message - optional message
* @throws ServletException
* @throws IOException
*/
public static void createTimeoutPage (HttpServletRequest request, HttpServletResponse response,
HttpServlet servlet, Properties ctx, String message) throws ServletException, IOException
{
s_log.info("createTimeoutPage - " + message);
String windowTitle = "Timeout";
if (ctx != null)
windowTitle = Msg.getMsg(ctx, "Timeout");
WDoc doc = WDoc.create (windowTitle);
// Body
body body = doc.getBody();
// optional message
if (message != null && message.length() > 0)
body.addElement(new p(message));
// login button
body.addElement(getLoginButton(ctx));
//
body.addElement(new hr());
body.addElement(new small(servlet.getClass().getName()));
// fini
createResponse (request, response, servlet, null, doc, false);
} // createTimeoutPage
/**
* Create Error Message
*
* @param request request
* @param response response
* @param servlet servlet
* @param ctx context
* @param message message
* @throws ServletException
* @throws IOException
*/
public static void createErrorPage (HttpServletRequest request, HttpServletResponse response,
HttpServlet servlet, Properties ctx, String message) throws ServletException, IOException
{
s_log.info("createErrorPage - " + message);
String windowTitle = "Error";
if (ctx != null)
windowTitle = Msg.getMsg(ctx, "Error"); // JUST TO GET LANGUAGE ??
if (message != null)
windowTitle += ": " + message;
WDoc doc = WDoc.create (windowTitle);
// Body
body b = doc.getBody();
b.addElement(new p(servlet.getServletName(), AlignType.center));
b.addElement(new br());
// fini
createResponse (request, response, servlet, null, doc, true);
} // createErrorPage
/**
* Create Exit Page "Log-off".
* <p>
* - End Session
* - Go to start page (e.g. /compiere/index.html)
*
* @param request request
* @param response response
* @param servlet servlet
* @param ctx context
* @param AD_Message messahe
* @throws ServletException
* @throws IOException
*/
public static void createLoginPage (HttpServletRequest request, HttpServletResponse response,
HttpServlet servlet, Properties ctx, String AD_Message) throws ServletException, IOException
{
request.getSession().invalidate();
String url = WEnv.getBaseDirectory("index.html");
//
WDoc doc = null;
if (ctx != null && AD_Message != null && !AD_Message.equals(""))
doc = WDoc.create (Msg.getMsg(ctx, AD_Message));
else if (AD_Message != null)
doc = WDoc.create (AD_Message);
else
doc = WDoc.create (false);
script script = new script("window.top.location.replace('" + url + "');");
doc.getBody().addElement(script);
//
createResponse (request, response, servlet, null, doc, false);
} // createLoginPage
/**
* Create Login Button - replace Window
*
* @param ctx context
* @return Button
*/
public static button getLoginButton(Properties ctx)
{
String text = Msg.getMsg(ctx, "Login");
button button = new button();
button.setType("button").setName("Login").addElement(text);
StringBuffer cmd = new StringBuffer ("window.top.location.replace('");
cmd.append(WEnv.getBaseDirectory("index.html"));
cmd.append("');");
button.setOnClick(cmd.toString());
return button;
} // getLoginButton
/*************************************************************************/
/**
* Get Cookie Properties
*
* @param request request
* @return Properties
*/
public static Properties getCookieProprties(HttpServletRequest request)
{
// Get Properties
Cookie[] cookies = request.getCookies();
if (cookies != null)
{
for (int i = 0; i < cookies.length; i++)
{
if (cookies[i].getName().equals(WEnv.COOKIE_INFO))
return propertiesDecode(cookies[i].getValue());
}
}
return new Properties();
} // getProperties
/**
* Get numeric Parameter - 0 if not defined
*
* @param request request
* @param parameter parameter
* @return int result or 0
*/
public static int getParameterAsInt(HttpServletRequest request, String parameter)
{
if (request == null || parameter == null)
return 0;
String data = request.getParameter(parameter);
if (data == null || data.length() == 0)
return 0;
try
{
return Integer.parseInt(data);
}
catch (Exception e)
{
s_log.debug("getParameterAsInt - " + parameter + "=" + data, e);
}
return 0;
} // getParameter
/*************************************************************************/
/**
* Create Standard Response Header with optional Cookie and print document.
* D:\j2sdk1.4.0\docs\guide\intl\encoding.doc.html
*
* @param request request
* @param response response
* @param servlet servlet
* @param cookieProperties cookie properties
* @param doc doc
* @param debug debug
* @throws IOException
*/
public static void createResponse (HttpServletRequest request, HttpServletResponse response,
HttpServlet servlet, Properties cookieProperties, WDoc doc, boolean debug) throws IOException
{
response.setHeader("Cache-Control", "no-cache");
// response.setContentType("text/html; charset=ISO-8859-1"); // default
response.setContentType("text/html; charset=UTF-8");
//
// Update Cookie - overwrite
if (cookieProperties != null)
{
Cookie cookie = new Cookie (WEnv.COOKIE_INFO, propertiesEncode(cookieProperties));
cookie.setComment("(c) ComPiere, Inc - Jorg Janke");
cookie.setSecure(false);
cookie.setPath("/");
if (cookieProperties.size() == 0)
cookie.setMaxAge(0); // delete cookie
else
cookie.setMaxAge(2592000); // 30 days in seconds 60*60*24*30
response.addCookie(cookie);
}
// add diagnostics
if (debug && WEnv.DEBUG)
{
// doc.output(System.out);
WEnv.addFooter(request, response, servlet, doc.getBody());
// doc.output(System.out);
}
// String content = doc.toString();
// response.setContentLength(content.length()); // causes problems at the end of the output
// print document
PrintWriter out = response.getWriter(); // with character encoding support
doc.output(out);
out.flush();
if (out.checkError())
s_log.error("createResponse - error writing");
// binary output (is faster but does not do character set conversion)
// OutputStream out = response.getOutputStream();
// byte[] data = doc.toString().getBytes();
// response.setContentLength(data.length);
// out.write(doc.toString().getBytes());
//
out.close();
} // createResponse
/*************************************************************************/
/**
* Create Java Script to clear Target frame and display message
*
* @param target target
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -