JSP开发环境搭建:
首先说明一下,我是新手,之前都没接触过java,几天之内,就要接受JDK,JRE,TOMCAT,ECLIPSE,LOMBOZ,MYECLIPSE,连接池等很多概念。其实这些概念一个个出现是一环扣一环的。首先要用java,必然要用到JDK这么一个java的开发包和JRE这样一个运行环境;但又要用JSP开发我的服务器登录网页,就又要用到TOMCAT服务器;后来,我发现只是用文本来编辑代码,很难找出代码中的错误,别人告诉我eclipse很好用;可我又很贪心,还想要编辑我的JSP代码,那就要在eclipse里安装插件了,lomboz和myeclipse是一个选择。网页开发,数据库又比不可少,于是连接池也就出现了,这还只是起步阶段,相信越到后面我会遇到越来越多新的概念和工具。
下面介绍的是整个JSP开发环境搭建过程,以及这几天来一直困扰我的一个又一个接踵而至的问题,希望对首要初次接触java,jsp的新手有点帮助。
一、JDK
1 JDK概念
JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。JDK包含的基本组件包括:
·javac – 编译器,将源程序转成字节码
·jar – 打包工具,将相关的类文件打包成一个文件
·javadoc – 文档生成器,从源码注释中提取文档
·jdb – debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
JDK一般有三种版本:
SE(J2SE),standard edition,标准版,是我们通常用的一个版本
EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,
ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序
详细介绍请见:http://www.itisedu.com/phrase/200604181646475.html 这里的资料很有用,新手值得一看。
2 JDK下载安装
我用的是jdk1.6.0_05,下载网址:http://java.sun.com/javase/downloads/?intcmp=1281
详细下载安装过程请参见:
下载过程:http://www.java2000.net/viewthread.jsp?tid=385
安装过程:http://www.java2000.net/viewthread.jsp?tid=386
3 JDK环境变量设置
右击“我的电脑”的“属性”,点击“高级-环境变量-”在“新建”里面设置:
变量名:CLASSPATH
变量值: .;C:/Program Files/Java/jdk1.6.0_05/lib/dt.jar;C:/Program Files/Java/jdk1.6.0_05/lib/tools.jar;
变量名:JAVA_HOME
变量值: C:/Program Files/Java/jdk1.6.0_05;
变量名:PATH
变量值: C:/Program Files/Java/jdk1.6.0_05/bin;
详细图解过程见:http://www.java2000.net/viewthread.jsp?tid=387
但这这个图解过程的第五步,我没有在最后加上版主说要注意的那个点,照样可以运行。。。
4 JDK安装过程遇到的问题
相信新手在安装完后准备编译自己的第一个java程序的时候,一定也像我一下遇到如下问题:
(1)javac不是内部命令和外部命令
(2)javac编译通过后,用java 命令运行第一个helloworld程序后 又出现NoClassFileDefFound的错误
在出现第一个问题的时候,我百度,google上搜到了很多解决办法,有一种办法是直接在DOS里用set 命令设置环境变量,哎~~设置后编译的确能够通过,但是却会出现第二个问题,不能执行我刚才所编译的文件。。。
反正我又重装JDK,又试遍了网上说的各种稀奇古怪的办法,还是不行,真是郁闷了
最后的最后,我发现问题就是出在我的环境变量的设置上,变量值的最后忘记加分号了。所以这些小细节一定一定要注意了,比如CLASSPATH的变量值前一定要加——.;
二、Tomcat
1.Tomcat 概念
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
2.Tomcat的下载
Tomcat 5.5 的下载地址为 http://tomcat.apache.org/download-55.cgi
我们选择zip压缩的格式,下载后直接解压到我们的本地目录,点击文件夹下进入 bin 子目录,双击[startup.bat] 就可以启动Tomcat,无需安装 。启动Tomcat后,在IE地址栏里输入http://localhost:8080/,如果能显示一只猫的网页,就表明Tomcat安装成功。
具体的图解过程见网址:http://www.java2000.net/viewthread.jsp?tid=601
2.Tomcat安装过程中出现的问题
1.Tomcat启动时一闪而过
我一开始用的时候是用的安装版的Tomcat,版本也比较低,而且很不稳定,经常就自己非法关掉了,重启又启动不了,在DOS里查看使用端口(查看端口命令:netstatu -na),发现8080端口还在使用,每次要重启一下机器,才可再启动我的Tomcat,郁闷至极啊。
后来,听了版主的劝告,重新下了免安装的Tomcat 5.5.26版本,这下是稳定了,但也出现了一闪而过的现象。从版主的文章上了解到,这个现象就是两个原因:
a) JDK目录没有找到,请参考 修改Tomcat的JDK目录 http://www.java2000.net/viewthread.jsp?tid=406
b) 端口被占用, 请参考 Tomcat 5.5 修改服务器的侦听端口
http://www.java2000.net/viewthread.jsp?tid=602
我的是修改了JDK目录后一切都运行正常了,真是开心啊。
三、数据库连接池
这一小节应该放到下面来讲的,但我想先在我的tomcat下试试用连接池连接数据库。
我用的数据库是sqlserver2005,(为什么我用的东西都与众不同的呢,当初数据库遇到问题的时候,在网上搜索,铺天盖地的都是sqlserver2000,mysql,orcal的数据库连接问题,sqlserver2005的还真是少之又少,得出一个结论,什么都可以赶新潮,用软件就不要太赶新潮了,特别是对我们这些新手来说,遇到问题就惨了!)好了,说了很多废话,回归正题。
1. 首先要把sqlserver2005的JDBC驱动程序sqljdbc拷贝到Tomcat安装目录的/common/lib下和你自己网站的/WEB-INF/lib下
sqlserver2005区别于sqlserver2000的是,sqlserver2005只有一个sqljdbc.jar包,而2000有三个包。
2. 在Tomcat安装目录下/conf/Catalina/localhost文件夹中建立一个和你网站文件夹名字一样的XML文件。例如:MyWeb.xml。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/MyWeb" docBase="D:/MyWeb" reloadable="true">
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=EdocServer_db"
username="sa"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="-1"
/>
</Context>
这里讲到driverClassName和url的写法,sqlserver2005与sqlserver2000也是不同的,
sqlserver2000写法如下:
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=EdocServer_db"
咋看好像相似啊,睁大眼睛自己找了。。。
<Context path="/MyWeb" docBase="D:/MyWeb" reloadable="true">
path="/MyWeb" 就是虚拟目录的名称
docBase="D:/MyWeb"为物理路径
path是虚拟目录,访问的时候用127.0.0.1:8080/MyWeb/*.jsp访问网页;
docBase是网页实际存放位置的根目录(我的放在D:/MyWeb),映射为path虚拟目录;
reloadable="true"表示你修改了jsp文件后不需要重启就可以实现显示的同步。
其他,各个参数的意思大家自己去找了,我就不说了。
3. 最后,在你自己网站的/WEB-INF/web.xml文件中,添加一下代码
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
OK了,我的数据库连接池就配置完成了。
4.测试代码
我在D:/MyWeb下创建了一个index.jsp文件代码如下:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="javax.naming.*,javax.sql.*,java.sql.*"%>
<pre>
<%
System.out.println("CLASSPATH....");
System.out.println(System.getProperty("java.class.path"));
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/mysql");
Connection con = null;
ResultSet rs = null;
try {
con = ds.getConnection();
DatabaseMetaData dm = null;
if (con != null) {
dm = con.getMetaData();
out.println("Driver Information");
out.println("/tDriver Name: " + dm.getDriverName());
out.println("/tDriver Version: " + dm.getDriverVersion());
out.println("/nDatabase Information ");
out.println("/tDatabase Name: " + dm.getDatabaseProductName());
out.println("/tDatabase Version: " + dm.getDatabaseProductVersion());
out.println("Avalilable Catalogs ");
rs = dm.getCatalogs();
while (rs.next()) {
System.out.println("/tcatalog: " + rs.getString(1));
}
} else {
out.println("Error: No active Connection");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception ex) {}
}
if (con != null) {
try {
con.close();
con = null;
} catch (Exception ex) {}
}
}
%>
</pre>
再在地址栏里输入:http://localhost:8080/MyWeb/,ok运行成功,大功告成。
5. 数据库连接池的遇到的问题
其实连接池问题才是我这几天遇到的最大的麻烦了,各种各样的问题都被我遇到过的,绝望到我都想放弃用这个东西了,幸好有版主手把手的教我怎么怎么配置,怎么怎么一步一步来,最后才在tomcat的环境下连接成功。
下面说下我出现的各种问题吧:
1.Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
出现这个问题主要是没有把sqljdbc.jar包放到Tomcat安装目录的/common/lib下
2.Cannot create JDBC driver of class '' for connect URL 'null'
这就应该是/WEB-INF/web.xml的配置问题
其实这个问题我也没有搞清楚到底是怎么回事,我当初是配置了web.xml文件的,但也出现了这种问题,在csdn上问了好久,也有好多人出谋划策,可就是解决不了,足足被困扰了一个多星期,形容当时的心情,应该是郁闷的都想跳楼了~~~~
版主要我新下了一个用他的话说“干净的”tomcat,再一步一步跟我说,不要配置那个server.xml,要配置MyWeb,要配置web.xml,结果就行了。有点开心也有点郁闷,郁闷的是为什么不行,为什么又就行了呢???这个过程的转变我还没理清楚。
3.Cannot create PoolableConnectionFactory (无法打开登录 'EdocServer_db' 中请求的数据库。登录失败)
这个问题,唉~~~~ 其实都怪我自己啊,不知道什么时候把我创建的数据库给删了。在我打开企业管理器的时候才发现,我的数据库没了,当然重新创建了一个数据库就又可以运行了。
4.Name jdbc is not bound in this Context
这个问题是我把程序移植到eclipse里的时候出现的问题,应该也是配置文件的问题,但到现在我还没有解决,
eclipse的安装配置下一篇再写吧,这一篇就先到这里了。
唉~革命尚未成功啊,我还需努力~~~~~