适用于 Windows 的浏览器
Internet Explorer
单击工具,然后单击 Internet 选项
选择安全选项卡,选择自定义级别按钮
向下滚动到 Java 小应用程序脚本
确保选中启用单选按钮
单击确定保存您的首选设置
Chrome
单击扳手图标,然后选择选项。
依次选择高级选项和隐私内容设置。
将显示“内容设置”面板。
在插件部分,选择禁用单独插件链接以检查是否渣闷已启用 Java
单击启用链接(如果显示“禁用”链接,则慧老已启用 Java)
注意:此外,您也可通过在浏览器地址栏中 键入“about:plugins” 来访问“插件”设置。
适用于 Windows 和 Mac OS X 的浏览器
Firefox
启动 Mozilla Firefox 浏览器,如果该浏览器正在运行,则重新启动它。
在浏览器顶部,选择 Firefox 按钮(或 Windows XP 中的工具菜单),然后选择附加组件
此时将打开“附加组件管理器”选项卡。
在“附加组件管理前梁升器”选项卡中,选择插件
单击 Java (TM) 平台插件以将其选定
单击启用按钮(如果按钮显示为禁用,则 Java 已启用)
Safari
启动 Safari 浏览器
单击“Safari”并选择首选项
单击安全选项卡
选中(选择)启用 Java 复选框
关闭“Safari 首选项”窗口
Opera 4.x 及更高版本
适用于 Windows 的 Opera 不使用 Java,但是 Opera Web 浏览器中已嵌入了 Java。
适用于其他平台的 Opera 可支持 Java。请参见 Opera 平台文档。
有关详细信息,请参见以下 Opera 支持文档:
Opera 中的 Java 软件支持
抢首赞
评论
分享
举报
河南新华电脑学院
2021-10-26 · 专注互联网IT教育,电脑培训院校
关注
启动Mozilla Firefox 浏览器,如果该浏览器正在运行,则重新启动它。
在浏览器顶部,选择Firefox按钮(或 Windows XP 中的工具菜单)...
在“附加组件管理器”选项卡中,选择插件
单击Java (TM) 平台插件以将其选定
一 HTTP协议的作用原理
WWW是以Internet作为传输媒介的一个应用系统 WWW网上最基本的传输单位是Web网页 WWW的工作基于客户机/服务器计算模型 由Web 浏览器(客户机)和Web服务器(服务器)构成 两者之间采用超文本传送协议(HTTP)进行通信 HTTP协议是基于TCP/IP协议之上的协议 是Web浏览器和Web服务器之间的应用层协议 是通用的 无状态的 面向对象的协议 HTTP协议的作用原理包括四个步骤
( ) 连接 Web浏览器与Web服务器建立连接 打开一个称为socket(套接字)的虚拟文件 此文件的建立标志着连接建立成功
( ) 请求 Web浏览器通过socket向Web服务器提交请求 HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递) GET命令的格式为
GET 路径/文件名 HTTP/
文件名指出所访问的文件 HTTP/ 指出Web浏览器使用的HTTP版本
( ) 应答 Web浏览器提交请求后 通过HTTP协议传送给Web服务器 Web服务器接到后 进行事务处理 处理结果又通过HTTP传回给Web浏览器 从而在Web浏览器上显示出所请求的页面
例 假设客户机与 /mydir/l建立了连接 就会发送GET命令 GET /mydir/l HTTP/ 主机名为的Web服务器从它的文档空间中搜索子目录mydir的文件l 如果找到该文件 Web服务器把该文件内容传送给相应的Web浏览器
为了告知 Web浏览器传送内容的类型 Web服务器首先传送一些HTTP头信息 然后传送具体内容(即HTTP体信息) HTTP头信息和HTTP体信息之间用一个空行分开
常用的HTTP头信息有
① HTTP OK
这是Web服务器应答的第一行 列出服务器正在运行的HTTP版本号和应答代码 代码 OK 表示请求完成
② MIME_Version
它指示MIME类型的版本
③ content_type 类型
这个头信息非常重要 它指示HTTP体信息的MIME类型 如 content_type text/指示传送的数据是HTML文档
④ content_length 长度值
它指示HTTP体信息的长度(字节)
( ) 关闭连接 当应答结束后 Web浏览器与Web服务器必须断开 以保证其它Web浏览器能够与Web服务器建立连接
二绝败胡 Java实现Web服务器功能的程序设计
根据上述HTTP协议的作用原理 实现GET请求的Web服务器程序的方法如下
( ) 创并拦建ServerSocket类对象 监听端口 这是为了区别于HTTP的标准TCP/IP端口 而取的
( ) 等待 接受客户机连接到端口 得到与客户机连接的socket
( )枯大 创建与socket字相关联的输入流instream和输出流outstream
( ) 从与socket关联的输入流instream中读取一行客户机提交的请求信息 请求信息的格式为 GET 路径/文件名 HTTP/
( ) 从请求信息中获取请求类型 如果请求类型是GET 则从请求信息中获取所访问的HTML文件名 没有HTML文件名时 则以l作为文件名
( ) 如果HTML文件存在 则打开HTML文件 把HTTP头信息和HTML文件内容通过socket传回给Web浏览器 然后关闭文件 否则发送错误信息给Web浏览器
( ) 关闭与相应Web浏览器连接的socket字
下面的程序是根据上述方法编写的 可实现多线程的Web服务器 以保证多个客户机能同时与该Web服务器连接
程序 WebServer java文件
//WebServer java 用JAVA编写Web服务器
import java io *
import *
public class WebServer {
public static void main(String args[]) {
int i= PORT=
ServerSocket server=null
Socket client=null
try {
server=new ServerSocket(PORT)
System out println( Web Server is listening on port +server getLocalPort())
for ( ) {client=server accept() //接受客户机的连接请求
new ConnectionThread(client i) start()
i++
}
} catch (Exception e) {System out println(e) }
}
}
/* ConnnectionThread类完成与一个Web浏览器的通信 */
class ConnectionThread extends Thread {
Socket client //连接Web浏览器的socket字
int counter //计数器
public ConnectionThread(Socket cl int c) {
client=cl
counter=c
}
public void run() //线程体
{try {
String destIP=client getInetAddress() toString() //客户机IP地址
int destport=client getPort() //客户机端口号
System out println( Connection +counter+ connected to +destIP+ on port +destport+ )
PrintStream outstream=new PrintStream(client getOutputStream())
DataInputStream instream=new DataInputStream(client getInputStream())
String inline=instream readLine() //读取Web浏览器提交的请求信息
System out println( Received +inline)
if (getrequest(inline)) { //如果是GET请求
String filename=getfilename(inline)
File file=new File(filename)
if (file exists()) { //若文件存在 则将文件送给Web浏览器
System out println(filename+ requested )
outstream println( HTTP/ OK )
outstream println( MIME_version )
outstream println( Content_Type text/ )
int len=(int)file length()
outstream println( Content_Length +len)
outstream println( )
sendfile(outstream file) //发送文件
outstream flush()
} else { //文件不存在时
String notfound=
Error file not found
outstream println( HTTP/ no found )
outstream println( Content_Type text/ )
outstream println( Content_Length +notfound length()+ )
outstream println( )
outstream println(notfound)
outstream flush()
}
}
long m =
while (m <) {m ++ } //延时
client close()
} catch (IOException e) {
System out println( Exception +e)
}
}
/* 获取请求类型是否为 GET */
boolean getrequest(String s) {
if (s length()>)
{if (s substring( ) equalsIgnoreCase( GET )) return true
}
return false
}
/* 获取要访问的文件名 */
String getfilename(String s) {
String f=s substring(s indexOf(′ ′)+ )
f=f substring( f indexOf(′ ′))
try {
if (f charAt( )==′/′)
f=f substring( )
} catch (StringIndexOutOfBoundsException e) {
System out println( Exception +e)
}
if (f equals( )) f= l
return f
}
/*把指定文件发送给Web浏览器 */
void sendfile(PrintStream outs File file) {
try {
DataInputStream in=new DataInputStream(new FileInputStream(file))
int len=(int)file length()
byte buf[]=new byte[len]
in readFully(buf)
outs write(buf len)
outs flush()
in close()
} catch (Exception e) {
System out println( Error retrieving file )
System exit( )
}
}
}
程序中的ConnectionThread线程子类用来分析一个Web浏览器提交的请求 并将应答信息传回给Web浏览器 其中 getrequest()方法用来检测客户的请求是否为 GET getfilename(s)方法是从客户请求信息s中获取要访问的HTML文件名 sendfile()方法把指定文件内容通过socket传回给Web浏览器
对上述程序的getrequest()方法和相关部分作修改 也能对POST请求进行处理
三 运行实例
为了测试上述程序的正确性 将编译后的WebServer class ConnectionThread class和下面的l文件置于网络的某台主机的同一目录中(如 主机NT SRV的C JWEB目录)
程序 l文件
这是用JAVA写出的WEB服务器主页
年 月 日
首先在该主机上用java命令运行WebServer class
C jweb>java webserver
然后在客户机运行浏览器软件 在URL处输入WebServer程序所属的URL地址(如 ) 就在浏览器窗口显示出指定的HTML文档
注意 不能缺省端口号 如缺省 则运行该主机的正常WEB服务器
lishixinzhi/Article/program/Java/hx/201311/26626
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)