Java Web servlet理解

一、有两种应用程序

1、桌面应用程序:需要下载,安装,更新等。如QQ,office等

2、web应用程序:就是我们开发的web项目,这不需要用户下载,只需要用户客户端联网,访问相应的互联网资源。

技术分享

二、Http协议

HTTP是一个属于应用层的面向对象的超文本传输协议,基于TCP/IP协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP特点:

    (1)无连接:分为4个阶段:建立连接、发送请求、等待响应、关闭连接

       优点:快速、简单、不占用网络服务器资源

       缺点:速度由网络来决定,每次传输数据量不能太大

    (2)无状态:HTTP 协议只负责传输数据,不负责保管所传递的数据

技术分享

Http访问服务器资源的方式

1、URL:(Uniform/Universal Resource Locator)统一资源定位符,请求的是服务器上的资源。资源是一个抽象的概念,指存放在服务器上的能够被客户端访问到的所有类型的文件(比如:文本、图片、音频、视频等)。

技术分享

2、表单提交

get和post方法的区别

⑴get方法通过URL传递参数,用户在客户端地址栏可见,如果是传递密码的话,不安全;post方法通过请求的body传递参数,用户在客户端不可见,更安全。

⑵get方法通过地址栏URL传递请求,而URL本身有长度限制,一般不超过255个字符;post方法通过请求body传递参数,没有长度限制。

三、Servlet

1、Servlet概念:

首先Servlet是一个java应用程序----->服务器端的java应用程序----->具有独立于平台和协议的特性----->可生成动态的Web页面。

Servlet担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。客户请求<----->Servlet<------>服务器响应

2、Servlet生命周期

        指Servlet对象在服务器内存中从创建到调用,到销毁的整个过程。

  (1)实例化:当客户端通过URL请求的时候,web容器根据web.xml配置自动调用该Servlet的构造方法,实例化对象。  

  (2)初始化:通过该servlet对象调用init()方法,读取web.xml中该servlet的配置信息,为service方法提供相关数据。  

  (3)服务:通过该对象调用service()方法,如果是继承HttpServlet,则根据请求头信息中的请求方法,调用对应的doGet()/doPost()   

  (4)销毁:不是在service()方法调用完后,立即调用,而是由JVM来决定。当JVM需要销毁一些对象、释放内存空间的时候,才会去调用该实例的destroy()方法。

3、HttpServletRequest(interface)

公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。

技术分享


技术分享


技术分享

4、HttpServletResponse(interface)

代表服务器向浏览器返回的响应直接输出内容到浏览器,使用Servlet输出HTML页面   

       PrintWriter out = response.getWriter();

       out.print("Hello :");

    设置响应的内容类型:

       response.setContentType("text/html; charset=UTF-8");

技术分享


技术分享


技术分享


技术分享


注意:使用response对象跳转,可以跳到项目外的一个URL资源上

如:response.sendRedirect(“http://www.baidu.com”);

    使用request对象跳转,只能在本项目资源中跳转

如:request.getRequestDispatcher(“url”).forward(request,response);

告诉浏览器不要缓存页面:

技术分享

 

页面刷新:单位是秒

技术分享

5、javax.servlet.RequestDispatcher(interface)

对请求响应进行补充的一个接口,主要负责两个功能

RequestDispatcher disp = request.getRequestDispatcher("login_ok.jsp");

    (1)跳转

         disp.forward(ServletRequest,ServletResponse);

    (2)包含

         disp.include(ServletRequest,ServletResponse);

    程序中一般连写:

    request.getRequestDispatcher("login_ok.jsp").forward(request,response);

6、HttpSession(interface)

是在服务器端保存数据最常见的方式

  

技术分享

 

Session:会话,(进行某活动连续的)一段时间,使用该对象可以完成一定的操作。会话信息的范围仅限于当前Web应用程序(
ServletContext
),因此存储在一个上下文中的信息在另一个上下文中不是直接可见的。

   Ⅰ.Hibernate中Session和Servlet中HttpSession的区别

   Hibernate中Session对象:主要作用是数据库连接、数据库操作

   Servlet中HttpSession对象:

   (1)帮助服务器,识别不同的浏览器

   (2)帮助服务器传递数据到不同的Servlet或JSP页面

   (3)能够人工控制连续的时间段的长短。

    Ⅱ.HttpSession 对象的常用方法:

   

技术分享

 

    (1)创建

    HttpSession session = request.getSession(true);

    要求服务器端重新创建一个session对象

    HttpSession session = request.getSession(false);

    不需要服务器端新建session对象,只需要从已有的session中取一个

    HttpSession session = request.getSession();

    没有要求,由服务器自动分配

    (2)识别浏览器

    //随机生成一个不重复的id,随着响应发送给浏览器,绑定在浏览器中,每次浏览器请求,都会把该id返回并与服务器端的id对比

    String id = session.getId();

    (3)传递数据

    //把数据存入session中

    session.setAttribute("name",object);

    //在其他Servlet或jsp页面中取出数据

    Object obj = session.getAttribute("name");

    一般情况下,需要先判断是否为空,再取值

    (4)设置有效时间

    一个session对象默认有30分钟的有效时间

    //设置单个session对象的最长有效时间

    session.setMaxInactiveInterval(60*60*24秒);

    //设置整个工程中所有session的有效时间

    <session-config>

        <session-timeout>20000</session-timeout>

    </session-config>

    (5)清除数据

    session.removeAttribute("name");

    (6)设置Session失效或钝化

    session.invalidate();

技术分享

 

    例如:

    Session类似储物柜,最主要作用就是存取数据

    寝室的储物柜:

    (1)一人一个

    (2)能够存取东西

    (3)一般的一个柜子一把钥匙

    (4)特殊情况,可以给柜子贴封条

    (5)有时候柜子可能两个人或N个人共用

7、ServletContext(interface)

   ⑴ServletContext的定义

技术分享

 

⑵ServletContext对象能够访问web项目的初始化参数、存储在ServletContext中的对象、web项目中的资源文件、日志;ServletContext就是Servlet容器,提供的方法可以在同一个web应用下的所有Servlet中使用。

8、ServletConfig(interface)

技术分享


本文出自 “程序猿进阶攻城狮” 博客,请务必保留此出处http://zhoum1118.blog.51cto.com/10054110/1639322

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。