前言:

一般来说表单数据是在网页前端上面实现,在对应框内填入数据,点击提交按钮即将数据传递给后台(action的值指定负责处理表单数据的具体哪个servlet)。但是其实java代码也是可以远程post表单数据给服务器的Servlet程序,下面讲一讲详细步骤。

一、客户端

编写java程序

主要思想就是利用http协议,post数据到指定url地址。

直接看下面代码:代码摘自《java核心技术卷2第9版》,我稍作修改,使之更易看懂,原程序的数据来源是放在一个properites文件中,我为了程序好读懂改成在程序中直接对要传输的参数进行赋值。

数据传输是以键值对的方式(Key-Value)形式传送。可以传送很多对键值对,比如说(k1,v1)(k2,v2)  (k3,v3)......这所有的键值对都存放在Map集合当中,在服务器端,使用HttpServletRequest类的一个方法:getParameter("k1"),即可将客户端传来的k1对应的value值读到,以字符串返回。

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

public class AndroidPost {

public static void main(String[] args) throws IOException {

/**

url这里是一个重点,服务器端使用的servlet,是tomcat容器在负责调用,

tomcat默认的监听端口即是8080,IP地址如果是远程的或者使用的云服务器,

那就换成自己的IP,关键是8080端口后面的内容,test1其实是tomcat目录下的一个webapp,

test1可以理解成是一个tomcat下面的工程,而Upload_html这个则是具体的负责

接收java代码传来的数据的servlet名称,后缀.java省掉。同时在tomcat的test1工程下面

(或者说文件夹下面)要新建一个WEB-INF的文件夹,在这个文件夹下面要建一个

web.xml文件,在里面要进行配置才能把url这个地址和具体servlet程序关联起来。

后面会讲服务器端

**/

String url = "http://localhost:8080/test1/Upload_html";

String result = doPost(url, sendParam());

System.out.println(result);

System.out.println("come on");

}

public static Map sendParam() {

//这里用来存放键值对,为了程序看起来简单就手动输上去了

String key1 = "param1";

String value1 = "1";

String key2 = "param2";

String value2 = "14";

String key3 = "param3";

String value3 = "334";

HashMap param = new HashMap();

param.put(key1, value1);

param.put(key2, value2);

param.put(key3, value3);

return param;

}

public static String doPost(String urlString, Map nameValuePairs)

throws IOException {

URL url = new URL(urlString);//先new出一个URL地址,定位网络资源

URLConnection connection = url.openConnection();//打开连接

connection.setDoOutput(true);//使能往远程写操作

//把建立的http的连接流返回给PrintWriter

try (PrintWriter out = new PrintWriter(connection.getOutputStream())) {

boolean first = true;

for (Map.Entry pair : nameValuePairs.entrySet()) {

if (first)

first = false;

else

out.print('&');

String name = pair.getKey().toString();

String value = pair.getValue().toString();

out.print(name);

out.print('=');

out.print(URLEncoder.encode(value, "UTF-8"));

}

}

//下面的代码是去接收服务器端的反馈信号,将返回的信号全都存放在response这个对象中,

看一下api文档的StringBuilder类,就明白下面的代码了

StringBuilder response = new StringBuilder();

try (Scanner in = new Scanner(connection.getInputStream())) {

while (in.hasNextLine()) {

response.append(in.nextLine());

response.append("\n");

}

} catch (IOException e) {

if (!(connection instanceof HttpURLConnection))

throw e;

InputStream err = ((HttpURLConnection) connection).getErrorStream();

if (err == null)

throw e;

Scanner in = new Scanner(err);

response.append(in.nextLine());

response.append("\n");

in.close();

}

return response.toString();

}

}

这样一来,客户端就已经写好了。

二、服务器端

使用Servlet程序来做客户端的接收处理,而负责调用Servlet的是Tomcat,所以先下载安装好tomcat,其实特别简单就是下载解压然后放在某个目录就好了。这里有两种启动方式:

1、使用bin目录下的脚本文件,Linux下用startup.sh 、 shutdown.sh,在Windows平台下使用.bat后缀的脚本。

2、调试阶段其实可以使用eclipse来辅助,新建一个Server,把tomcat关联进去,百度一下有很多带图教程。

这里重点是讲Servlet端应该怎么编写:先上代码

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;

import com.sun.javafx.collections.MappingChange.Map;

public class Upload_html extends HttpServlet{

@Override

//客户端的连接被封装到request这个对象中,参数的提取也是从这个对象中拿

//而反馈给客户端的内容封装在response这个对象中,比如返回数据也是通过这个对象来完成

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

//将接收到的数据再返回给客户端

PrintWriter pw = response.getWriter();

//使用方法getParameter来获取键值对应的value值,这里的Key参数要和客户端传上来的Key值一样!

pw.println(request.getParameter("param1"));

pw.println(request.getParameter("param2"));

pw.println(request.getParameter("param3"));

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//跳转到doGet当中去处理

doGet(request, response);

}

}

服务端配置:

我这里以手动配置为例,不使用eclipse来辅助。

安装好tomcat目录结构如下:

进入webapps目录:

新建一个文件夹test1,并在test1这个目录下新建WEB-INF文件夹,并在WEB-INF文件夹下新建一个classes文件夹和web.xml文件

