LIULIANG

ubuntu11.10 安装kvm

在命令窗口中直接执行
sudo apt-get install qemu
就行了,我们这里采用的是简易安装
接下来我们安装Virtual Machine Manager
sudo  apt-get install virt-manager
,这样就行了。

posted @ 2012-08-30 21:39 BIG森林 阅读(211) | 评论 (0)编辑 收藏

ubuntu 11.10 安装与配置libvirt0.9.11.3

解压libvirt-0.9.11.3.tar.gz
cd libvirt-0.9.11.3
./configure
 
出现:
 
checking libxml2 xml2-config >= 2.6.0..
则:
sudo apt-get install libxml2 libxml2-dev
 
configrue: error: you must install the gnutls library in order to compile and run libvirt
sudo apt-get install gnutls-doc gnutls-bin
sudo apt-get install libneon27-gnutls libcurl4-gnutls-dev
 
又提示缺少device-mapper-devel
从网上下载device-mapper.1.02.28.tgz,然后解压缩tar -zxvf device-mapper.1.02.28.tgz,  
进入解压后的文件夹中:cd device-mapper.1.02.28。安装device-mapper。  
   (1) ./configure  
    (2) sudo make  
    (3) sudo make install  
    
然后退出该文件夹,重新安装libvirt  
You must install python-devel to build Python bindings
sudo apt-get install python-dev
 
configure: error: libnl-devel >= 1.1 is required for macvtap support
sudo apt-get install libnl-dev
 
最后:
sudo make
sudo make install
 
启动libvirt后台进程
sudo libvirtd &
 
更新动态链接库缓存
sudo ldconfig
 
c语言库的使用  
编辑好.c源码(例如myxm.cpp)后,在命令行下编译 gcc myxm.c -lvirt -o myxm  
然后运行./myxm即可
 
例子:
 
#include <stdio.h>
#include <stdlib.h>
#include <libvirt/libvirt.h>
 
int main()
{
    printf("Hello World!\n");
    
    virConnectPtr conn=NULL;
    conn=virConnectOpenReadOnly(NULL);
    if(conn==NULL)
    {
        printf("conn is null!\n");
    }
    else
    {
        printf("connecting is successful!\n");
    }
    
    return 0;
}
 
使用过程出现的问题:
 
解决error while loading shared libraries: libvirt.so.0
第一种:
定义shell变量 LD_LIBRARY_PATH
$ LD_LIBRARY_PATH=/usr/local/lib
$ export LD_LIBRARY_PATH
$ ./example
第二种:
修改系统动态链接库配置文件
(the system dynamic linker configuration)
进入目录/etc/ld.so.conf.d
添加一个文件libvirt.conf,内容是:
# libvirt default configuration
/usr/local/lib
更新动态链接库缓存
sudo ldconfig
 
sudo apt-get install libxml2 libxml2-dev gnutls-doc gnutls-bin libneon27-gnutls libcurl4-gnutls-dev python-dev libnl-dev

posted @ 2012-08-30 21:37 BIG森林 阅读(557) | 评论 (0)编辑 收藏

安装、配置、开启ssh服务

安装、配置、开启ssh服务

sudo apt-get install openssh-server

Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。

然后确认sshserver是否启动了:

ps -e |grep ssh
就是如下就表示已经开启了ssh服务:
root@ub-virtual-machine:~# ps -e |grep ssh
 1420 ?        00:00:00 ssh-agent
 3682 ?        00:00:00 sshd

如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。

ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号。为了更安全,建议更改端口,然后重启SSH服务:

sudo /etc/init.d/ssh resart

posted @ 2012-08-30 21:34 BIG森林 阅读(279) | 评论 (0)编辑 收藏

转 基于Tight VNC的远程协助功能的实现

整体布局

  在远程协助中,请求协助的一方称为被协助方,或者(远程协助)服务端;响应的一方称为协助方,或者(远程协助)客户端;这里命名被协助方为Cv,而协助方命名为Cs,中转服务器为Sr。

  TightVNC是免费为个人和商业用途,提供有用的,完整的源代码, 在管理,技术支持,教育和许多其他用途, 跨平台,可用于Windows和Unix,Java客户端,包括 与标准的VNC软件兼容,符合RFB协议规范。

TightVNC 分为Server和 Viewer两部分,Server作为请求协助端,Viewer协助端亦即是Cs和Cv 。

  Repeater为中转服务器Sr,当Server连接Viewer是,通过Sr相互转发数据。对Cs的监控端口为5500,Cv的监控端口为5900,当然5500、5900都是vnc的默认端口,这样会引起其他一些VNC软件的冲突,所以Cs和Cv监控端口都需要修改。

整个设备架设可简化为如图1所示,分为情况

1)     协助用户Cv和请求协助用户Cs1在同一局域网内,这时Cv与Cs1可以直接进行TCP通信;

2)     协助用户Cv和请求协助用户Cs2不在同一局域网内,这时Cv与Cs2只能通过中转服务器相互转发数据进行通信。

 

 

 整体布局

 

流程图

