Topic: 环境变量与服务器设置----最大瓶颈 |
Print this page |
1.环境变量与服务器设置----最大瓶颈 | Copy to clipboard |
Posted by: SUNONEJcy Posted on: 2004-08-23 23:39 学习JSP、servlet、JavaBean之初步 环境变量与服务器设置----最大瓶颈 看了很多资料,包括专业书籍、网上心得,认为其实不少都是不明确的或是跟本就是错的,非常误人子弟,使得不少初学者伤透脑筋还不知所衷。现在我把正确的方法用简洁的方式表示如下,由于旨在让学习者能够迅速手工搭建基础环境,集中精力于学习内容上,所以这里只给出最简单实用的方式和工具设置: 在有 * 的地方,文章最下方有注释。 平台:win2k、winxp *1 工具: JDK j2sdk-1_4_2-windows-i586 SERVER Tomcat jakarta-tomcat-5.0.16 *2 添加环境变量: 控制面板->系统->高级->环境变量->用户变量或系统变量均可,建议使用用户变量 新建以下变量: *3 变量名 变量值 JAVA_HOME JDK安装目录 TOMCAT_HOME Tomcat安装目录 *4 PATH %JAVA_HOME%\bin; CLASSPATH .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\ dt.jar;%TOMCAT_ HOME%\common\lib\servlet-api.jar; (如果是Tomcat 4.0 的话就是servlet.jar); *5 如果使用sql2000的话请下载相应JDBC。 *同注释3 新建:SQL_JDBC_HOME JDBC安装目录 设环境变量接上面: %SQL_JDBC_HOME%\lib\msbase.jar; %SQL_JDBC_HOME%\lib\mssqlserver.jar; %SQL_ JDBC_HOME%\lib\msutil.jar; sql 2000 的 JDBC 连接测试: 首先准备一个测试文件: dbtest.java import java.sql.*; import javax.sql.*; import java.io.*; import java.util.*; import javax.naming.*; public class dbtest { public static void main(String args[]) { //必须捕捉异常 try { //注册驱动程序 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); /*获得连接,最后三个参数:数据库名、用户名、密码需要根据 你的情况更改,这里的数据库是安装sql时自带的,不必要修改*/ Connection con=DriverManager.getConnection("jdbc:microsoft: sqlserver://localhost:1433;DataBaseName=pubs","sa","abc"); //创建声名 Statement stmt=con.createStatement(); //新建字符串,保存SQL语句,这里为检索pubs库的jobs表的所有字 段 String SQL=new String(); SQL="SELECT * FROM jobs"; //执行SQL语句,获得结果集 ResultSet rs=stmt.executeQuery(SQL); //输出结果集 while(rs.next()) { System.out.println(rs.getString("job_desc")); } //关闭结果集 rs.close(); //关闭声明 stmt.close(); //关闭连接 con.close(); } //抛出两种异常 catch (java.lang.ClassNotFoundException ex) { System.err.println("SQLException dbtest() : " + ex.getMessage()); } catch (SQLException ex) { System.err.println("SQLException dbtest() : " + ex.getMessage()); } } } 编译并执行上例,如果抛出异常请自己从结果中找答案。(因为可能性太多了^_^) Tomcat的servlet环境映射: 在Tmocat的安装目录下的webapps下新建自己的目录,比如test *6 在test下新建目录WEB-INF(要大写) 在WEB-INF下新建目录classes(存放class文件) 和目录lib(存放jar文件,本例中用不到) 然后准备两个测试文件: web.xml SimpleServlet.java web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!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>test</display-name> <description> Servlet 2.4 Examples. </description> <servlet> <servlet-name>SimpleServlet</servlet-name> <!--定义了class的路径--> <servlet-class>jwadbook.servlets.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SimpleServlet</servlet-name> <!--定义了servlet的访问url--> <url-pattern>/SimpleServlet</url-pattern> </servlet-mapping> </web-app> 保存在WEB-INF下 SimpleServlet.java *7 新建目录: jwadbook 在其下新建目录: servlets SimpleServlet.java package jwadbook.servlets; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class SimpleServlet extends HttpServlet { public void init() throws ServletException { } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out=resp.getWriter(); resp.setContentType("text/html"); out.println("<html>"); out.println("<head>"); out.println("<title>Simple Servlet</title>"); out.println("</head>"); out.println("<body bgcolor=red>"); out.println("<center>"); out.println("<font color=blue size=5>"); out.println("<strong>I Know Servlet!</strong>"); out.println("</font>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); out.flush(); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } public void destroy() { } } 编译此程序。 启动Tomcat,通过http://localhost:8080/test/SimpleServlet访问本程序。 另外Tomat 5.0\webapps\servlets-examples下有不少servlet的示例,有兴趣的话可以试着访问看看,与本例不同的是他们的访问地址是: http://localhost:8080/servlets-examples/servlet/^^^^ 为什么多中间多了一处servlet呢?因为人家的web.xml文件里定义的访问url的映射比如SessionExample是: <servlet-mapping> <servlet-name>SessionExample</servlet-name> <url-pattern>/servlet/SessionExample</url-pattern> </servlet-mapping> 对比上例,希望能对你有所启发。实际上在Servlet的应用中有些是可以自己 变更的,有些则一定不能更改,比如WEB-INF目录的层次关系,xml文件里具有 重要作用也是很有出错的可能性的“/”符号等等。 以上对比较容易出错但其实并不复杂的问题进行了说明,我可以保证以上示例和方法都是正确的和简洁的、易于维护的。如有问题可以致电我的邮箱: YCY_751128@hotmail.com 非常希望这篇文章能对你(们)有所帮助,其实我也是初学者,也希望有更多的好文章使后学者少走不必要的弯路。 *1 其实软件版本并不重要,设置方法大同。 *2 用户变量更加清晰明了(当然是做学习用而言)。 *3 这两个变量仅起到代替字符串的作用,可以不设。 *4 正如操作系统利用PATH来搜索可执行程序一样,Java运行环境也会遍历 CLASSPATH来查找类,即便是HelloWorld这样简单的程序,JVM也会遍历 CLASSPATH定义的每一个路径,直到找到相应的文件为止。所以,这两个 变量名不能更改。变量值中.;代表当前路径;tools.jar;是工具API; dt.jar;是运行环境API;Tomcat下的servlet.jar;(或servlet-api.jar) 是编译servlet不可或缺的API。 *5 如果不是通过安装而是通过copy的方式得到三个驱动文件就把\lib去掉。 后面这段如使用其他数据库和JDBC的话要相应更改。 *6 Servlet标准规定在Web程序内要有WEB-INF目录,该目录包括web.xml文件 、lib目录和classes目录,其中web.xml文件是Web程序的部署描述文件, 他告诉Web服务器有关Web程序的配置信息,在Web服务器启动时,Web服务 器会分析程序的web.xml文件进而载入Web程序,Web程序所使用的Java类 可以有两种形式:.jar文件存放在/WEB-INF/lib目录,.class文件存放在 /WEB/classes目录。 *7 这两个目录都不是必需的,但是这里是让读者适应非常重要的“打包”的概念, 同时也对应着上面web.xml中定义的servlet类的路径。 小提示: # 与servlet不同,JavaBean部署在WEB-INF\classes下时必需打包。 # Tomcat在发现异常时会输出错误页,404代表找不到该页,500表 示文件书写有误;有些错误如JDBC连接错误会输出在控制台上显 示出来。 # 在更改目录和重新编译servlet或bean后必需重启Tomcat。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |