第七次学习任务

第七次学习任务

HTTP协议特点

  • 支持客服端(浏览器)/服务器模式。
  • 简单快速:客户端只向服务器发送请求方法和路径,服务器即可响应数据,因而通信速度很快。请求方法常用的有GET,POST等。
  • 灵活:HTTP允许传输任意类型的数据,传输的数据类型由Content-type标识。
  • 无连接:无连接指的是每次TCP连接只处理一个或多个请求,服务处理完客户的请求后,即断开连接,采用这种方式可以节约传输时间。
    HTTP1.0版本是一个请求响应之后,直接断开,称为短连接
    HTTP1.1版本不是响应后直接就断开了,而是等几秒钟,这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,就会断开连接,称之为长连接。
  • 无状态:HTTP协议是无状态协议。
    无状态是指协议对于事务处理没有记忆能力。

HTTP协议通信流程

  • 客户与服务器建立连接(三次握手)。
  • 客户向服务器发送请求。
  • 服务器接受请求,并根据请求返回相应的文件作为应答。
  • 客户与服务器关闭连接(四次挥手)。

Servlet

在Servlet体系结构中,除了实现Servlet接口,还可以通过继承GenericServlet 或 HttpServlet类,完成编写。

Servlet接口

在Servlet API中最重要的是Servlet接口,所有Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了该接口的类。
该接口包括以下五个方法:
public void init(ServletConfig servletConfig);
public ServletConfig getServletConfig();
public void service(ServletRequest servletRequest, ServletResponse servletResponse);
public String getServletInfo();
public void destroy();

HttpServlet抽象类

HttpServlet层继承GenericServlet的基础上进一步的扩展。
提供将要被子类化以创建适用于Web站点的HTTP Servlet的抽象类,HttpServlet的子类至少必须重写一个方法,该方法通常是以下这些方法之一:
doGet,如果Servlet支持HTTP GET 请求
doPost,用于HTTP POST 请求
doPut,用于HTTP PUT 请求
doDelete,用于HTTP DELETE 请求

@WebServlet注解常用属性

  • name:Servlet 名字(可选)
  • value配置url路径,可以配置多个
  • urlPatterns:配置url路径,和value作用一样,不能同时使用
  • loadOnStartup:配置Servlet的创建的时机,如果是0或者正数启动程序时创建,如果是负数,则访问时创建。数字越小优先级越高。

Servlet应用
request对象

在Servlet中用来处理客户请求需要用doGet或doPost方法的request对象。

get和post区别

get请求

  • get提交的数据会放在url之后,以?分割url和传输数据,参数之间以&连接
  • get方法明文传递,数据量小,不安全
  • 效率高,浏览器默认请求方式为GET请求
  • 对应的Servlet的方法是doGet
    post请求
  • post方法是把提交的数据放在HTTP包的Body中
  • 密文传递数据,数据量大,安全
  • 效率相对没有GET高
  • 对应的Servlet的方法是doPost

request主要方法

方法名说明
String getParameter(String name)根据表单组件名称获取提交数据
void SetCharacterEncoding(String charset)指定每个请求的编码

response主要方法

方法名称作用
setHeader(name,value)设置响应信息头
setContentType(String)设置响应文件类型,响应式的编码格式
setCharacterEncoding(String)设置服务端响应内容编码格式
getWriter()获取字符输出流

request实现转发跳跃
转发

转发的作用在于服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理。

页面跳转

在调用业务逻辑的Servlet中,编写以下代码:

  • request。getRequestDispatcher("/目标url.pattern").forward(requst,response);

数据传递

forward表示一次请求,是在服务器内部跳转,可以共享同一次request作用域中的数据

  • request作用域:拥有存储数据的空间,作用范围是一次请求有效(一次请求可以经过多次转发)
    可以将数据存入request后,在一次请求过程中的任何位置进行获取
    可传递任何数据(基本数据类型,对象,数组,集合等)
  • 存数据:request.setAttribute(key.value);
    以键值对形式存储在request作用域中。key为String类型,value为Object类型
  • 取数据:request.getAttribute(key);
    通过String类型的key访问Object类型的value。

转发特点

  • 转发是服务器行为
  • 转发是浏览器只做一次访问请求
  • 转发浏览器地址不变
  • 转发两次跳转之间传输的信息不会丢失,所以可以通过request进行数据的传递
  • 转发只能将请求转发给同一个web应用中的组件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值