请教高手给些思路

需求:
客户端是以swing做的界面,用户输入用户名和密码后,点击确定后关闭当前swing窗口,然后打开浏览器以[color=red]post[/color]方式提交到服务器。
麻烦各位高手给些意见, [color=red]关键是怎样以post方式提交到web服务器[/color],[color=blue]谢谢了~~!!![/color]
[b]问题补充:[/b]
能不能在发送post请求的同时,打开浏览器,在浏览器中执行,像一般的web项目那样呢?
[b]问题补充:[/b]
我现在就有这种困惑,因为客户端都是终端机,不能用cookies,还必须以post方式,不知道该怎么设置session来保证当前登陆的用户
[b]问题补充:[/b]
谢谢各位帮忙!!!

收获很多

使用HttpURLConnection试试

je上有这么一篇文~~
http://benlsoft.iteye.com/blog/97059

用httpclient很容易实现

参考例子文章

http://www.blogjava.net/wangxinsh55/archive/2009/06/25/284149.html

http://www.99inf.net/SoftwareDev/Java/54529.htm

可以打开浏览器,但应该做不到用浏览器自动提交

还是一样的session处理嘛,用户以哪种方式提交http请求这又没什么关系,你的应用只不过把他当一般用户处理嘛,

[color=blue]使用JavaSE中的URLConnection,链接到服务器,并向服务器提交参数信息。支持GET、POST(已测试)。
见代码:
[/color]

服务器端:
[code="java"]
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.println("这是测试Java Socket 链接的");
    String param = request.getParameter("id");
    out.println("输入的参数:"+param);
    out.println("</HTML>");
    out.flush();
    out.close();
}

}
[/code]

JavaSE的客户端
[code="java"]
import java.io.*;
import java.net.*;

public class Hello {
public static void main(String[] args) throws Exception {

    // Post参数名
    String param = "id";
    // Post参数值
    String paramValue = "JavaSE传入的参数";
    //
    URL url = new URL("http://127.0.0.1:8080/webapp/servlet/HelloServlet");

    URLConnection connection = url.openConnection();

    // 设置为True可以向服务器提交数据
    connection.setDoOutput(true);

    // 向服务器提交数据
    OutputStreamWriter out = new OutputStreamWriter(connection
            .getOutputStream());
    out.write(param + "=" + paramValue);
    out.close();

    // 后续处理,根据实际情况。这里输入信息。
    BufferedReader in = new BufferedReader(new InputStreamReader(connection
            .getInputStream()));

    String decodedString;

    while ((decodedString = in.readLine()) != null) {
        System.out.println(decodedString);
    }
    in.close();
}

}

[/code]

可以先在本地的指定路径下(比如C盘根目录下的post.html)放入一个写好的html文件

其中写一段JavaScript代码 使在页面载入后就执行

如lz要提交到某个服务器
那么就可以在js代码中这么写
[code="js"]
window.location = http://***.com/xxxservlet
/code

在java方法中将要提交服务器的位置
写入以下代码
[code="java"]
try {

Runtime.getRuntime().exec("iexplore.exe C:\post.html") ;

}

catch(IOException ioe)

{

System.out.println("调用出错.");

}

[/code]
[color=red]前提是将C:\Program Files\Internet Explorer 加入环境变量中的Path[/color]

这样的话 就可以主动调用ie带访问那个html文件,最终达到以post方式提交服务器的
目的

补充一下:
[code="js"]window.location = http://***.com/xxxservlet [/code]
更正为
[code="js"]window.location = "http://***.com/xxxservlet" [/code]

还有如果不想改变Path的话
直接如下调用:
[code="java"]
try{

Runtime.getRuntime().exec("C:\Program Files\Internet Explorer\iexplore.exe C:\post.html") ;

}

catch(IOException ioe)

{

System.out.println("调用出错.");

}

[/code]

我刚试了下,是可以的哦

至于设置session的话

可以在那个html文件中先提供一个占位符,在cs程序中将调用ie之前,先将该文件中的占位符修改为客户标识

至于使用form提交还是直接post,看lz的选择了啊

使用telnet