<html>
<head>
<title>movie</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=GB2312">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<h2>select from available movies</h2>
<form action = movie method = post>
<select name = "movies" size = "5" multiple>
<option> air force </option>
<option> happy gilmore </option>
<option> so i married an axe murderer</option>
<option> austin powers </option>
<option> pure luck </option>
</select><br>
<input type = "submit" name = "add" value = "add movies">
</form>
</body>
</html>
request其实是一次请求,而servlet是一个服务器处理你请求的应用程序。当你像服务器发送一个请求的时候,会对你的请求打包成一个数据包发送到服务器,服务器接受到你的数据包以后交给服务器应用程序(servlet)进行处理,处理完成以后并给于响应(response),其实你给与了请求服务器就一定会响应(如果这个服务器存在的话),只是看它怎么响应而已。
就如同你上面写的这个servlet,首先你输入地址访问这个servlet(其实不是访问servlet,而是访问那个地址),服务器接受到你的请求就交给servlet进行处理。servlet处理完,然后响应一个字符流给你(这个字符流就是你编写的那个html文本),你访问到的那个页面其实就是服务器发送给你的一个字符流。你的浏览器解析这个字符流得到一个html的页面。这个字符流以某种形式保存在你的本机上(客户端)。如果你受到的html文本是一个表单,这个表单不是在服务器上,而是在你本机上,它是服务其发给你的。当你填写表单信息并按提交按钮的时候,这又是一次请求了,这次请求吧你的请求信息再次打包,包括表单里面填写的那些信息一起打包并提交。服务器再次解析他们并交给服务器应用程序(servlet)进行处理,处理完以后并且响应。
大概全过程就是如此
在我的页面接收到显示信息之前,web服务器是如何如何得到并把页面发送给我的呢?
我上面写的servlet只是接收这个页面的信息,并在控制台打印,那么,我将如何得到第一个页面呢?
你上面写的那个servlet里面的out输出流都是向客户端发送信息,很明显,你的out是从response里面获得的,response是响应不是请求。
你从客户端获得的信息是request.etParameterValues这个方法中获得的。
这个servlet不仅仅获得表单提交的值,同样也向客户端发送了一个页面。