Java WEB 开发环境

来源:互联网 发布:苹果点位图软件 编辑:程序博客网 时间:2024/05/17 22:22

工具 & 环境

  • Ubuntu-16.04 64-bit
  • Java 1.8.0
  • Tomcat 9.0.0

WEB 开发

首先,需要安装Java开发环境,接着下载Tomcat软件包。在终端中利用tar -zxvf apache-tomcat-version.tar.gz命令解压文件,解压后目录如下:

  • /bin: 存放启动和关闭Tomcat的脚本文件。
  • /lib: 存放Tomcat服务器及所有Web应用程序都可以访问的JAR文件。
  • /conf: 存放Tomcat服务器的各种配置文件。
  • /logs: 存储Tomcat的日志文件。
  • /temp: 存放Tomcat运行时产生的临时文件。
  • /webapps: 当发布Web应用程序时,通常把Web应用程序的目录及文件存放在这个目录。
  • /work: Tomcat将JSP生成的Servlet源文件和字节码文件放到这个目录。

备注:version对应于Tomcat的版本。

测试Tomcat是否能正常运行:

$ cd apache-tomcat-version$ bin/startup.shUsing CATALINA_BASE:   /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8Using CATALINA_HOME:   /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8Using CATALINA_TMPDIR: /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8/tempUsing JRE_HOME:        /opt/jdkUsing CLASSPATH:       /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8/bin/bootstrap.jar:/home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8/bin/tomcat-juli.jarTomcat started.

如果出现上面提示则说明Tomcat测试正常运行。

一个简单的Java WEB程序需要以下几步:

  1. 编写源文件
  2. 编译源文件
  3. 部署程序
  4. 测试访问

编写程序

新建NetDisk.java文件,代码如下:

package netdisk;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class NetDisk extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setContentType("text/html");        PrintWriter out = response.getWriter();        out.println("<html>");        out.println("<head><title>NetDisk</title></head>");        out.println("<body>");        out.println("Welcome to NetDisk! This is a test.");        out.println("</body>");        out.println("</html>");    }}                                       

编译程序

若直接通过javac NetDisk.java编译程序,会得到如下错误:

NetDisk.java:4: 错误: 程序包javax.servlet不存在import javax.servlet.*;^NetDisk.java:5: 错误: 程序包javax.servlet.http不存在import javax.servlet.http.*;^NetDisk.java:7: 错误: 找不到符号public class NetDisk extends HttpServlet {                             ^ 符号: 类 HttpServlet NetDisk.java:8: 错误: 找不到符号 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                   ^ 符号:   类 HttpServletRequest 位置: 类 NetDisk NetDisk.java:8: 错误: 找不到符号 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                                               ^ 符号:   类 HttpServletResponse 位置: 类 NetDisk NetDisk.java:8: 错误: 找不到符号 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                                                                                    ^ 符号:   类 ServletException 位置: 类 NetDisk 6 个错误

这是由于在编译时未能找到javax.servletjavax.servlet.http这两个包及包中的类。通过在编译时指定servlet-api.jar路径及文件名即可解决。
例如,默认servlet-api.jarapache-tomcat-version/lib/目录下,我将其解压到当前工作目录,即与NetDisk.java在同一目录,则编译命令如下:

$ javac -cp .:./apache-tomcat-version/lib/servlet-api.jar NetDisk.java

当然,更为简单的做法是将servlet-api.jar指定到系统的CLASSPATH环境变量中,这些样就可以通过javac NetDisk.java命令直接编译。

经过上述步骤后,就会在当前路径下生成NetDisk.class文件。

程序部署

Tomcat服务器通常需要将Web应用程序放在webapps目录下。在这个例子中netdisk应用程序的目录如下:

  • /netdisk: Web应用程序的根目录,属于此应用程序的所有文件都放在该目录下。
  • /netdisk/WEB-INF: 存放Web应用程序部署的描述文件web.xml。
  • /netdisk/WEB-INF/classes: 存放Web应用程序用到的类文件。
  • /netdisk/WEB-INF/lib: 存放Web应用用到的jar文件。
  • /netdisk/WEB-INF/web.xml: 该文件是Web应用程序部署的描述文件,用来存放整个应用程序的配置和部署信息。

下面是web.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"    xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <servlet>    <servlet-name>NETDISK</servlet-name>    <servlet-class>netdisk.NetDisk</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>NETDISK</servlet-name>    <url-pattern>/welcome</url-pattern>  </servlet-mapping></web-app>                               

web.xml文件必须是格式良好的XML。其中第一行是xml版本和编码的声明,第二行在根元素上声明了XML Schema的名称空间。

代码中的和元素以及它们的子元素,用来部署NetDisk。元素用于声明一个servlet。其中用于指定Servlet的名字。虽然子元素可以任意指定一个Servlet名字,但在同一个Web应用程序中,每一个Servlet的名字必须是唯一的,而且不能为空。上述例子中的Servlet取名为NETDISK。由于子元素用于指定Servlet类时要给出完整的限定名,如果有包名,同时要给出包名,因此上述Servlet的完整限定名是netdisk.NetDisk。

元素用于在Servlet和URL样式之间定义一个映射。它的子元素指定的Servlet名字必须与元素的子元素给出的名字相同。子元素用于指定对应Servlet的URL路径,该路径是相对于Web应用程序的路径,配置为/welcom,这样就可以通过http://localhost:8080/netdisk/welcome来访问。

访问测试

在浏览器中访问http://localhost:8080/netdisk/welcome,页面显示Welcome to NetDisk! This is a test.。默认采用的是8080端口,如果修改了默认端口,则需要进行相应的修改。

参考

[1] 朱福喜,《面向对象的Java程序设计》

0 0
原创粉丝点击