zoukankan      html  css  js  c++  java
  • jsp之认识 servlet (基础、工作原理、容器请求处理)

    Tomcat 的安装:

      eclipse 需要自行安装tomcat,这是web 项目运行的服务器。如果用的是MyEclipse,里面自带tomcat,方便清除部署垃圾,利于项目运行。

      Tomcat的安装详细步骤:  自行百度!

    1、什么是servlet?

      Sun公司制定的用于拓展web服务器功能的组件规范。

      a)  Web服务器只能处理静态的请求,不能够处理动态资源请求。这时需要servlet来对web服务器进行功能拓展。(web服务收到请求之后,如果需要计算,调用servlet容器来处理,再次调用servlet来计算)。

      b) 组件规范:

       组件:符合规范的,实现部分功能的,需要部署到相应的容器里面才能运行的软件模块。

       容器:符合规范的,能够提供运行环境的程序。

    2、servlet 的内部结构以及运行原理

      a)  内部结构

        (1)Service 服务:doget/dopost(请求方式) ... 为请求服务。

          问题:什么时候执行?

            访问一次执行一次

        (2)构造方法:创建servlet 对象。

          问题:什么时候执行?

            第一次访问时执行,并且执行一次。

                  (3)初始化方法:init()

          问题:  什么时候执行?

              第一次访问时执行, 之后执行一次。  

        (4)销毁方法 :destroy() :  从内存中清除掉。。 

           问题:  什么时候执行? 

             停止服务时执行,并且只执行一次

         面试题   : 请讲述servlet 内部结构以及访问次数。

      b)  运行原理:

        (1)    servlet 容器:读取到web.xml文件

        (2)    当某个 Servlet  被访问到时(URL),解析路径,获取到Servlet对应的类。

        (3)    容器加载实现并实例化一个 servlet 的对象,放入到servlet 容器中。

           (4)   执行服务。第二次开启服务器直接到容器中找到对应的servlet 服务。

        (5)   当服务停止或者服务器重启时,调用destory 方法,销毁servlet 对象。

      c) servlet 的生命周期:

        实例化 -->  初始化-->  服务-->  销毁

        (1)  创建  servlet  对象

        (2)    servlet 通过调用 init() 方法 进行初始化。  / 只执行一次

        (3)    servlet 调用 service 方法来处理客户端的请求。  // 处理请求

        (4)    servlet 调用destory ()  终止服务。

        (5)    最后,servlet 是由 JVM 的垃圾回收器回收。  

     面试题:解释servlet的生命周期?

      d) 访问路径:

        localhost:8080/DaiN/hello

        解析: locallost 是本机地址,等同于 127.0.0.1

            8080 是默认的端口号;

            DaiN 是项目名称

            hello 是web.xml 文件中提供的外部访问路径。

    错误的常见形式:  

      404错误:  服务器找不到对应的请求资源 。(检查路径)

      405错误:  服务器找不到  service  方法的请求。(检查  service 方法)

      500错误:  程序在运行过程中出错。(检查servlet方法、web.xml 文件)

    解决中文乱码的问题 :

    系统默认的解析编码集:ios-8859-1                                                                                        

    Request.setCharacterEncoding("UTF-8");

    Response.setContentType("text/html;charset=utf-8");   //前是类型,后是编码集

    3、请求方式

      Doget

    1 public class doGet_servlet extends HttpServlet {
    2 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    3       request.setCaracterEncoding(“gb2312”);//汉字转码
    4       PrintWriter out = response.getWriter();
    5       out.println("The Parameter are :"+request.getParameter("name1"));
    6   }
    7 }

      Dopost

    1 public class doPost extends HttpServlet {
    2 public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    3       request.setCaracterEncoding(“gb2312”);//汉字转码
    4       PrintWriter out = response.getWriter();
    5       out.println("The Parameter are :"+request.getParameter("name2"));
    6   }
    7 }

    Get:请求指定的资源(参数显示在地址栏上,不安全)只能提交少量数据给服务器。

    Post:向指定的资源提交需求处理数据。(参数不会显示在地址栏上,相对安全)

    获取请求参数信息

     1 public class RequestInfo extends HttpServlet {
     2 
     3     @Override
     4     protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     5         Enumeration e = request.getHeaderNames(); //获取所有元素的消息头
     6         while(e.hasMoreElements()) {  //查看元素
     7             String headerName = e.nextElement().toString();//便利所有元素的消息头
     8             System.out.println(headerName+":"+request.getHeader(headerName));
     9         }
    10         System.out.println("请求方式:"+request.getMethod());
    11         System.out.println("请求的协议种类:"+request.getPathInfo());
    12         System.out.println("请求的资源路径"+request.getRequestURI());
    13         System.out.println("请求的路径信息"+request.getRequestURL());
    14         System.out.println("Servlet的路径"+request.getServletPath());
    15         
    16     }
    17 }

    请求方式:GET
    请求的协议种类:null
    请求的资源路径/DaiN/Info
    请求的路径信息http://localhost:8080/DaiN/Info
    Servlet的路径/Info

  • 相关阅读:
    Flutter实战视频-移动电商-35.列表页_上拉加载更多制作
    Flutter实战视频-移动电商-34.列表页_小BUG的修复
    Flutter实战视频-移动电商-33.列表页_子类和商品列表交互效果
    Flutter实战视频-移动电商-32.列表页_小类高亮交互效果制作
    Flutter实战视频-移动电商-31.列表页_列表切换交互制作
    Flutter实战视频-移动电商-30.列表页_商品列表UI界面布局
    Flutter实战视频-移动电商-29.列表页_商品列表数据模型建立
    Flutter实战视频-移动电商-28.列表页_商品列表后台接口调试
    Flutter实战视频-移动电商-27.列表页_现有Bug修复和完善
    Flutter实战视频-移动电商-26.列表页_使用Provide控制子类-2
  • 原文地址:https://www.cnblogs.com/liumce/p/7746350.html
Copyright © 2011-2022 走看看