实验四、web服务器套接字编程实验指导
实验四、web服务器套接字编程实验指导
1.实验目的:
编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器。掌握Socket编程。
2.实验环境:
连入局域网络的主机一台。
3.实验指导:
超文本传输协议(HTTP)是位于TCP/IP 协议的应用层,是最广为人知的协议,也是互连网中最核心的协议之一。HTTP协议是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。
一个完整的HTTP协议会话过程包括四个步骤:
?连接
Web浏览器与Web服务器建立连接,打开一个称为Socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功;
?请求
Web浏览器通过Socket向Web服务器提交请求。HTTP的请求一般是GET或POST 命令(POST用于FORM参数的传递);
?应答
Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面;
?关闭连接
应答结束后Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web 服务器建立连接。
4.实验分析,回答下列问题。
运行课本中Webserver.java程序。查找资料,写出程序源代码,并加上必要的注释。如能改写该程序,附上修改后的源代码。
Java程序:
//引入Java必须的包
import java.io.*;
import https://www.360docs.net/doc/4114645056.html,.*;
import java.util.*;
//Webserver 类
class Webserver{
//主函数入口
public static void main(String arg[]) throws Exception{
//声明字符串串
String requestMessageLine;
String filename;
//创建监听socket
ServerSocket listenSocket=new ServerSocket(6789);
//等待客户连接
While(true)
{
Socket connectionSocket=listenSocket.accept();
//创建一个文本读入流
BufferedReader inFromClient=new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
//创建一个向socket中写入文本行的流
DataOutputStream outToClient=new DataOutputStream(connectionSocket.getOutputStream());
//读取客户机发送的一行文本
requestMessageLine=inFromClient.readLine();
//字段解析
StringTokenizer tokenizerLine=new StringTokenizer(requestMessageLine);
//如果客户端的请求方式为get方式
if(tokenizerLine.nextToken().equals("GET")){
filename=tokenizerLine.nextToken();
//获得文件名
if(filename.startsWith("/")==true)
filename=filename.substring(1);
//新建文件
System.out.println(“The request filename is:”+filename);
//输入字符串,内容为客户端请求的文件名
File file=new File(filename);
int numOfBytes=(int)file.length();
//新建文件输入流
FileInputStream inFile=new FileInputStream(filename);
byte[] fileInBytes=new byte[numOfBytes];
//服务端输出信息
inFile.read(fileInBytes);
outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");
//不同的文件类型所对应的头文件格式不同
if(filename.endsWith(".jpg"))
outToClient.writeBytes("Content-Type:image/jpeg\r\n");
if(filename.endsWith(".gif"))
outToClient.writeBytes("Content-Type:image/gif\r\n");
outToClient.writeBytes("Content-Length:"+numOfBytes+"\r\n");
outToClient.writeBytes("\r\n");
outToClient.write(fileInBytes,0,numOfBytes);
connectionSocket.close();
}
//错误的请求方式
else System.out.println("Bad Resquest Message");
}
}
}
运行截图:
(客户端的程序不用编写,只需要用浏览器做客户端程序,向给定的服务器程序索取网页就可以了,大家可以事先先下载一个网页把它存放在和服务器程序同一个文件夹下即可,浏览器地址栏输入按照实验提示来做:使用WEB浏览器来测试WEB服务器的程序,如果在本机上测试,本机服务器监听端口为6789,要获得本机上文件名为index.html,应在浏览器指定下列URL http://localhost:6789/index.html;如果服务器程序不在本机上,服务器监听端口为6789,要获得服务器上文件名为index.html,应在浏览器指定下列URL http://服务器IP地址:6789/index.html。检查浏览器中输入的端口号是否和服务器监听的端口号一致。不一致要进行修改。)
四、实验总结
总结你在实验过程中遇到的问题和解决的方法。
1.对Java程序中的代码不太理解,从相关Java书籍上才了解到相关意义;
2.运行Java时没能事先先将Java编译成class文件;
3.运行程序还是无法显示结果;原因在于监听端口号与浏览器输入的端口号不一致;
Web应用程序设计综合实验报告材料
Web应用程序设计综合实验报告题目:网上购物系统 学生姓名: XXX 学号: XXXXXXXXXXX 院(系): XXXXXXX 专业: XXXXXXXXXX 指导教师: XXXXXXXXXX 2014 年 7月 6 日
1、选题背景 随着计算机技术的发展和网络人口的增加,网络世界也越来越广播,也越来越来越丰富,网上商城已经成为网上购物的一股潮流。互联网的跨地域性和可交互性使其在与传统媒体行业和传统贸易行业的竞争中是具有不可抗拒的优势。在忙碌丰富的社会生活中,人们开始追求足不出户就能买到心仪的商品,是越来越多的上网爱好者实现购物的一种方式,对于企业来说,网络交易能大大提高交易速度、节约成本。在这种形势下,传统的依靠管理人员人工传递信息和数据的管理方式就无法满足企业日益增长的业务需求,因而开发了这样一个具有前台后台的网上商城系统,以满足购物者和企业的需求。 因此这次毕业设计题目就以目前现有的网上商城系统为研究对象,研究一般的网上商城的业务流程,猜测其各个功能模块及其组合、连接方式,并分析其具体的实现方式,最后使用Java加web服务器和数据库完成一个网上商城系统的主要功能模块。通过这样一个设计,可以提高自己Java编程的水准,也练习了怎样构建一个完整的系统,从系统的需求分析到设计,直至编码、测试并运行,熟悉并掌握一个完整的Web开发流程,为今后工作打下基础。 1.1设计任务 从以下几个方面实现网络商城的基本功能: 1、用户部分: (1)用户的登录和注册,用户必须注册才能购物,注册时系统会对注册信息进行验证,进入系统或是结账时,用户可以进行登录,登录时,如果密码错误,系统会进行验证并提示错误。 (2)浏览商品,实现用户可以在网络商店中随意浏览商品,商品按类别分类,方便用户查找不同类别的商品 (3)购物车管理,能实现添加商品、删除商品、更新商品的功能。 (4)生成订单,查看购物车后单击下一步则生成订单信息表,一旦提交订单,则购物车就不能被改变。 2、管理员部分:
Web程序设计实验报告
Web程序设计实验报告 姓名:冯刚 学号:200905030324 班级:计科3班
Html代码: 1.首页代码