Servlet和JSP小结

    技术2024-01-12  104

    Servlet和JSP小结

    Servlet简介

    Servlet可以说是运行在服务器上的小型Java程序,它和一般的java程序的区别是是:可以通过HTTP协议 接收 和响应来自Web客户端的请求。

    客户端浏览器与服务器与数据库之间的通信交互关系 如图所示。

    Servlet生命周期:

    客户端 首先向 tomcat 输入 网址URL,然后 tomcat根据 请求的URL找到 对应的应用,找到url-pattern中对应的 servlet类,然后实例化该类 ,依次执行 init,service,destory方法;需要注意的是当浏览器 向服务器端 多次提交同一请求的时候: init方法只执行一次,而 service方法会 执行多次,最后关闭应用的时候 执行destory方法。 在使用 Servlet的时候其实就是使用 Serlet包下的各种类 ,tomacat服务器已经在初始化的时候封装好了各种类

    在Servlet接口 的 init()方法 中有一个参数ServletConfig,这个参数类型是个接口,里面是 一些在web.xml中对当前Servlet类的配置信息。Servlet规范 将Servlet的配置信息全部封装到了ServletConfig接口对象中。每个Servlet都对应一个ServletConfig用于封装各自的配置信息,即有几个Servlet就会产生 几个ServletConfig对象;WEB容器在启动时,它会为每个WEB应用程序 都创建一个对应的ServletContext对象,ServletContext有另外一个名称:application。ServletContext对象包含Web应用中所有的Servlet在Web容器中的一些数据信息。ServletContext随着Web应用的启动而创建,随着Web应用的关闭而销毁。一个Web应用只有一个ServletContext对象。ServletContext不仅包含了web.xml文件中的配置信息,还包含了当前应用中所有Servlet可以共享的数据,可以这么说,ServletContext可以代表整个应用。

    HttpServletRequest介绍

    用于封装 代表浏览器发送给客户端的信息(将“HTTP请求协议”的完整内容封装到该对象中)。开发者拿到 request对象后就可以获取客户端发送给服务器的请求数据。(由服务器自行创建)

    HttpServletRequest的生命周期

    当客户端浏览器向服务器发送请求后,服务器 会根据Http请求协议的格式对请求进行解析。同时,服务器会创建HttpServletRequest类型的对象,即请求对象,然后将解析出的数据封装到该请求对象中。此时HttpServletRequest实例就创建并初始化完毕了,也就是说,该请求对象是由服务器创建的。当服务器向客户daunt发送响应结束后,HttpServletRequest实例对象被服务器销毁,HttpServletRequest对象的生命周期很短暂。 一次请求对应一个请求对象,另外一次请求对应另外一个请求对象,即每次请求都会创建一个 HttpServletRequest类型的对象,这些对象之间没有关系。

    常用方法的例子:

    String name = request.getParameter("name"); String password = request.getParameter("password"); System.out.println("提交的用户名为"+name); System.out.println("密码为"+password); System.out.println("提交的网页 URI 申请为"+request.getRequestURI()); ///Test11/request System.out.println("提交的网页 URl 申请为"+request.getRequestURL()); //http://localhost:8080/Test11/request //查看提交的 请求头 Enumeration<String> requestName = request.getHeaderNames(); while(requestName.hasMoreElements()) { String headerName = requestName.nextElement(); System.out.println("请求头:"+headerName+"值为:"+request.getHeader(headerName)); } //获取客户端信息的方法 System.out.println("发出请求的客户机的IP地址"+request.getRemoteAddr());// 发出请求的客户机的IP地址0:0:0:0:0:0:0:1 System.out.println("发出请求的客户机的完整主机名:"+request.getRemoteHost());// 发出请求的客户机的完整主机名:0:0:0:0:0:0:0:1 System.out.println("客户机所使用的网络端口号"+ request.getRemotePort());// 客户机所使用的网络端口号59129 System.out.println("WEB服务器的IP地址为:"+request.getLocalAddr());// WEB服务器的IP地址为:0:0:0:0:0:0:0:1 System.out.println("WEB服务器的主机名"+request.getLocalName());// WEB服务器的主机名0:0:0:0:0:0:0:1 System.out.println(request.getContextPngath()); // /Test11

    HttpServletResponse介绍

    Web服务器收到客户端的http请求,会针对每一次请求创建一个用于代表响应的 HttpServletResponse类型的 response对象,开发者可以将要向客户端返回的数据封装到response对象中。

    ServletResponse接口有一个方法 getWriter(),用于获取到一个 标准流对象 PrintWriter,该输出流对象是专门用于向客户端浏览器中输出字符数据的,称为标准输出流。

    数据空间范围对比

    在JavaWeb编程的 API中,存在4个可以存放数据的空间范围对象 ,这三个对象中所存储的数据范围作用,由大到小 分别为:

    ServletContext(application)—>HttpSession—>HttpServletRequest—>page

    Cookie与 Session会话

    首先要明白的 就是Cookie与Session的生命周期 :Cookie存储在客户端,在手动创建一个Cookie时,服务器向客户端浏览器返回一个cookie值,这之后浏览器每次访问服务器都会带着这个Cookie。 Session存储在服务器端,服务器端将一个SessionId以Cookie的形式返回给浏览器客户端,这之后,浏览器客户端每次访问服务器的时候都会带着这个SessionId找到对应的Session对象。

    cookie中重要的是添加cookie与获取cookie: addcookie,getcookies session中重要的是为 session添加属性: session.setAttribute,session.getAttribute;session.removeAttribute()

    JSP

    ​ JSP全称是Java Server Pages,是一种动态网页技术,JSP其实 就是在 html中 插入java代码和JSP标签之后形成的文件,文件名以.jsp结尾。其实 JSP就是一个Servlet。在servlet中编写html比较痛苦,而写JSP就像 在写 html,但它相比 html而言,html只能为用户 提供静态数据即静态页面,而JSP技术 允许在页面中嵌套java代码,为用户提供动态数据

    编写html比较痛苦,而写JSP就像 在写 html,但它相比 html而言,html只能为用户 提供静态数据即静态页面,而JSP技术 允许在页面中嵌套java代码,为用户提供动态数据

    Processed: 0.009, SQL: 9