本文包括:
A: servlet源码实例
B: servlet部署
C: 客户端远程调用
D: servlet开发调用工具
A: servlet源码实例
package com.viewlinecn.userlogin.www.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.viewlinecn.userlogin.util.OrganizeXML;
/**
* 游戏个性化登录认证服务
* @author cairenxi * @version 1.0
*/
public class LoginGameServlet extends HttpServlet {
private final static long serialVersionUID = -200904271326L;
private static Log log = LogFactory.getLog(LoginGameServlet.class);
public void init() throws ServletException {
//no code
} public
void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 添加代码
} public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 添加代码
}
}
B: servlet部署
com.viewlinecn.userlogin.www.servlet.LoginGameServlet ;
/servlets/login.html
C: 客户端远程调用
URL: http://host:port/context/servlets/login.html
D: servlet开发调用工具
package com.viewlinecn.common.http.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
/** * HTTP通讯组件 *
* @author 蔡仁西
* @version 1.0
*/
public class HttpUtils {
/** * 客户端用Post方法向服务器提交请求,并获取服务器响应信息
*
* @param req * @param res
* @param s
*/
public static String reqForPost(String postURL, String context) {
try {
URL url = new URL(postURL); U
RLConnection urlConn = url.openConnection();
HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn;
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true, 默认情况下是false;
httpUrlConn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true
httpUrlConn.setDoInput(true);
// Post 请求不能使用缓存
httpUrlConn.setUseCaches(false);
// 设定请求的方法为"POST",默认是GET
httpUrlConn.setRequestMethod("POST");
OutputStreamWriter wr = new OutputStreamWriter(httpUrlConn.getOutputStream());
wr.write(context);
wr.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(httpUrlConn .getInputStream()));
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
}
wr.close();
in.close();
return StringUtils.trimToEmpty(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} return ""; }
/** * 客户端用Get方法向服务器提交请求,并获取服务器响应信息
* @param req
* @param res
* @param s
*/
public static String reqForGet(String getURL) {
try {
URL url = new URL(getURL);
URLConnection urlConn = url.openConnection();
HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn;
// 默认情况下是false; httpUrlConn.setDoOutput(false);
// 设置是否从httpUrlConnection读入,默认情况下是true
httpUrlConn.setDoInput(true);
// Get 请求不能使用缓存
httpUrlConn.setUseCaches(false);
// 设定请求的方法为"GET",默认是GET
httpUrlConn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(httpUrlConn .getInputStream()));
String line; StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
return StringUtils.trimToEmpty(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} return "";
}
/**
* 从输入流中读入数据
* @param req
* @param res
* @param s
*/
public static String readBuffer(InputStreamReader in) {
try {
BufferedReader reader = new BufferedReader(in);
String line = ""; StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return StringUtils.trimToEmpty(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} return "";
}
/**
* 响应调用者
* @param req
* @param res
* @param s
*/
public static void res2Client(HttpServletRequest req, HttpServletResponse res, String s) {
try {
res.setContentType("text/plain;charset=gb2312");
PrintWriter out = res.getWriter(); out.print(s);
out.flush(); out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取请求客户端IP(包括穿透nginx集群代理)
*/
public static String getRemoteAddr(HttpServletRequest req) {
String ip = req.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getRemoteAddr();
}
return ip;
}
}
(文终)