一、被协助用户Cs请求协助用户Cv的协助过程流程图如图2所示;

 Cs请求Cv协助过程流程图

1)     被协助者

  1. 用户界面操作响应,向在线用户发送1301请求(远程协助请求)。
  2. 1301-Confirmation消息处理:

如果对方拒绝接受请求,显示信息窗口,提示“远程请求被对方拒绝”。

如果对方接受请求,则创建远程协助对象;是否允许对方查看,调用远程协助对象的StartServer,参数为对方用户ID。

申请受控请求

2)     协助者

  1. 处理1301-Request消息。

窗口提示用户“xxxx发出远程协助邀请,您是否同意?”;如果“同意”则创建远程协助对象,调用远程协助对象Connect方法,连接对方的IP以及Port,建立TCP连接。调用用远程协助对象的SetHost(),参数为用户自己ID。

  1. 处理申请受控消息。

调用用远程协助对象的SetViewOnly(),参数为false;远程协助建立成功。

双方通过中转服务器或者直接建立TCP连接,完成远程协助以及数据交互。

二、Server两种请求协助方式Connect和Listen

1)     在局域网中Server端和 Viewer端如果能够直接进行TCP通信的时,这时就不需要通过中转服务器,Viewer直接连接Server。流程图如图3所示

 

 

Cv与Cs直接进行TCP通信流程图

2)     当Server端和 Viewer端不能直接的TCP通信时,亦就可能是在两个不同的局域网中,这时就需要通过中转服务器Repeater进行Server端和 Viewer端的消息转发。流程图如图4所示

 

Cv与Cs通过Repeater通信流程图

远程协助插件设计方案

将Server和 Viewer封装在两个动态库中,分别为RemoteHelpServer和RemoteHelpViewer,外部调用RemoteHelpServer和RemoteHelpViewer时,应为单实例调用,即是已经作为一个客户端或者是服务器端时,不能再与其他人进行远程协助。

外部接口包括:连接方式、调节画面质量、画面模式和协助方式等

  1. 连接方式:Viewer直连Server和通过Repeater与Server通信;
  2. 调节画面质量:1-9级别的lpeg图像压缩;
  3. 画面模式:8位和24位画面质量;
  4. 协助方式:仅屏幕查看和邀请方请求受控;
  5. 远程协助窗体模式:最大化,还原和最小化;
  6. 快捷键:Shift+Ctrl+Alt+F 全屏、ESC退出全屏。

RemoteHelpServer和RemoteHelpViewer动态库接口函数说明

Server端接口函数:

//参数:无

//返回值:Server端实例指针

//作用:创建远程协助Server端实例

RemoteHelpHandle *CreateRemoteHelpServer();

 

//参数:Server端实例指针

//返回值:无

//作用:销毁远程协助Server端实例

void DestoryRemoteHelpServer(RemoteHelpHandle *handle);

 

//参数:Server端实例指针,中转服务器IP及端口号

//返回值:成功时返回Socket指针

//作用:Server连接中转服务器

SocketIPv4 *ServerConnect(RemoteHelpHandle *handle,TCHAR *host,unsigned short port);

 

//参数:Server端实例指针,监听端口号

//返回值:成功时返回Socket指针

//作用:Server监听

SocketIPv4 *ServerListen(RemoteHelpHandle *handle,unsigned short port);

 

//参数:Server端实例指针,Socket指针,是否作为服务监听状态

//返回值:0,1

//作用:Server确认Viewer可以查看

int AddNewConnection(RemoteHelpHandle *handle,SocketIPv4 *socket,bool bIsListenMode);

 

//参数:Server端实例指针,连接凭证

//返回值:无

//作用:Server连接凭证

void SetServerConnectionTag(RemoteHelpHandle *handle,char *pszConnectionTag);

 

//参数:Server端实例指针

//返回值:无

//作用:Server端断开连接

void ServerDisconnect(RemoteHelpHandle *handle);

Viewer端接口函数:

//参数:无

//返回值:Viewer端实例指针

//作用:创建远程协助Viewer端实例

RemoteHelpHandle *CreateRemoteHelpViewer();

 

//参数:Viewer端实例指针

//返回值:无

//作用:销毁远程协助Viewer端实例

void  DestoryRemoteHelpViewer(RemoteHelpHandle *handle);

 

//参数:Viewer端实例指针,中转服务器IP及端口号

//返回值:关闭窗体时返回true,其它为false

//作用:Viewer连接中转服务器

bool  ViewerConnect(RemoteHelpHandle *handle,char *host,int port);

 

//参数:Viewer端实例指针,中转服务器IP及端口号

//返回值:关闭窗体时返回true,其它为false

//作用:Viewer连接中转服务器

void  SetViewerConnectionTag(RemoteHelpHandle *handle,char *pszConnectionTag);

 

//参数:Viewer端实例指针,是否使用8Bit

//返回值:无

//作用:远程协助图像质量,两种情况8Bit,24Bit

void  Set8BitColor(RemoteHelpHandle *handle,bool use8Bit);

 

//参数:Viewer端实例指针,压缩率级数

