Servlet和JSP小结

在本部分 最重要的就是 理解 Servlet的运行原理。

Servlet说明白一点就是可以运行在服务器上的小型Java程序,它和一般的java程序的区别是是:可以通过HTTP协议 接收 和响应来自Web客户端的请求。
客户端浏览器 与 服务器 与 数据库 之间的 通信 交互 的 关系 如下图所示。
在这里插入图片描述

下面分析下,Serclet生命周期:
客户端 首先向 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对象包含Web应用中所有的Servlet在Web容器中的一些数据信息。ServletContext随着Web应用的启动而创建,随着Web应用的关闭而销毁。一个Web应用只有一个ServletContext对象。ServletContext不仅包含了web.xml文件中的配置信息,还包含了当前应用中所有Servlet可以共享的数据,可以这么说,ServletContext可以代表整个应用,所以ServletContext有另外一个名称:application。

在这里插入图片描述
ServletContext中与地址有关的常用方法: getRealPath(String name):获取 当前web应用中指定文件或目录在本地文件系统中的路径;getContextPath():获取当前应用在Web容器中的名称。

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中,存在3个可以 存放数据 的 空间范围 对象 ,这三个 对象 中 所存储 的数据范围作用,由大到小 分别为:
ServletContext—>HttpSession---->HttpServletRequest

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代码,为用户 提供动态数据,
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值