首页 > 其他分享 >session的用法

session的用法

时间:2022-10-24 20:24:40浏览次数:53  
标签:resp req 用法 session import servlet javax

seession是一个为了保存用户状态而创建的一个特殊的对象

其本质上相当于Map,里面可以存放多个键值对,是以key-value进行存放的(key必须是一个字符串,value是一个对象)

该对象主要保持相应数据的唯一性(一般用于存储主键)

session的常用方法

1、获取session对象的方法------request.getSession();

2、存放相关属性的方法------session.setAttribute(String s,Object o);

3、从session中获取存放的属性方法------session.getAttribute(String s);

4、删除session属性的方法------session.removeAttribute(String s);

5、得到session所对应的id------session.getId();

6、使得session立即无效------session.invalidate();

7、设置session存活的最长时间------session.setMaxInactiveInterval(int i);

下面来一个Session实例帮助理解:

//mainServlet.java
package com.example.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/mainServlet")
public class mainServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");

        HttpSession session=req.getSession();
        Object username=session.getAttribute("username");
        PrintWriter pw=resp.getWriter();

        if(username!=null){
            pw.write("登录成功!");
        }else{
            pw.write("登录失败!");
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
<!--index.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>注册页面</title>
  </head>
  <body>
  <center>
    <form action="Session" method="post">
      <tr>
        <td>用户名:</td>
        <td><input type="text" name="username" placeholder="请输入用户名"></td>
      </tr>
      <p>
      <tr>
        <td>密码:</td>
        <td><input type="text" name="password" placeholder="请输入密码"></td>
      </tr>
      <p>
      <tr>
        <button type="submit" value="提交">提交</button>
      </tr>
    </form>
  </center>
//Session.java
package com.example.mapper;

import com.example.pojo.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/Session")
public class Session extends HttpServlet{
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username=req.getParameter("username");
        String password=req.getParameter("password");

        if(username.equals("tom")&&password.equals("tom123")){
            HttpSession session=req.getSession();

            session.setMaxInactiveInterval(60*60*24);
            session.setAttribute("username",username);
            resp.sendRedirect(req.getContextPath()+"/mainServlet");

        }else{
            resp.setContentType("text/html;charset=utf-8");

            PrintWriter pw=resp.getWriter();
            pw.write("账号或密码错误!");
            pw.write("<a href='"+req.getContextPath()+"/index.jsp'></a>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

session用来判断啥的还是很好用的!

与Cookie的比较

可以看出来,与Cookie相比较的话,Session更具有安全性,范围更广,可以在不同页面共享数据,使用更为方便;

但是有时在使用Session时,也需要Cookie的配合的,每一种语言都有自己的好处的嗷!

标签:resp,req,用法,session,import,servlet,javax
From: https://www.cnblogs.com/liuzijin/p/16820233.html

相关文章

  • maven生命周期及命令用法
    生命周期一个项目的构建build的过程通常包括:清理、编译、测试、打包、部署等Maven定义了三套生命周期:clean:处理项目的清理工作,主要命令是cleandefault:处理项......
  • Shell脚本中的while getopts用法,脚本中套用多个变量
    getpots是Shell命令行参数解析工具,旨在从ShellScript的命令行当中解析参数。getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后面跟着......
  • Lang.NEXT 2012相关Session
    2012年4.2-4日的Lang.NEXT2012是.NET(CLR,DLR以及其他平台)上语言及相关工具的设计开发者的盛会。会议的相关Session已经放出,绝对值得好好的学习,地址......
  • oracle中的(+)用法
    oracle中的(+)是一种特殊的用法,(+)表示外连接,并且总是放在非主表的一方。例如左外连接:selectA.a,B.afromALEFTJOINBONA.b=B.b;等价于selectA.a,B.afromA,Bwhe......
  • c枚举类型enum用法(java 枚举类型enum用法)
    C中的枚举类型有什么特点呢?我们利用C中的枚举类型定义了在扫描程序中的记号;为了避免涉及到特定实现语言(C)中表示记号的细节,就使用了正则表达式本身来表示记号如何使用java......
  • 函数用法
    平方函数——pow平方根函数——sqrt查找字符出现的次数——count万用类型——auto实现数组翻转——reverse取最大/最小值——max/min平方函数——pow函数:pow(x,......
  • vuex sessionStorage存储对象时会显示[object object]的问题
    VUE如果直接使用window.sessionStorage.setItem和window.sessionStorage.getItem来进行存取对象的话,不能正常使用该对象,并且在Application的Session Storage中会显示[obje......
  • 通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
    本专栏计划的文章数在150篇左右,到2022年10月6日为止,目前已经更新了56篇,专栏完成度为37.3%笔者这套​​零基础快速学习ABAP​​​从2021年4月10日写下第一篇文章以......
  • SAPGUI 里 F1 功能键的用法专题讲解试读版
    本专栏计划的文章数在150篇左右,到2022年10月6日为止,目前已经更新了56篇,专栏完成度为37.3%笔者这套​​零基础快速学习ABAP​​​从2021年4月10日写下第一篇文章以......
  • vue3 ref 循环多个时候用法
       ......