JSP九个内置对象(四大作用域对象):
1.内置对象称为隐式对象 由tomcat容器创建 :
appliction:全局上下文对象
session:会话对象
request:请求对象
pageContext:当前页面对象
response:响应对象
config:配置文件对象
out:输出对象
execption:异常对象 pageContext.getExecption();
page:描述页面的对象
2.jsp内置对象的创建:
啊倒萨
3.内置对象
appliction:与servlet的servletContext同级 作用域:整个项目 生命周期:跟随项目
session:每个用户会创建一个session 会记录用户的唯一性 局限于整个会话中
request:服务器用于来获取请求的信息 作用域:一次请求之内
pageContext:当前页面对象 局限于当前页面
response:响应对象 服务器给客户端一些 响应信息(不是作用域对象)
config:配置文件对象 获取页面的配置信息 与servlet中servletConfig
out:输出对象 向网页写内容
与servlet中写的区别 getWrite()不带缓冲区直接写入页面
out带有缓冲区 需要先写入缓冲区 再写入页面中 out.flush()
execption:异常对象 pageContext.getExecption(); 异常捕获和收集
page:描述页面的对象
servlet的作用域对象:
request servletContext getSession()
4.四大作用域对象:域大小递减 设置相同的键名 获取的时最小的
appliction:全局上下文对象
session:会话对象 局限于当前会话
request:请求对象 在一次请求之内 能够获取作用域下的值
pageContext:当前页面对象 局限于当前页面γ
${requestScope.uname}获取指定作用域对象的值
狗皮膏药获取项目根路径
<%=pageContext.getServletContext.getContextPath%>
${pageContext.request.ContextPath}
JSP动态标签库:
由Java web提供 用于jsp的动态标签库 简化代码
<jsp:forword page="index.jsp"></jsp:forword>
引入其他界面的标签库:两个界面先编译 再合并 生成两个文件 效率相对低
<jsp:include page=“index.jsp”></jsp:include>
动态引入和静态引入:
<%@ page="index.jsp"%>
先合并 再编译 生成一个java文件 效率相对高
JSTL标签库:
1.导入jar包
2.引入标签库
3.使用
常见标签:核心标签库
<c:set var="name" value="张三"></c:set> 设置存入作用域
<c:out value="${uname}"></c:out> 输出
remove var="name"
判断
多选choose
循环:foreach
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <c:set var="score" value="50"> </c:set> <c:if test="${score>80}">牛逼</c:if> <c:choose> <c:when test="${score>90}">牛逼</c:when> <c:when test="${score>80}">还行</c:when> <c:when test="${score>70}">一般</c:when> <c:otherwise>下次一定</c:otherwise> </c:choose> <table border="1"> <tr> <td>编号</td> <td>姓名</td> </tr> <c:forEach items="${userlist}" var="user"> <tr> <td>${user.uid}</td> <td>${user.uanme}</td> </tr> </c:forEach> </table> </body> </html>
函数标签库:<%@prefix=别名uri="......../function">
会话:
客户端与浏览器之间进行多次请求和响应
开始:浏览器发起请求
结束:关闭浏览器
作用:记录用户的浏览记录,实现数据共享
会话技术:客户端Cookie 服务器Session
cookie存数据 保存在客户端
1.实例化cookie 键值
2.设置cookie的时间
3.将cookie添加到响应对象
4.获取cookie req.getcookies
JSP: <% Cookie[] cookies = request.getCookies(); for(Cookie cookie :cookies){ if("uname".equals(cookie.getName())){ String uname = cookie.getValue(); pageContext.setAttribute("uname",uname); }else if("upwd".equals(cookie.getName())){ String upwd = cookie.getValue(); pageContext.setAttribute("upwd",upwd); } } %> </head> <body> <form action="UserServlet" method="post"> <p>用户名<input type="text" value="${uname}" name="uname"></p> <p>密码<input type="text" value="${upwd}" name="upwd"></p> <input type="submit" value="提交"> </form> Servlet: protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String uname = req.getParameter("uname"); String upwd =req.getParameter("upwd"); if("admin".equals(uname) ){ Cookie cookie =new Cookie("uname",uname); cookie.setMaxAge(60*60); resp.addCookie(cookie); } if("123456".equals(upwd)){ Cookie cookie1 =new Cookie("upwd",upwd); cookie1.setMaxAge(60*60); resp.addCookie(cookie1); } }
特点:
以键值对来存储
有长度限制 不能超过4kb
存储在浏览器中
不安全
默认生命周期随着浏览器的关闭而销毁 一般需要设置时间 s为单位
减轻服务器压力
Session:四大作用域对象之一
存在服务器中 ,session的唯一标识是sessionid 默认保存时间30分钟 sessionid保存在cookie中
session请求的原理;
客户端第一次请求服务器 服务器创建sessioid 保存在cookie中
以后客户端请求服务器都会带着sessionid
如果浏览器关闭 cookie的数据不设置时间 默认浏览器关闭而消失
session的使用:
1.用户登陆成功 展示用户
session的特点:
1.存储再服务器中
2.session是第二大内置对象
3.默认时间30分钟
4.存储的方式也是以键值对的形式 存的值可以是任意类型
5.session存储没有长度限制
设置session的生命周期:
1.代码进行设置:(动态设置失效时间)
session.setMaxInactiveInterval();
2.web.xml中设置:(失效时间一般是固定的)
<session-config> <session-timeout>分钟为单位</session-timeout> </session-config>
清空session作用域下的值:
1.session.removeAttribute(); //移出单个
2.session.invalidate(); //让session失效
3.关闭浏览器 超时
Session与cookie的区别:
存储位置: 服务器 浏览器 客户端
存储长度限制: 没有长度限制 不超过4kb
安全性: 安全 重要 不安全 不重要
数据类型 任意类型 字符串类型
内置对象
对时间的处理
mysql: date:年月日
time:时分秒
datetime:年月日时分秒
java:包util() sql
时间格式化:new SimpleDateFormat("yyyy-MM-dd").format(new Date())
jstl:格式化标签库:
多表分页与模糊查询