项目中遇到一个这样的需求:在本系统A中组装参数,然后再根据系统B提供的部分uri,组装一个完整的url类似
"http://127.0.0.1:8090/test/index.jsp?userId=123&prjId=51011 ;
通过http协议来访问系统B。当点击系统A中的链接,在浏览器中打开一个tab页展示系统B对应的内容。
就这么一个小小的需求,折腾了一天,不过问题总算解决了!在此记录!
第一反应使用重定向来说实现,但是重定向使用get方式提交,提交的参数长度是有限制的,大概256个字符吧
由于项目中组装的参数可能会超过256,则此种方法不能使用。
于是想到使用HttpClient,可是要使用HttpClient必须添加所依赖的jar,但是又不想添加jar,则此种方式作为
备用方案!
有同事说可以使用HttpUrlConnection,开发中遇到参数传递时,系统B中死活获取不到参数。于是查找原因,初
步确定为servlet在forward的时候,把参数给搞丢了。至今这个问题还没有想出解决方法,如果你有好的解决方
法,还请指点。。。
无奈只好使用HttpClient,实现方法很简单,直接贴代码吧
String postURL = "http://127.0.0.1:8090/test/index.jsp";
HttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET,"UTF-
8");
HttpPost httpPost = new HttpPost(postURL);
StringEntity reqEntity = new StringEntity(returnUrl(request, response),"UTF-8");
reqEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(reqEntity);
/*List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("USERNAME", "测试"));
nvps.add(new BasicNameValuePair("USERID", "123"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));*/
HttpResponse httpResponse = httpClient.execute(httpPost);
StatusLine status= httpResponse.getStatusLine();
if(200 == status.getStatusCode()){
HttpEntity httpEntity = httpResponse.getEntity();
if(httpEntity != null){
String htmlContext = EntityUtils.toString(httpEntity);
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(htmlContext);
//采用二进制输出中文乱码
//response.getOutputStream().print(new String(sbf.toString
().getBytes("ISO-8859-1"),"UTF-8"));
}
EntityUtils.consume(httpEntity);
}
httpClient.getConnectionManager().shutdown();
/*String uri = "http://127.0.0.1:8080/test/index.jsp"+"?"+returnUrl(request, response);
response.sendRedirect(uri);*/
注意:
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(htmlContext);
告诉浏览器怎么显示请求返回的数据。
分享到:
相关推荐
【标题】"用Java编写的简易浏览器"是一个项目,它展示了如何使用Java编程语言来创建一个基础的网络浏览应用程序。这个简易浏览器旨在提供基本的网页浏览功能,可能包括输入URL、加载网页、前进和后退等操作。在Java...
【描述】:本文将深入探讨如何使用Java编程语言开发一个基础的Web浏览器。这个浏览器能够接收用户在地址栏输入的正确URL,并加载显示对应的网页内容。我们将分析实现这一功能所需的关键技术和步骤。 【正文】: 1....
在构建浏览器时,你需要使用`java.net.URL`类来解析和打开网页URL,通过HttpURLConnection或者HttpClient发起HTTP请求获取网页数据。 2. **HTTP协议理解**:HTTP(超文本传输协议)是互联网上应用最为广泛的一种...
本项目“用Java写的一个简单Web浏览器”是一个基础的实践示例,旨在展示如何利用Java技术来实现一个基本的网页浏览功能。下面我们将详细探讨这个项目的相关知识点。 首先,Java Web开发的基础是Java标准版(Java SE...
Java浏览器课程设计是一门深入探讨如何使用Java编程语言构建一个功能完备的Web浏览器的实践性课程。这个项目旨在让学生理解网络通信的基本原理,掌握Java GUI(图形用户界面)设计,并了解浏览器背后的复杂工作流程...
Java作为一种跨平台的编程语言,其强大的灵活性和丰富的类库使得开发者可以使用它来实现各种应用程序,包括一个简单的HTML浏览器。这个项目的核心是利用Java的Swing或JavaFX库来创建用户界面,并通过Java的网络功能...
Java 编写浏览器接口是一个有趣且实用的编程挑战,它涉及到网络通信、用户界面设计以及对Web标准的理解。Java作为一种跨平台的编程语言,提供了丰富的库和API来帮助开发者实现这个目标。以下是一些关键的知识点,...
这个项目可能是一个学习示例或者一个简单的浏览器原型,用于演示如何在Java环境中处理网络请求和显示网页内容。下面将详细介绍这个项目可能涉及的关键知识点。 1. **Java基础**: - **Java语法**:编写HTML浏览器...
在本资源中,我们拥有一个名为"java源码:Java编写的HTML浏览器.rar"的压缩包,这显然是一份使用Java编程语言实现的简单HTML浏览器的源代码。这个项目可能是为了教学目的或作为理解Web浏览器工作原理的一个起点。让...
4. **用户界面设计**:为了提供用户友好的体验,网络浏览器需要一个图形用户界面(GUI)。Java Swing或JavaFX库可用于创建GUI。Swing提供了一系列组件如`JFrame`(窗口)、`JButton`(按钮)、`JLabel`(标签)和`...
【广东工业大学-java课程作业-基于java的网页浏览器.zip】是一个包含珍贵学习资源的压缩包,主要涉及使用Java语言开发一个基于Java的网页浏览器项目。这个项目对于深入理解Java编程、网络编程以及图形用户界面(GUI...
- **URL和URLConnection**:Java内置了处理URL的类,用于解析和打开网页链接,通过URLConnection发送GET或POST请求。 4. **HTML解析**: - **DOM解析**:使用如Java的javax.xml.parsers.DocumentBuilderFactory...
在本压缩包“基于Java的实例源码-编写的HTML浏览器.zip”中,包含的是一个使用Java编程语言实现的简单HTML浏览器项目。这个项目对于学习Java GUI编程、网络编程以及HTML解析具有很好的参考价值。接下来,我们将深入...
函数内部调用了`window.open`方法打开一个新的浏览器窗口,URL指向服务器上的`getExecl.do` action。这样做是为了触发后台生成Excel报表的逻辑,并将生成的Excel数据通过HTTP响应发送回前端。 接下来,我们关注后端...
其中,Lodop 打印控件是一个非常实用的打印控件,它提供了很多有用的功能,如预览打印、静默打印等。但需要注意的是,Lodop 的静默打印功能是需要收费的,而预览打印是免费的。在使用 Lodop 打印控件时,我们需要将...
5. **父窗口与子窗口的通信**:在JavaScript中,`window.open()`方法用于打开新的浏览器窗口,创建一个子窗口。一旦子窗口被创建,可以通过`window`对象的属性(如`opener`)与父窗口进行通信。例如,子窗口可以修改...
在设计这个Java浏览器时,首先需要实现一个URL解析器,它能够处理用户输入的网址并将其转换为网络资源的地址。这涉及到对HTTP协议的理解,包括GET和POST请求的处理。HTTP是互联网上应用最广泛的数据通信协议,负责在...
它允许开发者在应用程序内嵌入一个浏览器引擎,从而实现浏览网页的功能。开发者需要了解如何初始化WebView,加载URL,设置WebView的属性(如是否允许JavaScript执行、自适应屏幕大小等),以及如何处理WebView内的...
最后,“nginx强制使用https访问(http跳转到https) - yun007 - 博客园.url”可能是一个关于服务器端配置的链接,讲解如何通过Nginx服务器配置规则,将HTTP请求自动转换为HTTPS,以实现全站HTTPS加密。 综上所述,...