zoukankan      html  css  js  c++  java
  • Servlet梳理一

         读《Head First Servlet&JSP》个人体会,总结的一些东东。

          1:HTTP响应剖析。
               下面是HTTP响应的具体的内容:
                HTTP/1.1  200  OK                    这是响应的头部
                Set-Cookie:JSESSIONID=23123lkj32k3j2kk43kjk4kj; Path=/TestEL
                Content-Type: text/html
                Content-Length: 397
                Date : Sat,19 May 2012 18:44:45 GMT
                Server :Apache-Coyote/1.1
                Connection: close

                <html>                                     这是响应的体部
                ...........
                </html>

           2: Servlet剖析。

          Servlet在容器的控制下,如何完成请求处理:
                     用户点击一个连接,指向一个servlet而不是一个静态的页面
                     容器看出来这个请求要的是一个servlet,所以创建两个对象HttpServletRequest,HttpServletResponse
                     容器根据请求的URL找到正确的servlet,为这个请求创建或分配一个线程,并把创建的HttpServletRequest和HttpServletResponse传递给这个servlet的线程
                     容器调用servlet的service()方法。根据请求的不容类型,service会调用doGet()或doPost()方法
                     doGet()方法生成动态的页面,并把这个页面”塞到“响应对象里
                     线程结束,容器把响应对象转换为一个http响应,把他发给用户,然后删除请求对象和响应对象

                 import javax.servlet.*;
                 import javax.servlet.http.*;
                 import java.io.*;                                                    Servlet从这里拿到容器所创建的请求对象和响应对象

                 public  class   Servlet2 extends HttpServlet{             ↑↑↑↑↑↑↑↑↑
                           public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
                                PrintWriter out = response.getWriter();                            在Servlet从容器得到的响应对象中,可以拿到一个PrintWriter。使用
                                java.util.Date  today = new java.util.Date();                       这个PrintWriter能够将HTML文本输出到响应对象。最后由容器把响应
                                out.println("<html>"+                                                     对象装换为一个HTTP响应(那个由PrintWriter输出的内容,就放在HTTP响应的
                                                "<body>"+                                                    体部)
                                                "<h1>"+
                                                "This is Servlet2"+
                                                "<br>"+
                                                today+
                                                "</h1>"+
                                                "</body>"+
                                                "</html>");

                            }

                  }

                  这种做法很原始,如果HTML再复杂一点,不难想象该有多复杂。这样就引入了JSP。引入后响应过程如下:
                        浏览器把请求对象数据发送给容器                   
                        容器根据URL找到正确的servlet,并把请求对象传递给这个servlet
                        servlet调用服务层的javaBean寻找帮助
                        这个类返回一个回答,servlet吧这个回答增加到请求对象中           (我更多的是放在session中的,没有涉及到这一点)
                        servlet把请求对象转发给JSP
                        JSP从请求对象找到答案
                        JSP为容器生成一个静态的页面
                        Servlet把这个页面附加到HttpServletResponse中的内容部分,最后转换为Http响应的体部
                        容器把这个http响应发送给用户

                        import com.example.model.*;
                        import javax.servlet.*;
                        import javax.servlet.http.*;
                        import java.io.*;
                        import java.util.*;

                        public  class  Servlet2 extends HttpServlet{

                                  public void  doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{

                                          String c = request.getParameter("color");
                                          JavaBean jb = new JavaBean();

                                          List  result  = jb.getBrands(c);
                                          request.setAttribute("style",result);            
    为请求对象增加一个属性,工jsp使用
                                          RequestDispatcher view = request.getRequestDispatcher("result.jsp");        为jsp实例化一个请求分派器
                                          view.forward(request,response);                 使用请求分派器要求容器准备好jsp,并向jsp发送请求和响应

                                  }

                         }

                                    

               

  • 相关阅读:
    申请奖励加分
    6.14
    6.11
    6.10
    6.9
    6.8
    6.7
    6.6
    6.5
    6.4
  • 原文地址:https://www.cnblogs.com/lovery/p/2509161.html
Copyright © 2011-2022 走看看