java 会话_java四大会话技术

未经作者允许,不得转载

第一cookie技术

常用方法:

new Cookie(),构造一个cookie

getName() ,获取cookie的名字

getValue () ,取到具体cookie的值

setMaxAge(), 设置cookie过期时间 单位为秒

getpath() ,取cookie路径

-需要注意的地方:

setMaxAge();当值为0时,即为删除本地cookie文件

还要注意cookie文件path路径必须一致

代码事例:

package myCookie;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/mycookie")

public class myCookieDemo extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// super.doGet(req, resp);

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// super.doPost(req, resp);

// 通用设置页面编码

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

resp.setCharacterEncoding("UTF-8");

// 控制文字输出流

PrintWriter writer = resp.getWriter();

Cookie[] cookies = req.getCookies();

if (cookies != null) {

writer.write("您上次访问的时间是:");

for (int i = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

if (cookie.getName().equals("lasttime")) {

String value = cookie.getValue();

Date date = new Date(Long.parseLong(value));

writer.println("cookie的路径"+cookie.getPath());

writer.println(date.toString());

}

}

} else {

writer.print("欢迎第一次访问本页面!");

}

//向系统增加cookie

Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");

//让session由内存写入到硬盘中 单位时间为 s秒 一天 60*60*24

cookie.setMaxAge(20);

resp.addCookie(cookie);

}

}

f6b7d10391e1adaff0b1467327823874.png

设置中文编码问题

-

//cookie中采用中文编码问题 Urlencoder处理

new Cookie("username", URLEncoder.encode("亮剑精神", "UTF-8"));

///解码

URLEncoder.encode("cookie[i].getValue()", "UTF-8");

地址重写

应用方向:在浏览器不允许使用cookie时,那么就可以采用这个办法进行地址的重写

重要方法:resp.encodeURL 之前必须初始化会话 getSession()

注:浏览器默认会使用含有cookie的办法使用 代码测试很多次数没有成功,必须关闭浏览器cookie设置

package Urlencode;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns="/myencode")

public class myEncode extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// super.doGet(req, resp);

doPost(req, resp);

}

@SuppressWarnings("deprecation")

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//super.doPost(req, resp);

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

resp.setCharacterEncoding("UTF-8");

PrintWriter writer = resp.getWriter();

//必须手动初始化回话

req.getSession();

String str = resp.encodeURL("/SessionTchCookies/index.jsp");

String str2 = resp.encodeURL("/SessionTchCookies/error.jsp");

String url = resp.encodeRedirectURL("/SessionTchCookies/index.jsp");

writer.print("购买
");

writer.print("结账");

writer.close();

}

}

16c6a4fd4e702ada39d358fb1079dd53.png

关于重写技术在很多框架都有实现

struts2 html:rewrite

类似的还有

jstl中 : 来进行地址重写

表单隐藏技术的实现

5.表单隐藏域

相关的表单控件...

...

会话的实现

充电类:httpservletsession . getSession() 取得会话对象

setAttribute(“属性名”,”属性值”) 根据属性名设值

getAttribute(“属性名”) 根据属性名 获取对应的值

removeAttribute(“属性名”) 根据属性名删除

getId():获取Session唯一的ID

invalidate():使HttpSession对象失效

setMaxInactiveInterval(时间):设置Session过期时间,单位是秒

getCreationTime():获取HttpSession对象创建时间

getLastAccessedTime():获取HttpSession最近一次请求时间

pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

??

首页

out.print("会话是isnew"+session.isNew());

out.print(session.getCreationTime());

/* 设置会话的过期时间 在控制的时候建设

方法1:可以在多个页面进行传值控制 set** get***

方法2:可以在设置一个相对时间比较长的值 然后在不同的页面进行时间属性的更新

*/

session.setMaxInactiveInterval(60);

//手动控制使session过期

session.invalidate();

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值