java servlet 接收post_java 代码post表单数据到服务器,servlet接收处理
前言:
一般来说表单数据是在网页前端上面实现,在对应框内填入数据,点击提交按钮即将数据传递给后台(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接收处理相关推荐
- PHP 代码实现表单数据验证类 整理的各种情况
这篇文章主要介绍了PHP代码实现表单数据验证类,需要的朋友可以参考下 下面通过一段PHP代码实现表单数据验证类,具体介绍如下: 非常好用方便的表单数据验证类 --------------------- ...
- PHP代码实现表单数据验证类
下面通过一段PHP代码实现表单数据验证类,具体介绍如下: 非常好用方便的表单数据验证类 <?php //验证类 class Fun{ function isEmpty($val) { if (! ...
- php获取表单信息的代码_php 表单数据的获取代码
Form 姓名: 密码: 密码确认: 性别: 男 女 生日: E-mail: 职业: //本程序用于接收来自HTML页面的表单数据,并输出每个字段 echo "用户的输入如下所示: &quo ...
- android wifi接收数据库,Android客户端通过WiFi从TCP服务器(ESP8266-12E)接收数据
目标简介: 1)启动ESP8266 Wifi模块作为侦听特定端口的TCP服务器 - >到目前为止完成 2)从服务器发送int或String到Client 2)编写一个作为客户端的Android应 ...
- html表单数据提交服务器,form表单提交数据到服务器
[TOC] >[success] # form表单提交数据到服务器 ~~~ 下面案例通过'form表单'的方式提交给后台数据,在'index.html'页面'input'中输入内容提交给后台, ...
- java 遍历request_java 遍历request中的所有表单数据的实例代码
java 遍历request中的所有表单数据的实例代码 实例如下: Enumeration rnames=request.getParameterNames(); for (Enumeration e ...
- Struts2_4_ActionMap与ValueStack详解_Struct2的EL及常用标签_防止表单数据重复提交
接着Struts2_3_day的讲 注:使用Struts2的< s:debug>< /s:debug>就可获取数据储存的分布图 StrutsPrepareAndExecuteF ...
- java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...
下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- Java Servlet 开发常用代码、模板、问题
一 空Servlet类模板 import java.io.IOException; mport java.io.PrintWriter; import javax.servlet.ServletExc ...
最新文章
- legnano里的看板成员及权限规则?项目成员及规则?
- Plenty Of Tricks to Get Irradiance Caching Practical
- sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
- Nacos自定义扩展的 Data Id 配置
- @async 默认线程池_Springboot线程池的使用和扩展
- vs2008 及.netframework3.5 安装问题
- CCS各个版本软件的下载及安装说明(内涵有详细获取安装包以及步骤奥)
- CANoe——CanTest模块信号测试函数
- unity3d 取锚点位置_天涯明月刀手游草鱼在哪里钓 天涯明月刀草鱼位置及|天涯|明月-游戏资讯...
- 重绘回流个人理解版本
- 关于项目中数据库密码加密的使用
- VUE React Angular
- Linux系统常见的发行版本以及区别!
- 蓝桥杯STM32G431——RTC实时时钟
- 普博也有120万房补!40万安家费+50万科启,硕士也可入教职!浙江该高校大量招人...
- CF 2022寒假练习
- EXCEL如何合并单元格且保留全部内容
- 毕业论文设计:第二部分—激光雷达里程计研究
- Mac搭建Hexo博客流程记录
- 网站提示服务器磁盘空间不足,解决服务器磁盘空间不足