前言
在前面对HTTP请求的相关信息和Servlet是如何对HTTP请求进行处理的,接下来学习HTTP
响应,以及Servlet对HTTP响应的处理。之后掌握Servlet对表单的处理,以一个简单的登录验证
来学习。
HTTP响应
同样的先看看病了解下HTTP响应的格式。与HTTP请求类似HTTP响应也由3个部分组成:
1、协议状态版本代码描述
2、响应头
3、响应正文
下面就是一个HTTP响应的实例:
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
协议状态代码描述类似于HTTP请求的第一行,它描述了通信所用的协议的版本,服务器对HTTP
请求处理的结果状态, 200表示成功。
响应头:和请求头类似,其中包含了许多有用的信息,例如服务器类型、日期时间等。
响应正文:响应正文就是服务器返回的内容,一般情况下是HTML静态页面。
值得一提是在协议状态版本代码描述中包含了HTTP状态码的信息例如200,它反映了服务器处理
HTTP请求的状态,了解一些常见的状态码,是有一些好处的。
200 表示一切ok
404 表示请求资源not found
500 表示服务器内部错误
.................................
至于更详细的东西,读者可以参考下面一篇文章:
http://www.360doc.com/content/10/0902/16/691214_50674867.shtml
Servet对HTTP响应的处理
Servlet对响应的处理同样是通过HttpServletResponse进行封装的,就此反射一下,看看实际的
实现类是什么。
class org.apache.catalina.connector.ResponseFacade
反射出来是Tomcat catalina里面的类,这里先不管,直接看Servlet源码中HttpResponse提供的
一些比较重要的方法。
addCookie()添加Cookie
setHeader()设置响应头
getWriter():得到PrintWriter对象用于向客户端传送普通文本。
getOutputStream():得到OutputStream对象用于向客户端传送二进制文本。
sendRedirect():请求重定向,吧请求定位到另一个URL上,注意和请求转发的区别。
这里需找个时间做个总结。
看例子程序:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(response.getClass());
response.sendRedirect("index.jsp");
}
当程序请求此Servlet,该Servlet会将请求重定向到index.jsp,最后将index.jsp里面的内容
返回给浏览器。
表单处理
我们知道浏览器显示的html静态网页,那么客户端和服务器是如何进行信息交互的呢?
换句话说客户端的数据时如何提交到服务器的呢?这就要使用表单了,使用表单提交数据。
下面通过一个登陆验证来实现表单数据的提交和验证,顺便将上一篇Servlet对HTTP请求的
处理和响应的处理结合起来。
首先完成一个简单的登录界面,login.jsp这里
<form action="LoginCheck" method="post">
姓名:<input type="text" name ="username"/></br>
密码:<input type="password" name="password"/> </br>
<input type="submit" value="登录"/>
</form>
在LoginCheck中进行简单的登录验证
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Tomcat将表单信息封装到请求正文中
//通过request对象得到表单信息
String name = request.getParameter("username");
String password = request.getParameter("password");
//验证
if(name.equals("kiritor")&&password.equals("kiritor"))
{
//跳转到首页,请求转发方式
request.getRequestDispatcher("index.jsp").forward(request, response);
}
else {
//跳转错误信息页面,请求重定向方式
response.sendRedirect("error.jsp");
}
}
至于登录成功与失败的两种情况,这里就不贴图了。
可以看见的是上述表单的提交笔者使用的post方法,我们知道表单的提交方式还有get的
方式,两种到底有什么区别呢?后续总结。
还有验证成功与验证失败的跳转方式也不一样,一种是请求转发、一种是重定向,两者
具体的用法和区别后续讨论之。over!