classes里面保存编写好的servlet文件的class文件,比如这里就应该是Upload_html.class文件。另外,在编写servlet文件的时候,会需要toncat安装目录下的一些jar包,主要是servlet-api.jar,目录如下

另外关键的就是web.xml的配置:

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID"

version="3.1">

test1

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

Upload_image

com.zhoucy.Upload_image

Upload_image

/Upload_image

Upload_html

com.zhoucy.Upload_html

Upload_html

/Upload_html

重点就是加红的部分。

/Upload_html这里填的值Upload_html就是决定客户端url的最后一个参数,

(千万注意有一个斜杠“/”一定要填上的)相当就是说,客户端运行以后,url就指定了Upload_html,

然后找到Upload_html ,再通过映射找到上面的两行代码

Upload_html  com.zhoucy.Upload_html,

最终找到com.zhoucy.Upload_html这个程序,我servlet代码当中是有package封包的,如果没有封包,那就直接程序名,

有封包就把包名也加上,当然.class文件也就得放在相应的包的路径下。

然后运行tomcat,客户端再运行java代码,注意把ip改好,就可以成功post数据到服务端了。

java servlet 接收post_java 代码post表单数据到服务器,servlet接收处理相关推荐

  1. PHP 代码实现表单数据验证类 整理的各种情况

    这篇文章主要介绍了PHP代码实现表单数据验证类,需要的朋友可以参考下 下面通过一段PHP代码实现表单数据验证类,具体介绍如下: 非常好用方便的表单数据验证类 --------------------- ...

  2. PHP代码实现表单数据验证类

    下面通过一段PHP代码实现表单数据验证类,具体介绍如下: 非常好用方便的表单数据验证类 <?php //验证类 class Fun{ function isEmpty($val) { if (! ...

  3. php获取表单信息的代码_php 表单数据的获取代码

    Form 姓名: 密码: 密码确认: 性别: 男 女 生日: E-mail: 职业: //本程序用于接收来自HTML页面的表单数据,并输出每个字段 echo "用户的输入如下所示: &quo ...

  4. android wifi接收数据库,Android客户端通过WiFi从TCP服务器(ESP8266-12E)接收数据

    目标简介: 1)启动ESP8266 Wifi模块作为侦听特定端口的TCP服务器 - >到目前为止完成 2)从服务器发送int或String到Client 2)编写一个作为客户端的Android应 ...

  5. html表单数据提交服务器,form表单提交数据到服务器

    [TOC] >[success] # form表单提交数据到服务器 ~~~ 下面案例通过'form表单'的方式提交给后台数据,在'index.html'页面'input'中输入内容提交给后台, ...

  6. java 遍历request_java 遍历request中的所有表单数据的实例代码

    java 遍历request中的所有表单数据的实例代码 实例如下: Enumeration rnames=request.getParameterNames(); for (Enumeration e ...

  7. Struts2_4_ActionMap与ValueStack详解_Struct2的EL及常用标签_防止表单数据重复提交

    接着Struts2_3_day的讲 注:使用Struts2的< s:debug>< /s:debug>就可获取数据储存的分布图 StrutsPrepareAndExecuteF ...

  8. java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  9. Java Servlet 开发常用代码、模板、问题

    一 空Servlet类模板 import java.io.IOException; mport java.io.PrintWriter; import javax.servlet.ServletExc ...

最新文章

  1. legnano里的看板成员及权限规则?项目成员及规则?
  2. Plenty Of Tricks to Get Irradiance Caching Practical
  3. sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
  4. Nacos自定义扩展的 Data Id 配置
  5. @async 默认线程池_Springboot线程池的使用和扩展
  6. vs2008 及.netframework3.5 安装问题
  7. CCS各个版本软件的下载及安装说明(内涵有详细获取安装包以及步骤奥)
  8. CANoe——CanTest模块信号测试函数
  9. unity3d 取锚点位置_天涯明月刀手游草鱼在哪里钓 天涯明月刀草鱼位置及|天涯|明月-游戏资讯...
  10. 重绘回流个人理解版本
  11. 关于项目中数据库密码加密的使用
  12. VUE React Angular
  13. Linux系统常见的发行版本以及区别!
  14. 蓝桥杯STM32G431——RTC实时时钟
  15. 普博也有120万房补!40万安家费+50万科启,硕士也可入教职!浙江该高校大量招人...
  16. CF 2022寒假练习
  17. EXCEL如何合并单元格且保留全部内容
  18. 毕业论文设计:第二部分—激光雷达里程计研究
  19. Mac搭建Hexo博客流程记录
  20. 网站提示服务器磁盘空间不足,解决服务器磁盘空间不足

热门文章

  1. UE4 性能优化方法(工具篇)
  2. OpenResty中使用反向代理
  3. WinForm DataGridView新增加行
  4. Jquery制作另一个炫丽广告栏-(VS2010版本)
  5. Photon服务器引擎入门
  6. 上接扩展GridView控件(10) - 自定义分页样式
  7. 《中国人工智能学会通讯》——12.33 众包知识库补全方法概览
  8. Portworx副总裁Eric Han接受InfoQ采访,介绍超融合容器市场的现状
  9. 虚拟网卡实现一个网卡多个地址
  10. Nmap绕过防火墙脚本的使用