Java WEB 开发环境

工具 & 环境

  • 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.sh
Using CATALINA_BASE:   /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8
Using CATALINA_HOME:   /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8
Using CATALINA_TMPDIR: /home/japin/Code/Java/NetDisk/apache-tomcat-9.0.0.M8/temp
Using JRE_HOME:        /opt/jdk
Using 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.jar
Tomcat 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值