分布式计算第三周实验:Java Web 编程原理

课程地址

http://ss.sysu.edu.cn/~pml/dct/3_web_prog.html

实验内容

  1. 编写简单 CGI 程序。

    1. 先是安装Apache(Windows环境): http://jingyan.baidu.com/article/d8072ac47baf0eec95cefdca.html
    2. 在修改完httpd.conf配置文件后,用bin目录下的ApacheMonitor.exe程序打开服务器
      这里写图片描述
    3. 在Apache安装存放的目录地址下的bin\cgi-bin文件夹编写一个hello world程序。

      
      #include <stdio.h>
      
      int main() {
          printf("Content-Type: text/html\n\n");
          printf("Hello, world!\n");
          return 0;
      }
    4. 使用指令gcc hello.c -o hello.cgi编译
    5. 在浏览器输入 http://localhost/cgi-bin/hello.cgi ,可以看到程序的输出(这里我输入的地址是localhost:8088是因为我改了httpd.conf的地址,如果没有改过直接输入前面的地址即可)
      这里写图片描述
  2. 编写简单Web程序。
    因为电脑带的JetBrains全家桶,所以没用Eclipse IDE而是用的IntelliJ IDEA
    • jettyMavenHelloWorld(这个没截过程图,就放个结果图好了,步骤与Webapp的差不多)
      这里写图片描述
    • JettyMavenHelloWarApp
      1. 创建项目时选择maven-achetype-webapp
        这里写图片描述
      2. Id的东西随便填
        这里写图片描述
      3. 默认选项即可
        这里写图片描述
      4. 项目名称
        这里写图片描述
      5. 项目创建后等待一段时间,maven构造项目后,目录结构如下
        这里写图片描述
      6. 接下来的就是按照老师的网站建立java文件夹(需要设置为资源文件夹),建立org.example包与HelloServlet.java。
      7. 注意修改pom.xml的时候不要直接覆盖。看缺哪些就添加哪些。
      8. 运行Maven
        这里写图片描述
      9. 运行成功后,打开localhost:8080/hello
        这里写图片描述

实验报告

  1. 用自己的语言简单说明 cgi 编程的优点和缺点

    • 优点:使网页具有交互功能;可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量;稳定性高;可以独立运行。
    • 缺点:每秒支持的击点率不高。
  2. 在 cgi 实验的基础上,简述 middleware 在程序开发中的作用

    连接两个独立应用程序或独立系统,相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

  3. 搜索 org.eclipse.jetty.server.handler.AbstractHandler 类

    • 解释 Java API 页面的组织
    • 这个类实现了哪个接口,这个接口有哪些方法?

  4. Java web 编程有几个元素是我们编程学习的重要内容:

    • javax.servlet.http.HttpServletRequest
    • javax.servlet.http.HttpServletResponse
    • javax.servlet.ServletRequest
    • javax.servlet.ServletResponse
    • 它们是 类 还是 接口?是那个机构定义?

      它们是接口。

    • response.getWriter()getWriter 返回的对象是什么?

      PrintWriter。

    • 简述 javax.servlet.ServletResponsegetOutputStream()getWriter() 的区别

      • 返回的对象不一样,getOutputStream()返回的是ServletOutputStream对象,而getWriter()返回的是PrintWriter对象。
      • getOutputStrea()方法用于返回Servlet引擎创建的字节输出流对象,Servlet程序可以按字节形式输出响应正文。
      • getWriter()方法用于返回Servlet引擎创建的字符输出流对象,Servlet程序可以按字符形式输出响应正文。
    • 对比javax.servlet.http.HttpServletResponsejavax.servlet.ServletResponse 的方法。这是一个典型装饰模式, HttpServletResponse 添加了哪些新职能?

      HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。

  5. Maven 默认的本地仓库路径是什么? 找到 JettyMavenHelloWarApp 打包的 war 文件的位置。

    Windows下是:C:\Users{username}.m2\repository
    War文件在项目路径下的target文件夹

  6. (!)阅读 org.eclipse.jetty.server.Server 源代码,简述这个类的关键代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值