Month: March 2013

[問題] servlet 如何獲得 request URL

假設 Request Servlet URL 如下:

http://hostname.com/mywebapp/servlet/MyServlet/a/b;c=123?d=456

獲得 RequestURL 完整路徑:

/**
*
* @param req
* @return http://hostname.com/mywebapp/servlet/MyServlet/a/b;c=123?d=456
*/
public static String getRequestURL(HttpServletRequest req) {
   String reqUrl = req.getRequestURL().toString();
   String queryString = req.getQueryString(); // d=456
   if (queryString != null) {
      reqUrl += "?"+queryString;
   }
   return reqUrl;
}

獲得 Request URI:

/**
*
* @param req
* @return /mywebapp/servlet/MyServlet/a/b;c=123?d=456
*/
public static String getRequestURI(HttpServletRequest req) {
   String reqUri = req.getRequestURI().toString();
   String queryString = req.getQueryString(); // d=456
   if (queryString != null) {
      reqUri += "?"+queryString;
   }
   return reqUri;
}

獲得 Request Root URL:

/**
*
* @param req
* @return http://hostname.com/mywebapp
*/
public static String getRootURL(HttpServletRequest req) {
   String scheme = req.getScheme(); // http
   String serverName = req.getServerName(); // hostname.com
   int serverPort = req.getServerPort(); // 80
   String contextPath = req.getContextPath(); // /mywebapp
// String pathInfo = req.getPathInfo(); // /a/b;c=123
// String queryString = req.getQueryString(); // d=456
   String url = scheme+"://"+serverName+":"+serverPort+contextPath;
   return url;
}
Tags : ,

[QA] How to get the path of remote app in tomcat

HttpServletRequest

request.getSession().getServletContext().getRealPath("/");

Servlet

this.getServletContect().getRealPath("/");

Structs

this.getServlet().getServletContext().getRealPath("/");

ClassLoader

File classes = new File(getClass().getClassLoader().getResource("").getFile());
 
String path = classes.getParentFile().getParent() + "/";
 
path = java.net.URLDecoder.decode(path, "utf-8");
Tags :

[教學] 取得 android unique device id 的方法

目前取得 android unique device id 的方法有下面四種

  • ANDROID_ID
  • WiFi Address
  • Bluetooth Address
  • IMEI

1. ANDROID_ID

缺點:

  • 其值可能是 null:Android  2.2 (“Froyo”) 之前裝置可能不支援。
  • 可能會有相同的ANDROID_ID:山寨手機
  • factory reset 後,值會改變

權限:無

取得方式:

String androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

 

2. WiFi Address

缺點:

  • 裝置必需要有 WiFi 功能
  • 其值可能是 null:WiFi 需要開啓

權限:android.permission.ACCESS_WIFI_STATE

取得方式:

WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
 
String wifiMac = wm.getConnectionInfo().getMacAddress();

 

3. Bluetooth Address

缺點:

  • 裝置必須有 Bluetooth 功能

權限:android.permission.BLUETOOTH permission

取得方式:

String btMac = BluetoothAdapter.getDefaultAdapter().getAddress();

 

4. IMEI

缺點:

  • 裝置必須有打電話功能

權限:android.permission.READ_PHONE_STATE

取得方式:

TelephonyManager thManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
 
String imei = thManager.getDeviceId();
Tags : ,

WordPress 使用 qTranslate 常見問題

Q1. 使用 get_permalink 所產生網址無法對應正確語言

在 functions.php 內加入:
 
add_filter('post_type_link', 'qtrans_convertURL');

 

Q2. 顯示切換語系功能

<?php echo qtrans_generateLanguageSelectCode('text'); ?>

Q3.

Tags : ,