zoukankan      html  css  js  c++  java
  • Servlet总结

    1. 明确Tomcat服务器的本质,就是通过反射机制获取Servlet对象,然后调用该对象的方法。

    2. 明确Servlet的生命周期,同时要知道Servlet对象是个伪单例,即构造方法为public的单例,要注意多线程的问题。

    3. 明确ServletConfig接口对应一个Servlet对象的配置信息对象,在Servlet运行init的时候获取;

      明确ServletContext接口对应所有Servlet对象的“四周环境”,在服务器启动阶段被实例化,在服务器关闭阶段被销毁,通过ServletConfig获取;

      一个Servlet对象对应一个ServletConfig,所有Servlet对象对应一个ServletContext;

     ServletContext范围可以完成跨用户传递数据,它的范围相当于整个Tomcat范围

    4. 知道前端欢迎页面的设置<welcome-file-list>,任何一种web资源都可以作为欢迎页面

    5. 知道HTTP状态码404、500、405(get/post使用不正确),以及前端错误跳转<error-page>

    6. 知道sun公司使用适配器设计模式为我们实现的GenericServlet,可以让我们不用写一些Servlet中的方法,同时提供了其他许多辅助方法。

    7. 明确HTTP请求协议是依次由请求行、消息报头、空白行和请求体构成;响应协议依次是由状态行、响应报头、空白行和响应体构成。

    8. 明确GET请求POST请求的区别:

      GET请求传送的数据放在在URI中,而POST请求传送的数据放在请求体中;

      一般只有传送敏感数据、传送非字符串数据、传送的数据非常多、请求是为了修改服务器资源,才会使用POST请求;

      GET请求的最终结果会被浏览器缓存收纳,下次浏览器再发送相同的请求路径,则从缓存中获取资源,以减低服务器的压力;而POST请求的最终结果不会被浏览器缓存。

    9. 明确为了实现服务器需要前端发送POST请求,则前端就发送POST请求,若发送GET请求,则服务器会提示错误信息,sun公司使用模板方法设计模式为我们实现了HttpServlet(继承自GenericServlet),以后写自己的Servlet时,都要继承自HttpServlet,并且使用doPost或者doGet方法,替代原来的service方法。

    10. 明确doPost或doGet方法中的参数HttpServletRequest接口

      该对象封装了浏览器的请求方式、webapp的根路径、请求的URI、请求的URL、Servlet在web.xml中配置的路径、客户端的IP地址,以及表单提交的数据

      该对象还可以获取请求转发器完成请求转发,设置服务器从前端接收到的数据的编码方式,获取Cookie和Session;

      一次请求对应一个request对象,请求的范围很小

    11. 明确web开发过程中的乱码解决方案,乱码分为数据传递、展示、保存过程中的乱码。

      数据传递过程中的乱码:是因为浏览器发送给服务器的数据是ISO-8859-1编码的,所以服务器接收到的数据会出现乱码

      解决方法有三:1. 编码重组  2. doPost中使用request.setCharacterEncoding("UTF-8");   3. 修改Tomcat配置文件中的URIEncoding

    12. 明确转发重定向的区别:

      转发forward,只有一次请求,地址栏不会变,可以实现跨Servlet的数据传输,但是这些Servlet必须在同一请求中;

      request.getRequestDispatcher("/b").forward(request, response);

      重定向redirect,有两次请求,地址栏会变,服务器接收到第一次请求后,会将第二次请求的路径发送给浏览器,浏览器接收到之后发出第二次请求;

      重定向可以解决浏览器的刷新问题,因为刷新的始终是第二次请求,不会影响第一次请求的结果。

      response.sendRedirect("/prj-servlet-16/b");

    13. 重点明确Cookie

      Cookie的作用是在客户端保存会话状态,典型例子实现十天内免登录;

      Cookie可以保存在浏览器缓存中,此时浏览器关闭则Cookie消失;Cookie也可以保存在客户端的硬盘中,只要设置Cookie的有效时长大于0,cookie1.setMaxAge(60 * 60 * 24 * 10); 此时浏览器关闭Cookie也不会消失;

      在javaweb中Cookie以对象的形式存在 Cookie cookie1 = new Cookie("username",username); 通过 response.addCookie(cookie1); 由服务器发送给浏览器,浏览器保存后,当特定的请求路径再次请求时,浏览器会向服务器传送相应的Cookie,服务器通过 Cookie[] cookies = request.getCookies(); 获取Cookie。可以通过 cookie1.setPath(request.getContextPath()); 设置Cookie关联的请求路径。

      浏览器可以禁用Cookie,从而浏览器不再接收Cookie。

    14. 重点明确Session:

      Session的作用是在服务器中保存会话状态

      在一个用户的会话进行过程中,服务器始终为这个用户维护一个会话对象HttpSession;服务器中维护了大量的HttpSession对象,即有一个session列表;

      web容器是利用Cookie实现一个会话对应一个HttpSession对象,通过浏览器传送给服务器的Cookie,从session列表中查找到相应的HttpSession对象,具体原理要清楚;

      从而如果禁用Cookie,会导致无法获得会话对象HttpSession,除非使用URL重写机制;

      浏览器关闭的时候,服务器中的HttpSession对象不会被销毁,该对象只有超时未使用(可设置),或使用 session.invalidate(); 才会被销毁。

    15. 应用范围总结:

      ServletContext application是应用范围的;HttpSession session是会话范围的;HttpServletRequest request是请求范围的。

  • 相关阅读:
    SQL Server 日期和时间函数
    sql日期格式化函数
    C#中事件的使用
    CSS中的display:inline-block
    用aspnet_regiis注册Framework4.0框架
    什么是CSS hack
    第一次MySQL的SQL注入实验
    (二分)Block Towers(cf626)
    (多线程dp)Matrix (hdu 2686)
    (数位dp)Bomb (hdu 3555)
  • 原文地址:https://www.cnblogs.com/qjjazry/p/6375623.html
Copyright © 2011-2022 走看看