//返回值:无

//作用:远程协助图像压缩率

void setJpegCompressionLevel(RemoteHelpHandle *handle,int level);

 

//参数:Viewer端实例指针, 是否为只查看

//返回值:无

//作用:设置远程协助只查看或可控

void setViewOnly(RemoteHelpHandle *handle,bool viewOnly);

 

//参数:Viewer端实例指针, 是否为全屏

//返回值:无

//作用:设置远程协助窗体为全屏或退出全屏

void setFullScreenMode(RemoteHelpHandle *handle,bool fullScreenMode);

 

//参数:Viewer端实例指针

//返回值:无

//作用:Viewer端断开连接

void ViewerDisconnect(RemoteHelpHandle *handle);

程序界面

一、远程协助握手过程窗体界面显示:

  请求远程协助 

Viewer接受远程协助,等待确认Server确认查看

Server确认查看

 Server已申请受控 

二、客户端Cv:如图5所示,连接成功后分别有属性设置、最大化、断开等按钮;左下方为显示图像面板。

客户端Cv

三、属性设置:如图6所示,调节画面质量:1-9级别的lpeg图像压缩;画面模式:8位和24位画面质量

属性设置

四、客户端Cs:如图7所示,连接成功后,可以断开远程控制或者停止受控等操作。

客户端Cs

五、远程协助窗体:窗体模式分别有最大化,还原和最小化;快捷键分别有Shift+Ctrl+Alt+F 全屏、ESC退出全屏。当窗体最大化即全屏时,顶部出现工具条,可以控制窗体最大化,还原和最小化等操作,如图8所示,

 远程协助全屏模式

 注: 

  在这个功能刚开始做的时候,google 、百度了很多这方面的资料,无奈资料还是比较少的。其中有一篇论文《基于P2P的远程协助系统》,写得比较详细的方案,但最终没有实现P2P的方法,可能是一开始就走了弯路和现成的系统限制了,时间方面不允许和稳定性。

  《基于P2P的远程协助系统》里面写是通过本地代理,中转服务器建立桥梁实现远程协助通信。其中本地代理可以不管VNC里面代码的逻辑具体实现,只是负责通信,对远程协助与VNC版本轻松解耦,没有依赖VNC版本,可以不断地使VNC更新换代有重要意义。还有一个作用是可以TCP打洞实现P2P《TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞》,不依赖VNC内部发送规则。

  《TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞》一文中这位前辈写TCP实现P2P的方法,我想这对一些刚开始做TCP实现P2P通信有很大的帮助,感谢他的分享的精神,至少我对TCP实现P2P通信有所了解了。他所说的实现过程如下

  1、 S启动两个网络侦听,一个叫【主连接】侦听,一个叫【协助打洞】的侦听。
  2、 A和B分别与S的【主连接】保持联系。
  3、 当A需要和B建立直接的TCP连接时,首先连接S的【协助打洞】端口,并发送协助连接申请。同时在该端口号上启动侦听。注意由于要在相同的网络终端上绑定到不同的套接字上,所以必须为这些套接字设置 SO_REUSEADDR 属性(即允许重用),否则侦听会失败。
  4、 S的【协助打洞】连接收到A的申请后通过【主连接】通知B,并将A经过NAT-A转换后的公网IP地址和端口等信息告诉B。
  5、 B收到S的连接通知后首先与S的【协助打洞】端口连接,随便发送一些数据后立即断开,这样做的目的是让S能知道B经过NAT-B转换后的公网IP和端口号。
  6、 B尝试与A的经过NAT-A转换后的公网IP地址和端口进行connect,根据不同的路由器会有不同的结果,有些路由器在这个操作就能建立连接(例如我用的TPLink R402),大多数路由器对于不请自到的SYN请求包直接丢弃而导致connect失败,但NAT-A会纪录此次连接的源地址和端口号,为接下来真正的连接做好了准备,这就是所谓的打洞,即B向A打了一个洞,下次A就能直接连接到B刚才使用的端口号了。
  7、 客户端B打洞的同时在相同的端口上启动侦听。B在一切准备就绪以后通过与S的【主连接】回复消息“我已经准备好”,S在收到以后将B经过NAT-B转换后的公网IP和端口号告诉给A。
  8、 A收到S回复的B的公网IP和端口号等信息以后,开始连接到B公网IP和端口号,由于在步骤6中B曾经尝试连接过A的公网IP地址和端口,NAT-A纪录了此次连接的信息,所以当A主动连接B时,NAT-B会认为是合法的SYN数据,并允许通过,从而直接的TCP连接建立起来了。

  整个过程跟UDP打洞很类似,我认为他文中写可能是没有注重的写出一个重点,就是“Sock.SetSockOpt ( SO_REUSEADDR, &nOptValue , sizeof(UINT) )”其中的SO_REUSEADDR,因为这样以上的过程才能够实现。

  还有在OSChina里的一个讨论贴“C++实现TCP打洞的思想”,有些人说的tcp打洞无法实现,那些人我认为是根本没有去了解过吧,而且QQ的远程协助是TCP连接的,难道QQ的远程协助都是经服务器转发的?

  知识有限,基本上想说的都说了!


  

 转自:http://www.cnblogs.com/tony-law/archive/2012/03/29/2424045.html

posted @ 2012-08-24 22:48 BIG森林 阅读(562) | 评论 (0)编辑 收藏

SQL注入攻击--初学

    SQL注入攻击,虽然使用数据库已经有接两年了,也做过一个实际的项目,但是都没有注意到这个问题,可悲啊,现在回想起来上次做的系统,会不会也有这一类的完全隐患,不敢想啊,不过还没有交去改代码,就可能还没有大的问题,好了就说到这,今天在看web安全问题时,发现了SQL注入攻击,并且看到了一个关于SQL注入攻击的一个经典的例子,下面我们就演示一下吧,加强一下我的记忆,我也是刚接触SQL注入攻击,还希望熟悉SQL注入攻击人士给我指点指点。
  我们看一下这样一段代码(jsp页面)
    Statement stmt=conn.createStatement();
    String strCmd="select username from users where username="+" ' "+name+" 'and password=' "+pwd+" ' ";
   ResultSet rs=stmt.executeQuery(strCmd);
   if(rs.next()){
     session.setAttribute("user" ,name);
    response.sendRedirect("admin.jsp");
    return;
   }else{
     response.sendRedirect("login.jsp");
    return;
   }
  这段代码就是判断登陆的用户是否为管理员,如果是,就显示管理员页面,否则就让用户重新登陆。
  如果用户输入用户名zhangsan,密码1234
那么构造的SQL语句就是如下所示:
select username from users where username='zhangsan' and password='1234'
 如果恶意的用户通过查看我们的网页源代码,知道了表单中输入的用户名的文本域和口领域的名字,直接在浏览器中地址栏中输入的地址如下
  http://www.xxx.com:80/login.jsp?name=abc&password=111'or'1'=1
  这样就可以上顺利的访问管理员页面,为什么随便输入一个用户名和密码就能直接访问管理员页面呢?我们通过构造出来的SQL语句明白了,构造出来的SQL语句如下:
  select username from users where username='abc' and password='111'or'1'=1
这样我们就明白了为什么随便输入一个用户名和密码就能直接访问管理员页面吧,上面查询语句中最后一部分“or'1'=1”是个恒等式,这样就会将我们users表中的数据全部查询出来。我们可以使用存储过程来解决这个问题,关于怎样具体的去解决,这里就不说了。
这算是对SQL注入攻击的一个初识吧。

posted @ 2012-08-23 16:49 BIG森林 阅读(434) | 评论 (0)编辑 收藏

怎样引用Commons-Fileupload 实现文件上传和下载

一、准备:
1、 下载 commons-fileupload 库,下载地址:http://commons.apache.org/fileupload/
2、 下载 commons-fileupload 依赖库 commons-io,下载地址:http://commons.apache.org/io/

推荐文章:
1、利用MultipartFile实现文件上传
2、利用Jakarta commons fileupload组件实现多文件上传
    使用commons-fileupload实现单个和多个文件上传
3、对commons fileupload组件的简单封装

4、Apache FileUpload文件上传组件API解析
5、User Guide     Apache Jakarta Project: commons FileUpload用户指南

注:DiskFileUpload 在 javadoc 下被标记为过期的方法,建议用 ServletFileUpload 代替。


  我们如果想通过commons-fileupload库来实现文件上传和下载功能,我们就必须在我们的web应用程序中引入以下两个jar包
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
以上连个jar包分别位于commons-fileupload 库和commons-io库中,我们下载了commons-fileupload 和commons-io后,解压下载后的文件就能找到它们了,
接下来我们就可以使用它们来实现文件上传和下载功能。

如果向看看怎样具体代码是怎样实现的,请参看http://www.cnblogs.com/kiant71/archive/2008/10/04/1752068.html

posted @ 2012-08-22 10:50 BIG森林 阅读(537) | 评论 (0)编辑 收藏

在eclipse中新建servlet

用Eclipse建立servlet工程
1.打开eclipse,选择【文件】|【新建】|【项目】

2.选择【Tomcat   Project】后单击下一步,输入项目名【TestTomcat】,选择下一步,将【Can update context definition】打钩,点击完成。

3.创建servlet类:

在导航器中右击【TestTomcat】 工程,单击【新建】|【类】,这里包名写【test】,类的名称写【HelloWorld】,超类的名称写上 【javax.servlet.http.HttpServlet】,单击完成后在TestTomcat/Web-INF/src下出现新的包test, 包里面有一个刚刚建立的HelloWorld类。

4.编写servlet类的内容:

右击【HelloWorld.java】文件内容,在弹出的菜单中单击【源代码】|【覆盖/实现方法】后在对话框中选择【doGet()】函数前的复选框,点【确定】。

输入一下内容:

     PrintWriter out=arg1.getWriter();
     out.print("HelloWorld");

