Java是一个开放、标准、通用的网络程序运行平台,用Java编写的应用程序可以适用于多种不同的平台和终端而无需修改程序,同样,基于WAP的手机也可以使用Java的平台或与后端服务器进行交互来完成各种复杂的功能。你有没有想过,坐在汽车里或者走在路上就可以轻轻松松的管理你复杂的互联网络或局域网络。使用Java Servlet就可以解决这个问题。
下面是一个可以让你在支持WAP的手机上监听你的网络的简单的Java servlet程序,类似于dos下的ping命令。这个程序相当在你的主机上执行了ping命令,并在你的手机上显示结果。 用法如: http://host/servlet/WAPping 或者把IP地址作为一个参数传给主机,如: http://host/servlet/WAPping?IP_address
你可以在配置文件中更改常用的设置, Servlet程序必须以配置文件名为初始的参数,参数描述了一个文本文件名,文件中存放你设定的信息。
对于 Tomcat 中的web.xml,可以设置:
<servlet>
<servlet-name>WAPping</servlet-name>
<servlet-class>WAPping</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>config file path");
if(str1 == null)
printwriter.println(MainWmlCard(str));
else
if(str1.equals(""))
{
printwriter.println(MainWmlCard(str));
}
else
{
String str2 = getFromQuery(str1, "act=");
if(str2.equals("3"))
printwriter.println(writeWmlCommand(s,httpservletrequest.getParameter("cmd")));
else
printwriter.println(writeWmlCommand(str, str1));
}
printwriter.flush();
printwriter.close();
}
private String MainWmlCard(String str)
{
StringBuffer stringbuffer = new StringBuffer("");
stringbuffer.append("<wml>" NEWLINE);
stringbuffer.append("<head>" NEWLINE);
stringbuffer.append("<meta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/>" NEWLINE);
stringbuffer.append("</head>" NEWLINE);
stringbuffer.append("<card id=\"mainshell\" title=\"WAPping Card\">" NEWLINE);
stringbuffer.append("<do type=\"accept\" label=\"Exec\">" NEWLINE);
stringbuffer.append("" NEWLINE);
stringbuffer.append("" NEWLINE);
stringbuffer.append("" NEWLINE);
stringbuffer.append("" NEWLINE);
stringbuffer.append("<p align=\"center\"><b>WAP ping</b></p>" NEWLINE);
stringbuffer.append("<p>Host><input type=\"text\" name=\"sCmd\" value=\"\" emptyok=\"false\"/></p>" NEWLINE);
stringbuffer.append("</card>" NEWLINE);
stringbuffer.append("</wml>" NEWLINE);
return stringbuffer.toString();
}
private String getId()
{
String str = "";
synchronized(SessionIdLock)
{
long cTM = System.currentTimeMillis();
Random random = new Random();
str = String.valueOf(cTM);
for(int i = cTM; i <= 6; i )
str = str (int)(1.0D 6D * random.nextDouble());
}
return str;
}
private String getFromQuery(String str, String str1)
{
if(str == null)
return "";
int i;
if((i = str.indexOf(str1)) < 0)
return "";
String str2 = str.substring(i str1.length());
if((i = str2.indexOf("&")) < 0)
return str2;
else
return str2.substring(0, i);
}
private String writeWmlCommand(String str, String str1)
throws IOException
{
StringBuffer stringbuffer = new StringBuffer();
String str2;
if(str1 == null)
str2 = "";
else
str2 = str1;
stringbuffer.append("<wml>" NEWLINE);
stringbuffer.append("<head>" NEWLINE);
stringbuffer.append("<meta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/>" NEWLINE);
stringbuffer.append("</head>" NEWLINE);
stringbuffer.append("<card id=\"execshell\" title=\"WAPping Card\">" NEWLINE);
stringbuffer.append("<do type=\"accept\" label=\"Ok\">" NEWLINE);
stringbuffer.append("<go href=\"" str "?" "fct" "=" getId() "\"/>" NEWLINE);
stringbuffer.append("</do>" NEWLINE);
str2 = str2.trim();
if(str2.length() == 0)
{
stringbuffer.append("<p>空的命令行</p>");
}
else
{
str2 = executeCmd((String)configuration.get("prefix") " ping " (String)configuration.get("ping") " " str2, "<br/>");
if(str2.length() > 900)
str2 = str2.substring(0, 900) "...";
stringbuffer.append("<p>" replaceDollar(str2) "</p>");
}
stringbuffer.append("</card>" NEWLINE);
stringbuffer.append("</wml>" NEWLINE);
return stringbuffer.toString();
}
private String executeCmd(String str, String str1)
{
String str2 = "";
String str4 = str1 "host>" str;
try
{
Process process = Runtime.getRuntime().exec(s);
java.io.InputStream inputstream = process.getInputStream();
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream));
String str3;
while((str3 = bufferedreader.readLine()) != null)
str4 = str4 str1 prepareMsg(str3) NEWLINE;
process.waitFor();
bufferedreader.close();
}
catch(Exception exception)
{
str4 = str4 str1 exception;
}
return str4;
}
public String getServletInfo()
{
return "WAP ping 程序";
}
private String prepareMsg(String str)
{
StringBuffer stringbuffer = new StringBuffer("");
if(str.length() == 0)
return "";
for(int i = 0; i < str.length(); i )
{
char c = str.charAt(i);
if(c == '>')
stringbuffer.append(">");
else
if(c == '<')
stringbuffer.append("<");
else
if(c == '&')
stringbuffer.append("&");
else
if(c == '"')
stringbuffer.append(""");
else
stringbuffer.append(c);
}
return stringbuffer.toString();
}
private String replaceDollar(String str)
{
StringBuffer stringbuffer = new StringBuffer("");
for(int i = 0; i < str.length(); i )
{
char c;
if((c = str.charAt(i)) == '$')
stringbuffer.append("$$");
else
stringbuffer.append(c);
}
return stringbuffer.toString();
}
private void readConfig(String str, Hashtable hashtable) file://读入参数文件
{
try
{
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(str)));
String str1;
while((str1 = bufferedreader.readLine()) != null)
{
str1 = str1.trim();
if(str1.length() > 0)
{
int i = str1.indexOf("=");
if(i > 0 && i < str1.length() - 1 && str1.charAt(0) != '#' && !str1.startsWith("//"))
hashtable.put(str1.substring(0, i).trim(), str1.substring(i 1).trim());
}
}
}
catch(Exception _ex) { }
if((String)hashtable.get("prefix") == null)
hashtable.put("prefix", ""); file://如果“prefix”参数为空,则设prefix为默认值
if((String)hashtable.get("ping") == null)
hashtable.put("ping", ""); file://如果“ping”参数为空,则设ping为默认值
}
public WAPping()
{
}
private static Object SessionIdLock = new Object();
private static final int HOW_LONG = 6;
private static final int MAX_WML = 900;
private static final String DEFTITLE = "WAP ping";
private static final String DEFPREFIX = "";
private static final String DEFPING = "";
private static final String CONFIG = "config";
private static final String FICT = "fct";
private static final String CMD = "cmd";
private static final String ACTION = "act";
private static final String UPFRAME = "1";
private static final String DOWNFRAME = "2";
private static final String RUNCMD = "3";
private static final String HISTORY = "4";
private static final String PREFIX = "prefix";
private static final String PING = "ping";
private static String NEWLINE = "\n";
private static String separator = "/";
private static Hashtable configuration;
}
您可能对 [Java] 的这些文章也感兴趣: