java四大会话技术

网友投稿 226 2022-12-01

java四大会话技术

new Cookie(),构造一个cookiegetName() ,获取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.javax.servlet.javax.servlet.javax.servlet.= "/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); }}

设置中文编码问题

//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.javax.servlet.javax.servlet.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(); }}

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

struts2​​​​ html:rewrite类似的还有​​​​ ​​​​ jstl中 :​​​​ 来进行地址重写

表单隐藏技术的实现

5.表单隐藏域

相关的表单控件......

会话的实现

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

setAttribute(“属性名”,”属性值”) 根据属性名设值 getAttribute(“属性名”) 根据属性名 获取对应的值 removeAttribute(“属性名”) 根据属性名删除

getId():获取Session唯一的ID invalidate():使HttpSession对象失效 setMaxInactiveInterval(时间):设置Session过期时间,单位是秒 getCreationTime():获取HttpSession对象创建时间 getLastAccessedTime():获取HttpSession最近一次请求时间

<%@ page language="Java" contentType="text/html; charset=UTF-8" 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(); %>

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java新手学习之IO流的简单使用
下一篇:JavaWeb中Filter增强使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~