右击     PrintWriter,选择【源代码】|【组织导入】,然后右击【TestTomcat】工程,选择【属性】|【java构建路径】|【排序和导出】|【全部选中】|【确定】,得到HelloWorld.java源文件全部内容如下:

package test;

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;

public class HelloWorld extends HttpServlet {

@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
     PrintWriter out=arg1.getWriter();
     out.print("HelloWorld");

}

}

5.创建该工程的部署文件(web.xml):

右击/TestTomcat/Web-INF文件夹,选择建立【文件】,输入文件名【web.xml】后打开该文件,在文件中填写如下代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>

     <servlet>
         <servlet-name>Test</servlet-name>
         <servlet-class>test.HelloWorld</servlet-class>
     </servlet>

     <servlet-mapping>
         <servlet-name>Test</servlet-name>
         <url-pattern>/test/*</url-pattern>
     </servlet-mapping>
     <session-config>
     <session-timeout>30</session-timeout>
     </session-config>
</web-app>

6.检查一下最终eclipse中TestTomcat工程中的文件结构为:

\---TestTomcat
     |    .classpath
     |    .cvsignore
     |    .project
     |    .tomcatplugin
     |
     +---WEB-INF
     |    |    .cvsignore
     |    |    web.xml
     |    |
     |    +---classes
     |    |    \---test
     |    |            HelloWorld.class
     |    |
     |    +---lib
     |    \---src
     |        \---test
     |                HelloWorld.java
     |
     \---work
             tldCache.ser

7.运行建立的servlet:

启动集成在eclipse里面的tomcat,打开IE,地址栏里面输入:

http://localhost:8080/TestTomcat/test/HelloWorld,即可看到该servlet的运行结果:
HelloWorld

posted @ 2012-08-22 10:42 BIG森林 阅读(1248) | 评论 (0)编辑 收藏

j2ee学习01----环境安装和配置(JDK、Tomcat、Eclipse)

1、安装JDK(JDK网上安装教程,大家一搜一大把的!呵呵,在此我就不详讲)。

 

   安装注意:XP和win7的环境变量配置好型有点不一样。XP下,需要把JAVA_HOME..全部填上,WIN7貌似不需要,只需要将path路径延伸到Bin路径下就OK!

 

   测试:大家熟悉的HelloWorld程序呼之欲出!

 

 

2、安装Tomcat

 

    下载 Tomcat ,目前到7.X.我现在还是比较喜欢用6.X的。所有下载的是6.X的。建议到官网上下载。有安装版的和解压包的两种。

 

    环境变量配置:(本人从网上搜索出来很多,但是有的可能已经老了,请大家注意一下,6.X的没有那个common文件夹了。)好像安装版的和非安装版的都不需要再配什么环境变量了!

 

    测试:DOS进入(C:\apache-tomcat-6.0.32\bin)tomcat安装路径的bin文件夹下。输入startup 则会显示你启动服务器。然后输入经典的:http://localhost:8080/ (在配置中可以修改端口

   C:\apache-tomcat-7.0.14\apache-tomcat-7.0.14\conf\server.xml  找到自己的server.xml路径)

    出现经典的tomcat首页

 

  测试二:在tomcat安装的路径下,找到webapps文件夹。在里面建立一个自己的文件夹(myweb),在该文件夹下建立两个文件。一个WEB.XML文件和1.jsp文件

 

 

代码分别为:


<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>My Web Application</display-name>
<description>
    A application for test.
</description>
</web-app>

 

 

1.jsp

 

<html>
<body>
<center>
    Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>

 

 

在浏览器输入http://localhost:8080/myweb/1.jsp

 

如果正常显示时间,则为OK!

 

 

 3、eclipse安装(copy别人的。呵呵!)

 

 

 

前言
       
Eclipse是最流行的功能强大的java IDE,有丰富的插件,配合插件可以作为j2eecc++.net等开发工具。需要安装插件才能支持Web开发和其他应用的开发,这是eclipse的优点,也是eclipse的缺点,优点在于灵活,缺点在于麻烦。在此主要介绍windows环境下Eclipse如何安装配置插件一般方法,如何优化,并就常见的问题给以解答,并给出Eclipse作为J2EE开发工具的插件方案。再说明一点,Eclipse是一个Java开发的IDE工具,需要有Java运行环境的支持,最新的eclipse3.2.2需要1.4以上版本的jdk

一、下载安装Eclipse
       
打开[url]www.eclipse.org[/url],在首页上找下载栏目,下载最新的eclipse-SDK-3.2.2-win32.zip和中文语言包NLpack1-eclipse-SDK-3.2.1-win32.zip
       
解压缩eclipse-SDK-3.2.2-win32.zip到一个目录,假如解压缩到F:\下面,则会生成一个F:\eclipse文件夹,这个是eclipse的文件夹;解压缩NLpack1-eclipse-SDK-3.2.1-win32.zip到一个目录,复制其中plugins目录下的所有文件和文件夹到F:\eclipse\plugins,复制其中features目录下的所有文件和文件夹到F:\eclipse\features
       
运行F:\eclipse\eclipse.exe即可启动一个中文版的Eclipse

       
这个是eclipse最基本的安装配置方法,如果你不要安装中文版,那么你直接解压缩eclipse-SDK-3.2.2-win32.zip到任意一个目录,然后运行eclipse.exe即可。这里的语言包NLpack1-eclipse-SDK-3.2.1-win32.zip实际上一个eclipse插件!
       Eclipse
的插件实际上都有一个目录规范eclipseeclipse\featureseclipse\plugins,安装的时候也很简单,上面介绍的方法就是其中一种,在此我称之为“侵入式安装插件方法”。从上面插件安装过程可以看出“侵入式安装插件方法”就是简单的将插件中eclipse\featureseclipse\plugins复制到eclipse安装目录中的eclipse\featureseclipse\plugins下面即可,这种安装方式有个严重缺陷,就是安装后,实际上是不可以卸载,安装过程不可逆转,无法灵活配置管理所安装的插件。

二、非侵入式安装插件方法(links安装方法)
       
既然有侵入式的安装,言下之意,还有个“非侵入式安装”,也有人成为links安装方法,下面看究竟是如何安装的:).
      
非侵入式安装也分两种,一种是绝对路径安装方法,一种是相对路径的安装方法。首先看绝对路径的安装的方法。

      
在上面安装过程中,我们将中文语言包NLpack1-eclipse-SDK-3.2.1-win32.zip插件解压缩到一个地方假设为F:\myplugins目录文件夹的目录结构如下:
    NLpack1-eclipse-SDK-3.2.1-win32
        eclipse
            features
            plugins

然后在eclipse的安装目录下新建一个文件夹links,在新建一个文本文档(后缀名可以是.aaa.zz而不一定是.txtNLpack1-eclipse-SDK-3.2.1-win32.txt,内容如下:path=F:/myplugins/NLpack1-eclipse-SDK-3.2.1-win32,路径的间隔符为“ /”或“\\”。这样这个插件就安装好了。

       
上面这个是“非侵入式绝对路径插件安装”方法,下面看如何变绝对为相对,使eclipse的运行不再依赖绝对路径,这正是相对路径安装的优点。

      
在上绝对路径安装过程中,我们在eclipe安装目录F:\eclipse下面新建一个linksmyplugins文件夹,将中文语言包插件NLpack1-eclipse-SDK-3.2.1-win32.zip解压缩到F:\eclipse\myplugins下面,目录结构不变。然后在links目录中修改新建一个文件NLpack1-eclipse-SDK-3.2.1-win32.txt,内容如下:path=myplugins/NLpack1-eclipse-SDK-3.2.1-win32,这样就可以了。

      
相对路径安装需要注意一点就是插件的目录myplugins一定要建在eclipse的安装目录下面,可任意命名,所有的插件最好都放到这个目录(方便管理),每个插件对应一个links目录里的一个文本配置文件。links目录的名字只能是命名为links

       
这个安装过程很清楚,我就不做安装过程总结了,另外,还有一些插件是在线安装的,这就另当别论了,不过我还是强烈建议你用links安装方法。

三、扩展EclipeJ2EE IDE
        Eclipse
是个Java IDE,要作为J2EE开发工具,需要安装插件,这一类插件也比较多,为了节省你我宝贵的时间,我就介绍一下最好用,最流行,最容易获得的一个插件--WTPWTP是一个拥有广大用户基础和开发者的开源插件,WTP的出现改写Java IDE的发展史,更准确的说,WTP是从06年初开始火起来!到现在也就一个年头多一点。
       
下面看如何获取和安装配置。打开[url]www.eclipse.org[/url]downloads栏目,在页面上有一个显示热点插件的下载排行,WTP不负众望,总是排在No1,呵呵,好找吧。为了以后开发方便,我们一步到位,下载个完整版的wtp插件wtp-wst-sdk-R-1.5.3.zip或者wtp-wst-R-1.5.3.zip,这两个的差别在于sdk的带源码,别的没什么差别!不带源码的运行速度稍微快一点(理论上),但是我感觉不到,呵呵。如果你需要中文包,在下个NLpack1-wtp-sdk-R-1.5.1-200609230508a.zip或者NLpack1-wtp-R-1.5.1-200609230508a.zip,下载的地址很多,这么弱弱的问题我不说了,然后按照上面介绍的方法安装就可以了。

       
如果你是做J2EE或者java web开发的,那么你就直接下载一个集成了eclipsewtpwtp-all-in-one-sdk-R-1.5.3-win32.zip,这样会更好,你最多需要安装两个语言包,这样就更省事了,呵呵。

四、优化

      
优化的目的是为了让eclipse运行更稳定更流畅更快!
首先:内存优化
eclipse
安装后,在安装目录有个eclipse.ini文件,内容如下:
-vmargs
-Xms40m
-Xmx256m

这个文件用来配置eclipse启动时候的内存分配方案,Xms是初始化内存大小,Xmx是最大可使用内存大小,这个默认的配置是eclipse资源消耗最小化的配置。如果你的项目比较大,这个配置必须改,一般适当调整为128384即可,若项目更大一些则调整的再大一些,根据实际情况决定。这个参数配置的大小很关键,太小,eclipse垃圾回收会过于频繁导致很慢,或者内存堆栈溢出而崩溃。太大,eclipse会吃掉大量内存,垃圾回收周期变长,但每次回收会很慢,影响使用。所以你在配置的时候需要权衡,尝试!
其次:插件优化
当你安装了多个插件的时候,会消耗很大的内存资源,为此你只需要将不用的插件配置文件从links目录移除,注意了,不是删除,你可以在links目录里面新建一个_useless,将不用的配置文件移放到其中,用的时候再移放回来。

五、常见问题解决

1
eclipse语言包或者其他插件没有安装上
    因:是你可能运行过了英文版的eclipse之后才装语言包的。
解决办法:删掉configuration中除了config.ini以外的所有文件和文件夹,确保插件安装配置正确。

2
eclipse启动不了
    因:没有正确安装jdk,或者没有配置jdk,一般情况下安装jdk后需要配置,但当你装过多次jdk或者用以前系统中遗留下载的已经安装过的jdk的时候,需要配置jdk,同时还要注意eclipsejdk的版本的要求。
解决办法:配置JDK。也就是配置系统变量JAVA_HOMECLASSPATHPATH,必要时候还要重装jdk。如果还不能解决,也许就是你的eclipse文件有损坏或丢失,或者你的硬盘有坏道了,怎么办就很清楚了,呵呵。

3
、想要重新配置工作空间
    因:你默认了工作空间,很郁闷,每次都是那个。
解决办法:删掉configuration中除了config.ini以外的所有文件和文件夹,确保插件安装配置正确。

4
、无法编译打包
    因:排除上面的问题外,应该是你程序所依赖包找不到。
解决办法:在构建路径中添加所需要的包。

 

 

 Eclipse插件安装

 

做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件。一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了。下面介绍Eclipse插件的安装方法。

Eclipse插件的安装方法大体有以下三种:

第一种:直接复制法

假设你的Eclipse的在(C:\eclipse), 解压你下载的 eclipse 插件或者安装eclipse 插件到指定目录AA(c:\AA)文件夹,打开AA 文件夹,在AA文件夹里分别包含两个文件夹features和plugins ,然后把两个文件夹里的文件分别复制到eclipse下所对应的文件夹下的features 和plugins 下,一般的把插件文件直接复制 到eclipse目录里是最直接也是最愚蠢的一种方法!因为日后想要删除这些插件会非常的困难!强列的不推荐使用!!

注意:直接将 插件包解压到plugins文件夹下之后,重启eclipse,可能不会加载新的插件。

解决方法是:

1、打开命令行,到当前eclipse的目录下,输入eclipse -clean,重新启动eclipse,这样eclipse就会加上新的插件了。

2、如果插件不能升效,则请将eclipse\configuration\org.eclipse.update目录删除后再启动eclipse:)

你可以在eclipse的菜单"Help"-->"About Eclipse SDK"-->"Feature Details" 和"Plug-in Details"中看到新安装的插件。

第二种:使用link文件法

a.假设你的Eclipse的在(C:\eclipse),在该文件夹下,新建这样的目录结构(C:\eclipse\PluginsEclipse\jode\eclipse),

b.解压你下载的eclipse 插件或者安装eclipse 插件到指定目录BB(C:\BB)文件夹,打开BB 文件夹,然后把 BB文件夹里的两个文件夹features和plugins 复制到刚刚新建好的eclipse (C:\eclipse\PluginsEclipse\jode\eclipse,这样eclipse中就有了二个插件目录features and plugins)下.

c.在eclipse(C:\eclipse)目录中新建links(C:\eclipse\links)目录,在links目录中建立一个以link为扩展名的文本文件如jode.link,内容如下path=C:/eclipse/PluginsEclipse/jode 或者 path=C:\\eclipse\\PluginsEclipse\\jode 插件的目录)

重启eclipse插件就会安装完成。

注意:link文件中path=插件目录的path路径分隔要用\\或是/

1.            /eclipse/   

2.                 links/   

3.                      jode.link   

4.                      webtools.link   

5.                      updateManager.link   

6.                      ...   

7.                 ...   

可以在eclipse的菜单"Help"-->"About Eclipse SDK"-->"Feature Details" 和"Plug-in Details"中看到新安装的插件。

第三种:使用eclipse自带的图形界面的插件安装方法

选择Help > Software Updates > Manager Configuration
在选择Add > Extension Location 找到你要安装插件的目录就可以了。使用eclipse的help->SoftwareUpdates ->

Find and install... search for new features... 输入软件安装地址进行安装强烈推荐这种方法,优点很多比如可以方

便的添加删除,也不用自己写link文件!

备注:Eclipse插件的目录结构

8.            /eclipse-plugins/   

9.               eclipse/   

10.              .eclipseextension   

11.              features/   

12.              plugins/   

13.         

第2.3种方法所指向的目录都指的是"eclipse"目录,

如果用第3种方法,在eclipse这个目录下必须有文件.eclipseextension,如果你下的插件没有这个文件,
那就随便eclipse安装目录下的那个文件靠过去就行了!只有有这么个文件就可以了,内容没什么用,主要是一些版本信息!例如:

14.        id=org.eclipse.platform name=Eclipse Platform   

15.        version=3.1.1   

以上就介绍了三种Eclipse插件的安装方法。

 

 转自:http://zhao-weigang.iteye.com/blog/1041466

 

posted @ 2012-08-20 22:01 BIG森林 阅读(504) | 评论 (0)编辑 收藏

Attribute value is quoted with " which must be escaped when used within the value 问题解决

访问JSP时,报错:Attribute value is quoted with " which must be escaped when used within the value 。相信很多人都遇到过,以下结合本人查资料与亲自实践得到的结论。

有不对的地方还请指教。

 

1):错误常发生的位置 value="<%=""+request.getAttribute("name")%> 

2):错误产生的原因,是因为tomcat版本升级后(6.0以后),对双引号的处理机制引起的,如果出现双引号包含双引号的情况,就可能会出现这个错误。

3):解决办法有好多种,大多数网上的意见是改为value=<%=""+request.getAttribute("name")%>’  这样确实可以解决这个报错,可能无法完全解决问题,比如项目中有很多地方以前都用的是双引号,修改起来会非常麻烦,还容易出错。

         查看tomact文档有一段话这样描述的“If false the requirements for escaping quotes in JSP attributes will be relaxed so that an unescaped quote will not cause an error.

If not specified, the specification compliant default of true will be used.”    这个描述针对的是tomact的org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING属性。

       如此一来,我们知道只要在tomcat启动时将这个属性设为false就可以解决这个问题。

       那么怎么将这个属性设置到tomcat的system属性中呢,有至少两个办法:

      一种是利用tomcat启动的执行脚本,在执行过程中调用setenv.sh,在其中设置环境变量,如:JAVA_OPTS=%JAVA_OPTS%: -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

     另一种是找到conf/catalina.properties文件,在最后添加org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false 即可。

 转自:http://blog.csdn.net/eagleking012/article/details/6666860

posted @ 2012-08-15 08:41 BIG森林 阅读(327) | 评论 (0)编辑 收藏

Java web开发流行工具总结(转)

随着Java在Web开发世界中的流行,使越来越多的专家、开源软件爱好者投身到Java应用的大潮中。但这种流行也带来了业界的一些混乱和无序,目前,java开发工具层出不穷,各种新的名次和概念充斥着人们的头脑,也给广大学者和开发人员全面认识java带来了困难。本文就将试图从最简单的角度,介绍部分java web开发工具,以期有助于各位java初学者理清概念。
Eclipse:Eclipse平台最初由IBM于2001年11月推出,经过不断的发展完善,已经成为最著名的开放式集成开发工具。建立在插件机制上,可以为开发者提供将各种工具无缝集成的功能。下载链接:http://www.eclipse.org
Servlet:运行在Web服务器上或应用服务器上的Java程序。
JSP(Java Server Pages):服务器端技术,大大简化了服务器端基于Java的CGI的开发和构建。
Tomcat:开源的servlet容器和JSP引擎。非常优秀的集成开发环境。下载链接:http://tomcat.apache.org/
Apache和Apache Tomcat:Apache一般是指apache http server,是世界第一的web服务器。具体参见:http://www.apache.com
MySQL:是众多关系型数据库产品中的一个。下载链接:http://dev.mysql.com/downloads/
Struts:是一种方便实用的Web应用框架,可用Struts实现MVC设计模式,即:模型(Model)、视图(View)、控制器(Controller)。下载链接:http://www.apache.org/dist/jakarta/Struts
MyEclipse:另一种收费的,具有支持Struts功能的插件。下载链接:
http://www.myeclipseide.com (可下载试用版)
Hibernate:基于Java的开源的持久化中间件,实现了对JDBC的轻量的封装,实现了将关系型数据库转化为对象模式的功能。下载链接:http://www.hibernate.org
Spring:支持J2EE开发的轻量级框架,在J2EE社区中主导着Web开发应用的方向。主要由:IoC-反转控制,AOP-面向方面编程,抽象服务三部分组成。下载链接:http://www.sourceforge.net/projects/springframework
JBoss:开源的免费的轻量级J2EE应用服务器,和WebLogic和WebSphere属于同类产品。下载链接:http://www.jboss.org
Lomboz:eclipse平台上支持J2EE开发的优秀插件。下载链接:http://forge.objectWeb.org/projects/lomboz
JUnit:开放源代码的Java单元测试框架,由Erich Gamma和Kent Beck共同开发完成。下载链接:http://www.JUnit.org
Ant:优秀的编译部署工具。下载链接:http://ant.apache.org

转自:
http://hi.baidu.com/%C4%CF%BA%BD%CC%EC%CF%C2/blog/item/aa71f4c7287d93d5d000606d.html

posted @ 2012-08-11 22:54 BIG森林 阅读(292) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