servlet
创建Servlet的三种方式
- 实现Servlet接口
- 继承GenericServlet
- 继承HttpServlet(常用)
Get与Post请求
- 传递参数:get方式提交的参数是拼接在请求路径后面,post方式提交的参数是保存在请求体中
- get提交方式参数的长度有限制,而post一般是没有限制。
- get提交方式可以缓存记录,一般get用于查询。post不能缓存数据,一般用于增删改
Servlet生命周期
创建、初始化、服务、销毁
- 在整个服务器运行期间,每个Servlet只会创建一次。
- 创建阶段执行一次。 初始化同样也是执行一次。
- 服务阶段 service方法 每当有请求发起,就会执行一次service方法。
- 销毁阶段只有当服务器停止,才会执行销毁方法。
作用域
- request(HttpServletRequest):一次请求有效
- session(HttpSession):关闭浏览器失效
- application(ServletContext):tomcat启动时创建,tomcat关闭时销毁,整个web的生命周期只有一个
域对象存值、取值的语法:
- 域对象.getAttribute(参数名); 取值
- 域对象.setAttribute(参数名,参数值); 存值
- 域对象.removeAttribute(参数名); 从指定域对象中移除指定的值
转发与重定向
req.getRequestDispatcher("跳转的路径").forward(req, resp);
resp.sendRedirect("跳转的路径");
- 发生位置不同,转发是服务器内部行为,重定向是浏览器行为
- 地址栏不同,转发地址栏没有变化,重定向地址栏有变化
- 响应次数不同,转发响应次数只有1次,重定向响应次数至少有2次
- 数据共享问题,转发可以保证request域的数据实现共享,重定向不行
- 跳转语句不同:req.getRequestDispatcher("跳转的路径").forward(req, resp);resp.sendRedirect("跳转的路径");
- 执行效率不同,转发效率更高,更快。
- url限制,服务器不能跳转服务器以外的资源,重定向可以。
Cookie,Session
Cookie语法:
- 创建cookie:Cookie cookie = new Cookie(key,value); key 和value 都必须是字符串
- 设置cookie存活时间 单位是秒:当存活时间>0 存活多少秒,当存活时间为0 表示立即销毁cookie,当存活时间为-1 表示cookie存活时间为浏览器结束为止(默认):cookie.setMaxAge();
- 添加cookie,响应给浏览器:response.addCookie(cookie);
- 获取Cookoie:Cookie[] cookies = request.getCookies();
- 获取Cookie的名字:cookie.getName();
- 获取Cookie的值:cookie.getValue();
Cookie的特点
- 保存位置 Cookie存活在客户端电脑上。
- 数据类型 Cookie在创建时 名字和值都必须是字符串类型,一般值是经过加密的
- 存活时间 Cookie默认存活时间是到浏览器结束位置
- 大小 Cookie最多只能存活4kb的字符串
Session语法:
- 把变量添加到Session作用域:session.setAttribute(key,value) key是String类型,value可以是任意类型
- 移除session作用域中的指定变量;session.removeAttribute(key);
- 手动销毁session:session.invalidate();
- 设置session存活时间:session.setMaxInactiveInterval(20);
- session的有效时长:默认session的有效时长是30分钟。
Session与Cookie的区别与关联
区别:
- 存储位置不同 :Cookie 存活在客户端浏览器,session存活在服务器
- 存储数据的大小不同:Cookie 最多可以存储4kb大小的字符串,session没有大小的限制
- 存储数据的类型不同:Cookie只能存储字符串的内容。session可以存储任意类型的内容
- 默认有效期不同:Cookie默认时长是到浏览器关闭,cookie销毁,Session默认时长是30分钟
关联:
- cookie和session本身有关联。session需要依赖cookie保证是否同一个会话。如果cookie中JsessionID相同的,那么说明是同一个会话,反之不是同一个会话。
- 因为每次打开浏览器都会生成一个新的会话,之前的会话并不是马上销毁。而是等待gc回收(默认是当垃圾量到一定程度,gc进行回收)。
异步请求($.ajax()与$.post()|$.get())
语法:
$.ajax({
url:"",
type:"",
dataType:"",
data:"",
async:true,
success:function (data){},
error:function (){}
});
参数的解释:
url: 请求的路径
type: 请求的方式, get/post
dataType: 从服务器回传的数据类型 text、xml、json
data: 从请求发起请求传递给服务器的参数 {参数名:参数值,参数名:参数值}
async 请求是否异步,类型是一个布尔值,异步(默认,true),同步(false),不建议写
success 成功回调函数,服务器成功处理完请求,响应就绪,可以从成功的回调函数获 取服务器的回传数据
error 失败回调函数,服务器出现bug,可以从error获取到错误数据
Jackson工具
异步的好处: 顺序无关,多个ajax并行执行,执行效率比较高
异步的弊端: 因为跟顺序无关,如果后面的ajax需要使用前面ajax的结果作为参数进行访问,就会出问题
同步的设置方法(按顺序进行):同步设置只能在 $.ajax()方法中设置,$.post、$.get中不能设置.async:false,就可以设置为同步.只要有一个ajax设置了同步,这个脚本中所有ajax都要设置同步.(效率低)