第八篇学习总结

2020-01-25  本文已影响0人  拼搏男孩

第八篇学习总结

一、Servlet

1、Servlet概述

Servlet是Java Server Applet的简称,称为小服务器程序,用Java编写的而服务器端程序,主要功能交互式地浏览和修改数据,生成动态Web内容。

1.1 HTTP协议

HTTP协议(超文本传输协议)是互联网上应用最为广泛的一种网络协议,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

2、Servlet使用

2.1 Servlet接口

所有的Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或直接继承自实现了该接口的类。处理方式:当第一次访问Servlet时,服务器会创建Servlet对象,并调用init方法,当第二次访问时,已经存在,不用继续创建了,Servlet类是单例的。

2.2 HttpServlet类

这个类是继承GenericServlet的基础上进一步的扩展,提供将要被子类化以创建适用于Web站点的HTTP Servlet。一般需要继承这个类并重写doGet与doPost方法。

2.3 Servlet的两种创建方式

2.4 Servlet的两种配置方式

<servlet>
 <!--名称 -->
  <servlet-name>hello2</servlet-name>
  <!--Servlet的全称类名 -->
  <servlet-class>com.qf.web.servlet.HelloServlet</servlet-class>
  <!--启动的优先级,数字越小越先起作用 -->
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!--映射配置 -->
 <servlet-mapping>
 <!--名称 -->
  <servlet-name>hello2</servlet-name>
  <!--资源的匹配规则:精确匹配 -->
  <url-pattern>/hello2</url-pattern>
 </servlet-mapping>

url-pattern的模式:
精确匹配:/具体的名称
后缀匹配:.xxx
通配符匹配:/
匹配所有请求,所有资源
通配符匹配:/匹配所有请求,不包括jsp页面

2.5 生命周期

2.6 获取请求参数

request.getParameter("name")

2.7 请求方式

2.8 解决中文乱码

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

二、request和response

1、页面跳转

1.1 重定向

重定向就是通过各种方法将网络请求重新定个方向转到其它位置。其特点是:

实现重定向:response.sendRedirect(url);

1.2 请求转发

实现转发:request.getRequestDispatcher(url).forward(request,response);

1.3 网络路径

2、response对象

在servlet中可以使用的内置对象主要有:request、response、application、session等。

我们大部分使用HttpServletResponse对象作为直接操作对象

3、request对象

HttpServletRequest常用API

4、获取请求数据

可以创建一个JavaBean用于存储和传输数据,然后使用getParameter方法获取到前端传过来的值再使用set方法,不过更为简便的方法是使用Apache BeanUtils进行快速映射。需要三个包:beanutils、logging、commons-collections。

//这个类对BeanUtils进行了二次封装
public class WebUtils {
    public static <E> E populate(Class<E> clazz, HttpServletRequest req){
        E obj = null;
        try {
            obj=clazz.newInstance();
            BeanUtils.populate(obj,req.getParameterMap());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}

三、HTTP协议各版本更新

1、http 0.9

这是最早的http协议版本,功能简单,只能请求与接收数据。

2、http 1.0

引入请求头与响应头,利用请求头和响应头中标识来区分不同类型的数据请求和请求的方式。

3、http 1.1

保持长连接:keep-alive,可以使客户端多个请求共用一个TCP连接

4、http 2.0

使用二进制协议取代文本协议、压缩包头、多路符用、主动推送

四、cookie

HTTP协议是无状态的,状态管理常用的解决方案主要有两种:cookie与session,前者是客户端状态管理技术,后者是服务器状态管理技术。
cookie是浏览器的存储区域,可以用key-value的形式存储一些值,当浏览器访问web服务器的某个资源时,服务器将数据发送给客户端,那么下一次访问该web服务器时,浏览器会将这个cookie回传给web服务器

1、创建cookie

//创建Cookie
Cookie cookie=new Cookie("code", code);
ck.setPath("/");//设置Cookie的路径
ck.setMaxAge(-1);//内存存储,取值有三种:>0有效期,单位秒;=0立即失效;<0内存存储,浏览器关闭失效
response.addCookie(ck);//让浏览器添加Cookie

2、Cookie的生存时间

cookie.setMaxAge(n);
//n>0,指定生存时间,单位是秒;n=0,立即失效;n<0,存储再内存中,浏览器关闭失效

3、cookie设置路径

通过Cookie的setPath方法可以设置路径,只有与当前路径匹配的cookie浏览器才会发送给服务器。

4、cookie的编码与解码

如果要在cookie中存储中文,就需要进行编码:使用URLEncoder.encode方法:
Cookie cookie = new Cookie(URLEncoder.encode("姓名", "UTF-8"),
URLEncoder.encode("小红", "UTF-8"));)

5、cookie的优缺点

五、session

session用于保持客户端与服务器的连接。session的原理是这样的:如果用户没有禁用cookie,当用户第一次访问服务器时,服务器会返回一个包含sessionid值的cookie给服务器,并将这个值保存在单独的域中,用户再次请求后,服务器会检查是否有对应的sessionid,如果有就使用,否则就新创建一个,如果用户禁用了cookie,就需要使用get方法的URL重写机制或使用POST方法提交隐藏表单的形式来实现。

1、获取session

HttpSession session = request.getSession();

2、获取、存储和删除Session中的值

使用HttpSession的setAttrobute(属性名,Object)方法
获取HttpSession的getAttribute(属性名)
删除HttpSession的removeAttribute(属性名)

3、Session超时

Session默认的有效时间是30分钟。从最后一次访问时开始计算。方法:session.setMaxInterval(n);单位是分钟

上一篇下一篇

猜你喜欢

热点阅读