java实现使用url传递paramString和paramStream
2015-11-19 20:03
726 查看
一、传递paramString
1、先新建一个纯servelet项目TestServer
(1)servlet代码:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
*@类功能说明:servlet,作为接收Url参数的测试
*@修改人员名: yang
*@修改日期: 2015-11-19 下午02:13:18
*@修改次数:
*@创建时间: 2015-11-19 下午02:13:18
*@版本:V1.0
*/
@SuppressWarnings("serial")
public class TestUrlServer extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 接收String参数
String param = (String) request.getParameter("param");
if (param != null) {
System.out.println("字符参数是:" + param);
} else {
System.out.println("空字符参数!");
}
}
}
(2)、配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 测试通过URL访问传递param和流 -->
<servlet>
<servlet-name>TestUrlServer</servlet-name>
<servlet-class>com.test.action.TestUrlServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestUrlServer</servlet-name>
<url-pattern>/testUrlServer</url-pattern>
</servlet-mapping>
</web-app>
2、新建一个测试类进行测试
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
/**
*
*@类功能说明:测试请求http://localhost:8080/
*@修改人员名: yang
*@修改日期: 2015-11-19 下午01:55:38
*@修改内容:
*@修改次数:
*@创建时间: 2015-11-19 下午01:55:38
*@版本:V1.0
*/
public class TestURL {
/**
* @方法功能说明: 测试将String串作为参数传递给 server
* @修改者名字: yang
* @修改日期: 2015-11-19
* @修改次数:
* @参数: @throws Exception
* @返回值 void
* @测试结果:
*/
@Test
public void testParamString(){
//param必须与servelt中的param名称一致
String urlString="http://localhost:8080/TestServer/testUrlServer?param=123456";
BufferedReader br=null;
try{
//创建url请求
URL url=new URL(urlString);
//连接请求协议
HttpURLConnection _url=(HttpURLConnection)url.openConnection();
//设置请求方法
_url.setRequestMethod("POST");
//设置请求开启连接
_url.connect();
//写入请求参数,记得把字节流转换成字符流
br=new BufferedReader(new InputStreamReader(_url.getInputStream()));
//实现读入内存的操作
String content="";
StringBuffer ss=new StringBuffer();
while((content=br.readLine())!=null){
ss.append(content);
}
}catch(Exception e){
throw new RuntimeException(e);
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
二、传递pramStream(传递流)
1、新建servlet代码
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
*@类功能说明:servlet,作为接收Url参数的测试
*@修改人员名: yang
*@修改日期: 2015-11-19 下午02:13:18
*@修改次数:
*@创建时间: 2015-11-19 下午02:13:18
*@版本:V1.0
*/
@SuppressWarnings("serial")
public class TestUrlServer extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 接收request文件流
InputStream in = request.getInputStream();
//接收传递的文件名称filename
String name = request.getHeader("filename");
//写入文件到本地,如果不确定文件是什么类型,那么可以拼接或者采用其他方式处理
FileOutputStream fos = new FileOutputStream("D:/"+name+".log");
//写入文件流到文件中
byte[] buffer = new byte[1024];
int bytes = 0;
while ((bytes = in.read(buffer)) != -1) {
fos.write(buffer, 0, bytes);
}
in.close();
fos.flush();
fos.close();
}
}
}
2、对应的web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 测试通过URL访问传递param和流 -->
<servlet>
<servlet-name>TestUrlServer</servlet-name>
<servlet-class>com.test.action.TestUrlServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestUrlServer</servlet-name>
<url-pattern>/testUrlServer</url-pattern>
</servlet-mapping>
</web-app>
3、新建一个测试类进行测试
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
/**
*
*@类功能说明:测试请求http://localhost:8080/
*@修改人员名: yang
*@修改日期: 2015-11-19 下午01:55:38
*@修改内容:
*@修改次数:
*@创建时间: 2015-11-19 下午01:55:38
*@版本:V1.0
*/
public class TestURL {
/**
* @方法功能说明: 测试将流作为参数传递给servlet
* @修改者名字: yang
* @修改日期: 2015-11-19
* @修改次数:
* @参数: @throws Exception
* @返回值 void
* @测试结果:
*/
@Test
public void testParamStream() throws Exception{
//传递的文件名称,用于给server的接收参数取文件名称
String filename="paramStream";
//需要传递的文件
String path="D:/qq.log";
//访问的url路径
String severUrl = "http://localhost:8080/TestServer/testUrlServer";
//创建url连接
URL url = new URL(severUrl);
HttpURLConnection h_urlcon = (HttpURLConnection) url.openConnection();
//在JDK 1.5以后可以这样来设置超时时间 (毫秒)
//设置连接主机超时时间30s
h_urlcon.setConnectTimeout(30000);
//设置读取数据超时时间30秒
h_urlcon.setReadTimeout(30000);
//设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
//http正文中,设置为true,默认是false
h_urlcon.setDoOutput(true);
//设置是否从httpUrlConnection读取,默认为true
h_urlcon.setDoInput(true);
h_urlcon.setChunkedStreamingMode(1024*1024);
//默认是get方法
h_urlcon.setRequestMethod("POST");
h_urlcon.setRequestProperty("connection", "Keep-Alive");
h_urlcon.setRequestProperty("charsert", "GBK");
//设定传送的内容类型是可序列化的java对象,如果不设置,可能在web服务器传送序列化对象时会抛出java.io.Exception异常
h_urlcon.setRequestProperty("content-Type","multipart/form-data;file="+filename);
//server接收时的参数名称为filename
h_urlcon.setRequestProperty("filename",filename);
//写到内存给url
OutputStream out = new DataOutputStream(h_urlcon.getOutputStream());
DataInputStream in = new DataInputStream(new FileInputStream(path));
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
in.close();
out.flush();
out.close();
}
}
注:以上测试已经通过,可以依照情况进行修改后使用!
1、先新建一个纯servelet项目TestServer
(1)servlet代码:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
*@类功能说明:servlet,作为接收Url参数的测试
*@修改人员名: yang
*@修改日期: 2015-11-19 下午02:13:18
*@修改次数:
*@创建时间: 2015-11-19 下午02:13:18
*@版本:V1.0
*/
@SuppressWarnings("serial")
public class TestUrlServer extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 接收String参数
String param = (String) request.getParameter("param");
if (param != null) {
System.out.println("字符参数是:" + param);
} else {
System.out.println("空字符参数!");
}
}
}
(2)、配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 测试通过URL访问传递param和流 -->
<servlet>
<servlet-name>TestUrlServer</servlet-name>
<servlet-class>com.test.action.TestUrlServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestUrlServer</servlet-name>
<url-pattern>/testUrlServer</url-pattern>
</servlet-mapping>
</web-app>
2、新建一个测试类进行测试
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
/**
*
*@类功能说明:测试请求http://localhost:8080/
*@修改人员名: yang
*@修改日期: 2015-11-19 下午01:55:38
*@修改内容:
*@修改次数:
*@创建时间: 2015-11-19 下午01:55:38
*@版本:V1.0
*/
public class TestURL {
/**
* @方法功能说明: 测试将String串作为参数传递给 server
* @修改者名字: yang
* @修改日期: 2015-11-19
* @修改次数:
* @参数: @throws Exception
* @返回值 void
* @测试结果:
*/
@Test
public void testParamString(){
//param必须与servelt中的param名称一致
String urlString="http://localhost:8080/TestServer/testUrlServer?param=123456";
BufferedReader br=null;
try{
//创建url请求
URL url=new URL(urlString);
//连接请求协议
HttpURLConnection _url=(HttpURLConnection)url.openConnection();
//设置请求方法
_url.setRequestMethod("POST");
//设置请求开启连接
_url.connect();
//写入请求参数,记得把字节流转换成字符流
br=new BufferedReader(new InputStreamReader(_url.getInputStream()));
//实现读入内存的操作
String content="";
StringBuffer ss=new StringBuffer();
while((content=br.readLine())!=null){
ss.append(content);
}
}catch(Exception e){
throw new RuntimeException(e);
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
二、传递pramStream(传递流)
1、新建servlet代码
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
*@类功能说明:servlet,作为接收Url参数的测试
*@修改人员名: yang
*@修改日期: 2015-11-19 下午02:13:18
*@修改次数:
*@创建时间: 2015-11-19 下午02:13:18
*@版本:V1.0
*/
@SuppressWarnings("serial")
public class TestUrlServer extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 接收request文件流
InputStream in = request.getInputStream();
//接收传递的文件名称filename
String name = request.getHeader("filename");
//写入文件到本地,如果不确定文件是什么类型,那么可以拼接或者采用其他方式处理
FileOutputStream fos = new FileOutputStream("D:/"+name+".log");
//写入文件流到文件中
byte[] buffer = new byte[1024];
int bytes = 0;
while ((bytes = in.read(buffer)) != -1) {
fos.write(buffer, 0, bytes);
}
in.close();
fos.flush();
fos.close();
}
}
}
2、对应的web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 测试通过URL访问传递param和流 -->
<servlet>
<servlet-name>TestUrlServer</servlet-name>
<servlet-class>com.test.action.TestUrlServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestUrlServer</servlet-name>
<url-pattern>/testUrlServer</url-pattern>
</servlet-mapping>
</web-app>
3、新建一个测试类进行测试
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
/**
*
*@类功能说明:测试请求http://localhost:8080/
*@修改人员名: yang
*@修改日期: 2015-11-19 下午01:55:38
*@修改内容:
*@修改次数:
*@创建时间: 2015-11-19 下午01:55:38
*@版本:V1.0
*/
public class TestURL {
/**
* @方法功能说明: 测试将流作为参数传递给servlet
* @修改者名字: yang
* @修改日期: 2015-11-19
* @修改次数:
* @参数: @throws Exception
* @返回值 void
* @测试结果:
*/
@Test
public void testParamStream() throws Exception{
//传递的文件名称,用于给server的接收参数取文件名称
String filename="paramStream";
//需要传递的文件
String path="D:/qq.log";
//访问的url路径
String severUrl = "http://localhost:8080/TestServer/testUrlServer";
//创建url连接
URL url = new URL(severUrl);
HttpURLConnection h_urlcon = (HttpURLConnection) url.openConnection();
//在JDK 1.5以后可以这样来设置超时时间 (毫秒)
//设置连接主机超时时间30s
h_urlcon.setConnectTimeout(30000);
//设置读取数据超时时间30秒
h_urlcon.setReadTimeout(30000);
//设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
//http正文中,设置为true,默认是false
h_urlcon.setDoOutput(true);
//设置是否从httpUrlConnection读取,默认为true
h_urlcon.setDoInput(true);
h_urlcon.setChunkedStreamingMode(1024*1024);
//默认是get方法
h_urlcon.setRequestMethod("POST");
h_urlcon.setRequestProperty("connection", "Keep-Alive");
h_urlcon.setRequestProperty("charsert", "GBK");
//设定传送的内容类型是可序列化的java对象,如果不设置,可能在web服务器传送序列化对象时会抛出java.io.Exception异常
h_urlcon.setRequestProperty("content-Type","multipart/form-data;file="+filename);
//server接收时的参数名称为filename
h_urlcon.setRequestProperty("filename",filename);
//写到内存给url
OutputStream out = new DataOutputStream(h_urlcon.getOutputStream());
DataInputStream in = new DataInputStream(new FileInputStream(path));
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
in.close();
out.flush();
out.close();
}
}
注:以上测试已经通过,可以依照情况进行修改后使用!
相关文章推荐
- intellij idea 15.01 java: constant string too long
- mybatis-spring最新版下载地址
- Spring 之注解事务 @Transactional
- Spring
- java循环链表实现约瑟夫环问题
- Java实战-山寨QQ
- Java异常处理(二)
- Java学习笔记--堆、栈、常量池
- 创建Java中的Pair类
- 人工鱼群算法java版
- Java中CountDownLatch、CyclicBarrier、Thread.join方法基本应用
- Jersey中Json与Java对象转换处理
- 解决:MyEclipse中SVN更新引起代码冲突导致部署失败
- java题目-1:输入20个学生的成绩,算出算出平均分和低于平均分的人数
- 几种 Java 序列化方案的性能比较
- Java 异常处理机制(一)
- highcharts+java
- 堆栈和队列的java实现
- java调用不在同一目录下的bat
- Spring并发访问的线程安全性问题