HttpServletRequest如何获取客户端请求的参数

wudeaaa 2010-11-02 04:02:52
服务端部署在Tomcat上,由Servlet处理,客户端使用socket进行通信(不是浏览器),工程名称TestProject
Servlet端代码

public class ProcessServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public ProcessServlet() {
super();

}


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("receive Request message*******************:");
request.setCharacterEncoding("UTF-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
PrintWriter out = response.getWriter();

String msg = null;
while ((msg = reader.readLine()) != null) {//无法读取到
System.out.println("receive Request message:" + msg);

}

response.setContentType("text/html;charset=utf-8");
out.println("<html>");
out.println("<head><title>First servlet</title></head>");
out.println("<body>");
out.println("welcome use selevet");
out.println("</body>");
out.println("</html>");

out.flush();
out.close();

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

客户端代码

public class Client {

private static int port = 8080;

public static void main(String[] arg) {
Socket socket;
try {

String para = "password=1232131&safeflg=0&username=abc";
socket = new Socket("localhost", port);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),
"UTF8"));
InputStream ins = socket.getInputStream();
StringBuffer sb = new StringBuffer();
sb.append("POST /TestProject/ProcessServlet HTTP/1.1\r\n");// 注意\r\n为回车换行
sb.append("Accept-Language: zh-cn\r\n");
sb.append("Connection: Keep-Alive\r\n");
sb.append("Host:localhost\r\n");
sb.append("Content-Length:43\r\n");
sb.append("Content-Type: application/x-www-form-urlencoded\r\n");
sb.append("\r\n");
sb.append(para);
// 接收Web服务器返回HTTP响应包
wr.write(sb.toString());
wr.flush();

BufferedReader rd = new BufferedReader(new InputStreamReader(ins));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

在servlet端如何获得客户端发送的username,password等参数的值?
...全文
1127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudeaaa 2010-11-02
  • 打赏
  • 举报
回复
可以了,修改后的

public class Client {

private static int port = 8080;

public static void main(String[] arg) {
Socket socket;
try {

String para = "password=1232131&safeflg=0&username=abc";
int len = para.length();
socket = new Socket("localhost", port);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),
"UTF8"));
InputStream ins = socket.getInputStream();
StringBuffer sb = new StringBuffer();
sb.append("POST /FileShareServer/ProcessServlet HTTP/1.1\r\n");// 注意\r\n为回车换行
sb.append("Accept-Language: zh-cn\r\n");
sb.append("Connection: Keep-Alive\r\n");
sb.append("Host:localhost\r\n");
sb.append("Content-Length:"+len+"\r\n");
sb.append("Content-Type: application/x-www-form-urlencoded\r\n");
sb.append("\r\n");
sb.append(para);
// 接收Web服务器返回HTTP响应包
wr.write(sb.toString());
wr.flush();
//System.out.println(sb.toString());
BufferedReader rd = new BufferedReader(new InputStreamReader(ins));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

wudeaaa 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paodan 的回复:]
你的sb.append("Content-Length:43\r\n");
算错了,长度应该是你要发送消息体的长度,即 String para得长度,HTTP协议中,如果你的长度计算错误,那么服务器就会一直在等待读取,导致超时。
应该是 int len = para.length();
sb.append("Content-Length:"+len+"\r\n");
[/Quote]老大,感激涕零啊!
paodan 2010-11-02
  • 打赏
  • 举报
回复
你的sb.append("Content-Length:43\r\n");
算错了,长度应该是你要发送消息体的长度,即 String para得长度,HTTP协议中,如果你的长度计算错误,那么服务器就会一直在等待读取,导致超时。
应该是 int len = para.length();
sb.append("Content-Length:"+len+"\r\n");

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