Servlet之HTTP响应处理、表单处理

           前言

                        在前面对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!


                          

                    

          

                          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章