HttpClient以及获取页面内容应用
压缩包中含有多个文档,从了解httpclient到应用。
httpClient
1httpClint
1.1简介
HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。
下载地址:
http://hc.apache.org/downloads.cgi
1.2特性
1. 基于标准、纯净的java语言。实现了Http1.0和Http1.1
2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
3. 支持HTTPS协议。
4. 通过Http代理建立透明的连接。
5. 利用CONNECT方法通过Http代理建立隧道的https连接。
6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。
7. 插件式的自定义认证方案。
8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案。
9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。
10. 自动处理Set-Cookie中的Cookie。
11. 插件式的自定义Cookie策略。
12. Request的输出流可以避免流中内容直接缓冲到socket服务器。
13. Response的输入流可以有效的从socket服务器直接读取相应内容。
14. 在http1.0和http1.1中利用KeepAlive保持持久连接。
15. 直接获取服务器发送的response code和 headers。
16. 设置连接超时的能力。
17. 实验性的支持http1.1 response caching。
18. 源代码基于Apache License 可免费获取。
1.3版本
org.apache.http.impl.client.HttpClients 与 org.apache.commons.httpclient.HttpClient目前后者已被废弃,apache已不再支持。
一般而言,使用HttpClient均需导入httpclient.jar与httpclient-core.jar2个包。
1.4使用方法与步骤
开发环境:需要
使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1.创建HttpClient对象。
HttpClient client = new HttpClient();
2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
//使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的 http换成https
HttpMethod method = new GetMethod("http://www.baidu.com");
//使用POST方法
HttpMethod method = new PostMethod("http://java.sun.com";);
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
3.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
client.executeMethod(method);
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
//打印服务器返回的状态
System.out.println(method.getStatusLine());
//打印返回的信息
System.out.println(method.getResponseBodyAsString(
apache+tomcat 实现负载均衡
概念:
AJP是Apache提供的完成与其它服务器通讯的一种协议。在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块。
配置过程:
1 安装apache
2 测试apache是否安装成功:http://localhost
出现It works!
3 解压、安装tocmat
4 测试tocmat是否安装成功:http://localhost:8080
5 配置tocmat的jdk:
打开startup.bat添加:
rem ----------------------------------------------------JDK目录
SET JAVA_HOME=D:\progam\jdk160_05
rem ----------------------------------------------------解压后Tomcat的目录
6 复制tocmat,名字为tomcat2
7 apache 整合tomcat
1)modules目录下添加模块:jk
mod_jk-1.2.26-httpd-2.2.4.so
2)修改conf/httpd.conf
最后一行添加:
include conf/mod_jk.conf
3)在conf目录下创建mok_jk.conf
内容:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
4)在confi目录下创建workers.properties
内容为:
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.9.210
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #加权因子 越大执行的请求越多
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host=192.168.9.210
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
5 修改tomcat的端口号(3处)
<Server port="8005" shutdown="SHUTDOWN">
改为:
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
改为:
<Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
改为:
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/>
注意:该处需要与worker.tomcat2.port=9009对应
6 修改jvmRoute
备注与worker.list = controller,tomcat1,tomcat2的tomcat1或tocmat2对应
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
java项目 发送手机短信 技术
有几份自己在网上搜的资料,有jar包,还有资源网址,很全面的资料,只需要下载下来走一遍就会了,so easy 。 实现了给手机发短信功能。
JavaWEB 第三方登录 技术
在网上搜了很多第三方登录的技术,都是手机端的,没有合适的,我提供的是javaWEB中的第三方登录,并提供demo,将第三方用户信息存入数据库,是一般项目中常用到的技术。望采纳,很简单,我写明了很简单的文档。一目了然。so easy.
网页 QQ 客服 技术
提供了一个文档,是网页中常见的侧边栏的QQ咨询客服的技术。另外附送了一个第三方登录技术。都不需要什么插件 ,都是几行代码就可以搞定。希望大家能够采纳。so easy. 特别简单。
发送QQ邮件send Email
有时间研究了一下小技术,包含一个学习的demo 还有一个自己测试成功的demo。
希望能提供帮助。限于用QQ邮箱发送邮件。
Java项目 不用部署。拿来就用。
so easy!
windows下MySql配置主从
最近用到的,配置 主从数据库,亲自使用成功的文档分享给大家,希望有帮助。
Nginx+Tomcat负载均衡
最近学习Nginx+tomcat实现 负载均衡。
首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。
从网上查了好多资料,多走了很多弯路,现在把自己成功的方法拿出来与大家分享。
Window7
我是在Win7上做的。不是什么Linux,网上好多资料,特别麻烦。
Nginx
Nginx 比较好找到,直接去网上下载 网址:
http://nginx.org/en/download.html
版本不作要求了,(比如1.2.9版本),都有。
JDK
JAVA的各种环境都要有。
版本不要求
Tomcat
这里我给大家提供tomcat6
Tomcat各种版本的下载地址我也提供给大家:http://tomcat.apache.org/download-60.cgi
大家可以先用我tomcat6 学会了,在下载自己需要的版本。
词条科普
另外我把实现过程中遇到的知识点都总结好了,一起提供给大家学习。
步骤:
注:本例程以一台win7机器为例子,即同一台机器上装一个nginx和2个Tomcat。
且安装了JDK。
便于管理将用到的资料放在一个文件夹下
我在D盘 创建 server 文件夹 .
1. Nginx 下载直接解压缩到server,点nginx.exe 执行
安装后如果可用,可在任务管理其中找到如图类似,并且在浏览器中输入
http://localhost/
浏览器显示如下两个图 说明成功
2.Tomcat
同样将自己下载的或者我提供的tomcat 放到D盘的server下不过要复制成两份或者多份。
命名如:(便于区别 我们只用两个来讲解 ,多个tomcat和两个原理是一样的)
1、server.xml配置
我们需要在一台机器上跑 2 个不同的 tomcat ,避免出现端口被占用的情况,为了规范统一,我们修改全部tomca端口。分别找到tomcat6的1和2 的conf下的 server.xml。
修改Server端口
找到Server将:
改为
XXXX 在这里表示不同的端口:我的两个 tomcat 分别使用 8005和8006;
2.1.2、修改Connector端口
找到Connector将:
改为
XXXX 在这里表示不同的端口:我的两个 tomcat 分别使用 8081和8082;
2.1.3、修改Engine端口
找到Engine将:
改为
tomcatX 在这里表示不同的tomcat,我的两个 tomcat 分别使用 tomcat1和tomcat2;来区分。
这个设置是主要用以tomcat的集群。
如果看不懂可以去看我提供的tomcat我已经改好了。
启动tomcat服务
分别到两个tomcat下,直接双击D:\server\apache-tomcat-6.0.39_1\bin\startup.bat启动tomcat1
D:\server\apache-tomcat-6.0.39_2\bin\startup.bat启动tomcat2
出现以下页面表示启动成功
在浏览器中输入
http://localhost:8081
http://localhost:8082
出现
标示成功
3、Nginx+Tomcat负载均衡配置
首先创建两个文件,这两个文件 我来提供,将这两个文件拷入Nginx的conf文件夹下
1.proxy.conf 文件内容
#负责代理转发
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_
将项目打成jar包
操作及其简单,
ant是对项目编译,打包,部署
编译:将*.java文件打包成*.class文件
打包:将编译后的*.calss文件打包成 jar或war包;
部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去)
*******************************
ant默认执行build.xml文件
ant是使用的java文件编写,所以具有跨平台的特性。
再使用ant执行build.xml时必须在java的jre下的lib下的ext安装路径
把servlet-api.jar拷贝进去。
重新使用build.xml 命令打包即可.不然会出现javax.servlet.http 编译问题
将项目打成war包
特别简单 只需照着文档操作,就可实现。
ant是对项目编译,打包,部署
编译:将*.java文件打包成*.class文件
打包:将编译后的*.calss文件打包成 jar或war包;
部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去)
*******************************
ant默认执行build.xml文件
ant是使用的java文件编写,所以具有跨平台的特性。
再使用ant执行build.xml时必须在java的jre下的lib下的ext安装路径
把servlet-api.jar拷贝进去。
重新使用build.xml 命令打包即可.不然会出现javax.servlet.http 编译问题
zTree增删改查右击菜单
如果每个节点都配一个code 即我代码里的acurl
节点1的当前节点code为 0 1 0为根节点id 1为当前id 为间隔 用字符串拼接可以实现
节点2的当前节点code为 0 1 2 0为根节点id 1为节点1 的id 2为当前节点id
类推
事实上我插入数据库的并不是当前节点code 而是上级节点code
目的是新增节点时是无法获取新节点的id 导致当前节点code的最后一位无法实现拼接
所以存入的是上级的父节点code 这个是可以通过添加时的父节点id 从数据库查出
也就是上面代码的拼接
然后删除就变得简单了 用的是模糊删除
如删除节点2 code 码为上级code 实际节点code即0 1
需要拼接 上 当前节点的id 2 然后+% 模糊删除 节点2的子节点
还需一步删除节点2 代码如下 一目了然
如果删除的节点没有子节点 在页面时有一个判断 会调用另一个方法直接通过id删除 代码如下:
删除 如果有子节点 当前节点用id删除 而子节点用 code原理删除">如果每个节点都配一个code 即我代码里的acurl
节点1的当前节点code为 0 1 0为根节点id 1为当前id 为间隔 用字符串拼接可以实现
节点2的当前节点code为 0 1 2 0为根节点id 1为节点1 的id 2为当前节点id
类推
事实上 [更多]
网页视频播放插件
最近做的一个项目,网页中需要播放视频。
这里包括 我自己做的java工程的jsp里的 demo 和 js插件包..。
不用下载其他播放插件,轻巧简捷 只需两步:
1.把代码全部复制,更改一下视频路径
2.把js包放入项目里。然后访问html或者jsp页面即可
下面Html 或jsp页面代码 拷过去 改一下视频路径(有一些汉字注释 可以删掉)
<script type="text/javascript" src="/js/player/images/swfobject.js">
var so = new SWFObject("/js/player/CuPlayerMiniV4.swf","CuPlayerV4","600","410","9","#000000");
so.addParam("allowfullscreen","true");
so.addParam("allowscriptaccess","always");
so.addParam("wmode","opaque");
so.addParam("quality","high");
so.addParam("salign","lt");
so.addVariable("CuPlayerSetFile","/js/player/CuPlayerSetFile.xml");
so.addVariable("CuPlayerFile","videoURL(视频播放地址)"); //视频资源路径,可以动态赋值
so.addVariable("CuPlayerImage","/js/player/images/start.jpg");//视频略缩图,本图片文件必须正确
so.addVariable("CuPlayerWidth","600"); //视频宽度
so.addVariable("CuPlayerHeight","410"); //视频高度
so.addVariable("CuPlayerAutoPlay","yes"); //是否自动播放
so.write("CuPlayer");
Aptana Myeclipse第三份
每个资源一分,下载后评价可以返还注意:由于我只能上传 60M的文件 ,而aptana的压缩包有130M左右 所以我把 plugins文件分成了三分 ,下载完三分 把三个plugins 的jar放到一个plugins下即可 不好意思了 我用的是myeclipse 8.5 其他版本应该也可以 大家可以试一下。
取features、plugins文件夹 放在 一个文件夹里 可以命名为aptana,然后 放在 myeclipse 8.5的安装路径下的dropins文件夹下,并在该文件夹下新建aptana.link文件(新建txt文件、然后将其后缀名修改为.link)
Aptana Myeclipse第二份
每个资源一分,下载后评价可以返还注意:由于我只能上传 60M的文件 ,而aptana的压缩包有130M左右 所以我把 plugins文件分成了三分 ,下载完三分 把三个plugins 的jar放到一个plugins下即可 不好意思了 我用的是myeclipse 8.5 其他版本应该也可以 大家可以试一下。
取features、plugins文件夹 放在 一个文件夹里 可以命名为aptana,然后 放在 myeclipse 8.5的安装路径下的dropins文件夹下,并在该文件夹下新建aptana.link文件(新建txt文件、然后将其后缀名修改为.link)
Aptana Myeclipse第一份
每个资源一分,下载后评价可以返还注意:由于我只能上传 60M的文件 ,而aptana的压缩包有130M左右 所以我把 plugins文件分成了三分 ,下载完三分 把三个plugins 的jar放到一个plugins下即可 不好意思了 我用的是myeclipse 8.5 其他版本应该也可以 大家可以试一下。
取features、plugins文件夹 放在 一个文件夹里 可以命名为aptana,然后 放在 myeclipse 8.5的安装路径下的dropins文件夹下,并在该文件夹下新建aptana.link文件(新建txt文件、然后将其后缀名修改为.link)
Mybatis现学现用
以最短的时间学会Mybatis,并使用到项目中,包括搜集的很多资料;很全很全:并且有项目实例 例如:mybatis中的#和$的区别?
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
3. #方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入。
5.$方式一般用于传入数据库对象,例如传入表名.
6.一般能用#的就别用$.
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。
Project2003教学教程
project 2003 软件+教程 +教学+ 入门 +示例
项目管理离不开管理工具的支持,office 办公软件 Project 2003是Microsoft发布的中文版Office 2003软件包中基于Windows操作系统的项目管理软件,它以其强大的功能、友好的界面吸引了众多的用户,成为目前最受欢迎的项目管理软件之一。
还有很多其他版本2007 2010 2013 也有很多其他软件用来管理项目。
软件优点:全面的项目跟踪与评估功能,更有效地进行项目沟通和交流
提供了丰富的帮助手段 .与其他Office系列其他产品的集成,分配资源,跟踪项目绩效,自定义项目计划,生成预定义的报告 ,格式化自定义的报告并且打印 ,为其他程序提供项目数据 ,Visio图示附件