比如这样一个表单:<form action="Controller?ID=2006" method="post">
<table align="center">
<tr>
<th>
<input type="text" name="con" value="test" size=42 maxlength=100>
<input type="submit" name="b" value="搜索">
</th><th></th>
</tr>
<tr>
</tr>
</table>
</form>在java程序里怎么实现提交给服务器?用到哪个类?
<table align="center">
<tr>
<th>
<input type="text" name="con" value="test" size=42 maxlength=100>
<input type="submit" name="b" value="搜索">
</th><th></th>
</tr>
<tr>
</tr>
</table>
</form>在java程序里怎么实现提交给服务器?用到哪个类?
[/Quote][/Quote][/Quote][/Quote]
那么这个JSP页面在响应客户端请求的时候是运行服务器上的Servlet
如果你用的是Tomcat 可以在Tomcat安装目录\项目名\WEB-INF\org\apache\jsp\下找到对应的java源文件。
它实现的java中的Servlet类看一下《JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用》这本书package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
import java.net.*;public final class 页面名称_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {以Tomcat为例:
http://p.blog.csdn.net/images/p_blog_csdn_net/duduyumao/416109/t_servlet.JPG
http://p.blog.csdn.net/images/p_blog_csdn_net/duduyumao/416109/o_servlet.JPG不好意思不会贴图
<form action="Controller?ID=2006" method="post"> form里有几个参数,红色就是你要把表单提交到的路径(也就是服务器了),通过配置文件这个路径对应一个相应处理类,来处理的提交的表单信息,作出相应的处理,例如链接数据库,验证输入信息,然后跳转页面。
蓝色字体是提交的方式,有两种POST和GET,具体区别上网搜一下。
那就是post/get具体 数据流 的传送就要参考http协议、tcp/Ip协议
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;public class Browser
{
private String m_charSet; private String m_strUrl; private String m_strRequest; /**
* 构造函数
* @param strUrl http地址或https地址
*/
public Browser(String strUrl)
{
m_strUrl = strUrl;
m_strRequest = "";
m_charSet = System.getProperty("file.encoding");
if (m_charSet == null || m_charSet.equals(""))
{
m_charSet = "UTF-8";
}
} /**
* 设置编码
* @param strCharSet 编码字符串,如:GBK、UTF-8等
*/
public void setCharSet(String strCharSet)
{
m_charSet = strCharSet;
if (m_charSet == null || m_charSet.equals(""))
{
m_charSet = System.getProperty("file.encoding");
if (m_charSet == null || m_charSet.equals(""))
{
m_charSet = "UTF-8";
}
}
} /**
* 设置提交参数
* @param strName 参数的名字
* @param strValue 参数的值
* @throws UnsupportedEncodingException 编码格式不存在异常
*/
public void setParameter(String strName, String strValue) throws UnsupportedEncodingException
{
if (m_strRequest.equals(""))
{
m_strRequest = strName.trim() + "=" + URLEncoder.encode(strValue, m_charSet);
}
else
{
m_strRequest = m_strRequest + "&" + strName.trim() + "=" + URLEncoder.encode(strValue, m_charSet);
}
} /**
* 发送字符串内容
* @param strXml 字符串内容,通常是XML内容
* @return
* @throws IOException 异常信息
*/
public String sendXmlRequest(String strXml) throws IOException
{
String strTemp = m_strRequest;
m_strRequest = strXml;
String strResult = sendPostRequest();
m_strRequest = strTemp;
return strResult;
}
/**
* 发送申请
* @return 返回字符串
* @throws IOException 发送失败
*/
public String sendPostRequest() throws IOException
{
String strResponse = "";
URL url;
URLConnection urlConnection;
url = new URL(m_strUrl);
urlConnection = url.openConnection();
urlConnection.setDoOutput(true); // 需要向服务器写数据
urlConnection.setDoInput(true); //
urlConnection.setUseCaches(false); // 获得服务器最新的信息
urlConnection.setAllowUserInteraction(false);
urlConnection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
// 必须告诉服务器你发送的数据大小. 这也同样告诉
urlConnection.setRequestProperty("Content-length", "" + m_strRequest.length());
// Open an output stream so you can send the info you are posting
DataOutputStream dataOutputStream = new DataOutputStream(urlConnection.getOutputStream());
// Write out the actual request data
dataOutputStream.writeBytes(m_strRequest);
dataOutputStream.close();
// 判断访问服务器的返回值 DataInputStream dataInputStream = new DataInputStream(urlConnection.getInputStream());
int ch;
while ((ch = dataInputStream.read()) >= 0)
{
strResponse = strResponse + (char) ch;
}
dataInputStream.close(); byte byteBuffer[] = new byte[strResponse.length()];
for (int i = 0; i < strResponse.length(); i++)
{
byteBuffer[i] = (byte) strResponse.charAt(i);
}
strResponse = new String(byteBuffer); return strResponse;
}
}
建议将其中的URLConnection换成带有端口设置的Socket;这样处理可以对付服务器硬件防火墙的问题;