关闭

java实现使用url传递paramString和paramStream

标签: java访问url
1904人阅读 评论(0) 收藏 举报
分类:

一、传递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
0
查看评论

恋恋加密算法解析

恋恋加密算法分析,从Java层到native层再到Java层
  • PandaOS
  • PandaOS
  • 2016-04-27 18:52
  • 1540

params 传参 params string[] param

为了将方法声明为可以接受可变数量参数的方法,我们可以使用params关键字来声明数组     如下所示: public static Int32Add(params Int32[] values) {      Int32 su...
  • dingxingmei
  • dingxingmei
  • 2013-10-31 16:16
  • 2134

另类数组(如String... params)

 大家看: /**     * メッセージ取  * @param id  * @param params  * @return メッセージ内容  */ public String getMe...
  • it_man
  • it_man
  • 2006-07-27 16:37
  • 7676

Java语言后台实现调用url路径并传参

  • 2016-09-06 15:21
  • 917KB
  • 下载

JAVA基础(21) java代码替换指定url里的参数值

1.问题如下; 已知字符串url ="adminHeanderMenu.do/action=menu&processId=6898&t=5454654654654",java后台代码发现参数processId里的值不是想要的,需要替换成"6547&qu...
  • zengdeqing2012
  • zengdeqing2012
  • 2016-03-18 13:20
  • 3227

关于JAVA中URL传递中文参数,取值是乱码的解决办法

简单的方式(2.在后台通过解码来接收该中文参数 ) : 在url里面的中文不受你上面设置的编码的限制,它是unicode格式传输的,跟服务器的编码相关,如果你把服务器的编码设置为utf-8或者gbk也可以解决。 在servlet.xml中的中加上属性URLEncoding="gbk&...
  • q1054261752
  • q1054261752
  • 2016-09-06 21:35
  • 5571

Java语言后台实现调用url路径并传参

**首先:需要俩jar包,可以在我个人资源库里下载 package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io...
  • Xingshuai0711
  • Xingshuai0711
  • 2016-09-06 15:18
  • 1737

Java多参数方法test(String... params)

Java多参数方法,就是说在不清楚参数应该放多少情况下,只写一个方法就能实现。 可以参考Method.invoke(obj, args)这个方法,当然其他类也会有这里就不讨论了。   ? 1 2 3 4 5 ...
  • u012264122
  • u012264122
  • 2014-02-27 09:56
  • 9551

Java从URL获取数据并传JSON数据

百度和其他一些网站会公布一些公共API接口供调用,这里告诉如何使用Java获取url数据并读取数据。 URL url = new URL("http://api.baidu.com/[urlAddress]"); URLConnection uc = url....
  • mayaofr
  • mayaofr
  • 2015-05-10 16:58
  • 2241

(java gui) 和 (网页 js) 通过url传值(如json)时,注意问题

(java gui) 和 (网页 js)  通过url传值时,如果不涉及特殊字符可以不进行编码, 但是如果有特殊字符,比如中文,及符号 就要进行编码。 java 使用 java.net.URLEncoder.encode(str, "UTF-8");编码, java 使...
  • u013378306
  • u013378306
  • 2015-08-22 11:00
  • 1114
    个人资料
    • 访问:885896次
    • 积分:12879
    • 等级:
    • 排名:第1266名
    • 原创:423篇
    • 转载:64篇
    • 译文:54篇
    • 评论:102条
    博客专栏
    最新评论