cookie_session_JSP_el_jstl_过滤器
Cookie:
cookie机制采用的是在客户端保持 HTTP 状态信息的方案 。
Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件。
一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传给WEB服务器。
底层的实现原理: WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。
//创建Cookie:
Cookie cookie=new Cookie(“name”,”zhangsan ”);
//将创建好的cookie 响应给客户浏览器
Response.addCookie(cookie);
//获取浏览器发送过来的cookie
Cookie[] cookies=request.getCookies();
//判断是否有cookie
If(cookies != null &&cookies.length>0 ){
For(Cookie c : cookies){
//获取cookie名
String name = c.getName();
//获取cookie值
String value = c.getValue();
}
}
Session:
session机制采用的是在服务器端保持 HTTP 状态信息的方案
//创建session
//如果当前已经创建session,则该请求返回一个session对象,如果没有创建,则自动创建一个
Http Session session = request.getSession();
//获取sessionid
Session.getId();
Session 的最大有效时间(tomcat服务器默认30分钟)
表单重复提交问题:
1)在表单中请求了sevlet,而servlet又通过请求转发的方式转发给另一个jsp页面,当我再次刷新的时候,地址栏还是原来请求servlet的地址栏,这样就出现了表单重复提交问题。 重定向不会出现表单重复提交问题
2)在响应页面未完成响应时,多次点了提交按钮
3)点击浏览器后退,再次点击提交
Jsp表达式:将结果输出到浏览器
本质是一个servlet,我们可以在HTML中去写java代码,java的服务端网页
<%= date %>
JSP表达式中的变量或表达式后面不能有分号(;)
JSP指令告诉引擎如何处理JSP页面中的其余部分
JSP指令的基本语法格式:
<%@ 指令 属性名="值" %>
JSP九大内置对象:
不需要声明,可以直接使用
1)Request:就是HttpServletRequest对象,代表客户端请求信息,主要用于接收http协议传输到服务器上的数据
2)response:HttpServletResponse对象,代表客户端响应,用不到
3)session:HttpSession对象,代表浏览器的一次会话,可以做域共享
4)application:ServletContext的对象,代表当前web应用
5)config:ServletConfig对象,代表当前Sevlet,可以读取servlet配置信息,用不到
6)out:JspWriter的对象,可以把结果输出到浏览器上
7)page:指的是当前jsp页面对应的servlet对象的引用,用不到
8)exception:异常对象,几乎不用
9)PageContext:页面的上下文,可以获取其他八个内置对象
四个域对象:
Application session request pageContext(域对象从大到小)
Application:最大的作用范围,范围限于当前web应用,只要在一处设置了,当前web应用下的其他servlet或jsp都可以访问
Session:范围限于一次会话,浏览器打开到关闭就是一次会话
Request:范围限于一次请求
PageContext:范围限于当前页面
EL表达式:
${ name }
他的意思是从某一范围根据name取值,如果没有指定,默认先从作用域最小的取,如果取到直接返回。
${sessionScope.name }
如果想明确从哪个域取,加上pageScope /requestScope/ sessionScope/ applicationScope
过滤器:
1.如何创建过滤器,实现Filter,FilterChain,FilterConfig其中之一,实现其接口的抽象方法init、doFliter、destroy,在web.xml中配置filter
2.过滤器:单实例的
3.当前服务器加载web应用的时候,创建实例并进行初始化,构造方法执行了一次
4.doFilter:每次调用都会执行
5.destroy:当服务器关闭或项目卸载时调用,只执行一次