文章目录
- 时间的控件My97DatePicker的使用:
- 会话
- 会话之Cookie
- 会话之session
- 增加删除操作思路
时间的控件My97DatePicker的使用:
My97DatePicker:js +css 来做了一个时间的特效库
官网地址: http://www.my97.net/
使用的步骤:
1.下载好资料放入到web下面
2.在界面引入这个js ==>这个js WdatePicker.js 就是核心的js
3.<input id="d11" type="text" onClick="WdatePicker()"/> onclick="WdatePicker({dateFmt:'yyyy年MM月dd日 HH时mm分ss秒'} 使用各种格式来进行显示
会话
会话也就是客户端与服务器进行通信的过程,一次会话可以有多次请求
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
功能:在一次会话的范围内的多次请求间,共享数据
方式:
1. 客户端会话技术:Cookie
2. 服务器端会话技术:Session
会话之Cookie
Cookie : 就是用于把数据存到浏览器 或者叫客户端
作用: 1.把数据存到客户端,可以做一些智能推荐,还可以减轻服务器的压力 ,或者自动填写账号密码等
缺点:存在客户端:安全性低,所以一般都是存不是很重要的数据
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
Cookie 的查看:图
Cookie的使用步骤
1.实例化这个Cookie ==》 Cookie cookieName = new Cookie("uname","upwd"); ==>以字符串键值对的形式来进行存数据
2.把Cookie添加到响应对象发送Cookie对象 response.addCookie(cookieName);
3.获取Cookie拿到数据 Cookie[] cookies = request.getCookies(); ==>通过request来获取所有的cookie,然后遍历这个数组,以此来获取不同cookie的数据
4.getName() ==>来获取设置的键名 ==>getValue() ==>获取具体的值
//servlet端
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");//获取前端数据
String password = req.getParameter("password");
Cookie cookieName=new Cookie("name",name);//创建名为name的cookie对象并把前端的数据复制过来,作为这个cookie的值
cookieName.setMaxAge(60*60*24);//手动设置cookie的存活时间,如果不设置,默认是游览器关闭则会被销毁,单位是秒
Cookie cookiePassword=new Cookie("password",password);
cookiePassword.setMaxAge(60*60*24);
resp.addCookie(cookieName);//把cookie交给响应对象
resp.addCookie(cookiePassword);
}
前端:
<%//实现自动填充密码
String uname;
String pass;
Cookie[] cookies = request.getCookies();//前端获取servlet的response传递过来的所有cookie
if(cookies!=null&&cookies.length>0){//非空判断,遍历数组
for (Cookie c:cookies){
if ("name".equals(c.getName())){
uname=c.getValue();
request.setAttribute("na",uname);//将cookie的数据交给作用域
}else if("password".equals(c.getName())){
pass=c.getValue();
request.setAttribute("pa",pass);
}
}
}
%>
<form action="userServlet" method="get">
用户名:<input type="text" name="name" value='${na}'>el表达式自动获取值
密码:<input type="text" name="password" value='${pa}'>
<input type="submit" value="登录">
</form>
注意点:
1.Cookie 设置传递中文,需要编解码
编码:创建cookie时传递的键的值是中文时使用下面代码,RLEncoder.encode("我是要专递的值但是我是中文","UTF-8")
解码:request对象要把传过的来数据进行使用时,需要解析 URLDecoder.decode(c.getValue(),"UTF-8")
2不设置cookie保存的时候,默认会随着浏览器关闭,而销毁
设置 cookie的时间: setMaxAge(60*60); 以秒为单位 setComment("nddhh") 设置其描述
问题:
1. 一次可不可以发送多个cookie?
* 可以
* 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
2. cookie在浏览器中保存多长时间?
1. 默认情况下,当浏览器关闭后,Cookie数据被销毁
2. 手动设置销毁时间:
* setMaxAge(int seconds) 并指定cookie存活时间,时间到后,cookie文件自动失效
会话之session
session :存在于服务器,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中
注意:Session的实现是依赖于Cookie的
Session如何与浏览器进行关联?
JSESSIONID 就是与浏览器之间的关联,也是这一次会话的唯一的标识,这个sessionId是由服务器创建的,每次会话打开的时候,都会设置给Cookie
每次打开这个会话 sessionId 是否一样?
不一样
sessionId 默认保存的时间是30分钟 ==>只能会话关闭之后,这个sessionId就不能够找到==>原因:http请求协议是无状态,一次性的的连接
==>原来的sessionId 在回话关闭后再过30分钟之后,会自动回收 ==每次重新打开浏览器都会重新创建一个新的sessionId,原来的没有被回收,只是找不到
作用域和清空方式
session属于jsp的四大内置对象作用域之一
session.setAttribute("eee","kkk"); ==>存值
session.getAttribute("eee"); 取值
session.removeAttribute("eee"); 清空
把session的值清空的三种方式:
1.会话结束的时候
2. session.removeAttribute("eee");根据键来清除某一个值
3. session.invalidate(); 清空session里的所有的键与值
修改session 时间的两种方案:
session 默认的时间是:30分钟
1. session.setMaxInactiveInterval(60*60*24) 以秒为单位
2. 在web.xml进行配置
<session-config>
<session-timeout>60</session-timeout>
</session-config>
应用场景:
1.在首页显示某个用户的时候,都使用的是session来保存
2.必须先登录之后才能访问到首页
在Servlet获取session ==> HttpSession session = req.getSession();
HttpSession:来源于servlet端的req
1. 获取HttpSession对象:
HttpSession session = request.getSession();
2. 使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
//servlet端
String uname = req.getParameter("uname");
String upwd = req.getParameter("upwd");
if(uname !=null &&uname !=""){
//把对象存入session
HttpSession session = req.getSession();
session.setAttribute("uname",uname);
resp.sendRedirect("index1.jsp");
}
//前端代码,session九大内置对象之一
<%
if(session.getAttribute("name")==null){
response.sendRedirect("index.jsp");
}
%>
${name}
session和cookie共同点和不同点:
session 与Cookie 都是用于来存数据
session 存在服务器 ==>(比较重要的一些信息)
Cookie 存在浏览器(给用户提供一些方便,不是特别重要的信息)
增加删除操作思路
增加的思路:
1. 跳转到servlet==>传递一个标记 ==> 去增加的界面 =>去增加
2. servlet ==》
1.获取前端的数据
2.交给service来处理 ==>dao ==>执行增加语句 ==>添加
删除思路:
需要根据id来进行删除 ==》首页需要携带一个id参数 ==》通过el表达式可以获取到, =>还需要携带一个标记