JAVA基础jsp之session与Cookie对比,application

news/2024/12/23 4:25:30/

目录

session与Cookie对比

session和Cookie跨页面,application跨用户。

一、application对象

二、application对象常用的方法

三、案例演示


session与Cookie对比

相同点:①都是用来保持用户状态的一种机制②都会过期(生存期限)
不同点:
    session                    Cookie
在服务器端保存用户信息            在客户端保存用户信息
session中保存的是Object类型        Cookie保存的是String类型
随会话的结束而将其存储的数据销毁        Cookie可以长期保存在客户端
保存重要的信息                保存不重要的用户信息 

session和Cookie跨页面,application跨用户。

application与session和Cookie的本意是一样的  都是用保存信息
最大的区别    保存的范围

一、application对象

    1.application对象实现用户间数据的共享,可存放全局变量。
    2.application开始于服务器的启动,终止于服务器的关闭。
    3.在用户的前后连接或不同用户之间的连接中,可以对application对象的统一属性进行操作。
    4.在任何地方对application对象属性的操作,都将影响到其它用户对此的访问
    5.服务器的启动和关闭决定了application对象的生命
    6.application对象是ServletContext类的实例

【总结】application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程中,application对象只有一个

-------request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内,session是在浏览器窗口的范围内。application则是在整个服务器运行过程中。


二、application对象常用的方法

    public void setAttribute(String name,Object value):使用指定名称将对象绑定此会话。

    public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null。

    Enumeration getAttributeNames():返回所有可用属性名的枚举

    String getServerInfo():返回jsp(servlet)引擎及版本号

三、案例演示

    3.1 application的方法演示-----建application.jsp页面

    <!-- 使用application对象setAttribute()保存信息 -->
    <%
        application.setAttribute("city","长沙市");//所在城市
        application.setAttribute("postCode","410000");//邮编号码
        application.setAttribute("email","15084961293@163.com");//邮箱
    %><br/>
    <!-- 使用application对象getAttribute()保存信息 -->
    所在城市:<%=application.getAttribute("city") %><br/>
    <!-- 使用application对象getAttributeNames()获取所有属性包括系统内置属性 -->
    application对象中的属性有:<% 
        Enumeration<String> attributes =  application.getAttributeNames();
        //遍历枚举
        while(attributes.hasMoreElements()){//如果存在下一条数据
            out.println(attributes.nextElement()+"<br/>");
        }
    %><br/>
    JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %>

    3.2 application实现统计网站访客

    <!-- 使用application实现统计网站访客 -->
    <%
        //判断application对象中有没有保存为count的参数
        //如果没有,在application对象中新增一个名为count的参数
        if(application.getAttribute("count")!=null){
            application.setAttribute("count",new Integer(0));
        }
        使用application对象读取count参数的值,再在原值基础上累加1 
        Integer count = (Integer)application.getAttribute("count");
        application.setAttribute("count", new Integer(count.intValue()+1));
    %>

    欢迎,您是第:<%=application.getAttribute("count") %>位访问者
    


四、JavaBeans的使用了内容:

    ①JavaBean简介
    ②JavaBean设计原则
    ③Jsp中如何使用Javabean
    ④<jsp:useBeans>
    ⑤<jsp:getProperty>
    ⑥<jsp:setProperty>
    ⑦Javabean的四个作用域范围


    4.1 JavaBean简介及设计原则
    【JavaBean简介】符合某种特定的规范的Java类,使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。

    【Javabean的设计原则】①公有类②无参的公有的构造方法③属性私有化④get和set方法封装
    --举例:Student
    
    public class Student{
        
        private String name;
        //无参构造方法
        public Student(){}
        
        public   void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }
    }
    

    4.2 什么是jsp动作
    jsp动作元素(action elements),动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内        容、与开始标签匹配的结束标签。

    4.3 关于JavaBean的jsp动作
    <jsp:useBean>、<jsp:getProperty>、<jsp:setProperty>


    4.4 在jsp页面中如何使用Javabeans
    ①使用普通的java类一样,创建javabean实例。--案例实现登录
        第一步:在src中编写com.entity包再编写User类,并遵循javabean设计原则
        第二步:在dologin.jsp页面中实例化Users类并设置值与login.jsp页面输入的信息比较,匹配成功登录admin.jsp


    ②在jsp页面中通常使用jsp动作标签使用javabean:useBean、getProperty、setProperty
        **<jsp:useBean>  在jsp页面中实例化或者在指定范围内使用javabean,语法如下:
        <jsp:useBean id = "标识符" class = "java类名" scope = "作用范围"/>
        第一步:在页面编写:
        <jsp:useBean id = "myUsers" class = "com.entity.Users" scope = "page">
            第二步:获取
        <%=myUsers.getUsername%>//null值,没有初始化

    ③<jsp:setProperty>  给已经实例化的Javabean对象的属性赋值,一共有四种形式。
    ** <jsp:setProperty name = "JavaBean实例名" property = "*" />(跟表单关联)
    ** <jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" />(跟表单关联)
    ** <jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" value= "BeanValue" />(手工设置)
    ** <jsp:setProperty name = "JavaBean实例名" property = "propertyName" param = "request对象中的参数名" />(跟request参数关联)

    4.5 案例演示
     <h1>系统登录</h1>
        <hr>
         <form name="loginForm" action="dologin.jsp?mypass=999999" method="post">
      <table>
        <tr>
          <td>用户名:</td>
          <td><input type="text" name="username" value=""/></td>
        </tr>
        <tr>
          <td>密码:</td>
          <td><input type="password" name="password" value=""/></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" value="登录"/></td>
          
        </tr>
      </table>
    </form>
--------------------------------------------------------------------------------------------------------------------------------
    <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
    <h1>setProperty动作元素</h1>
    <hr>
   <!--根据表单自动匹配所有的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="*"/>  
   --%>
   <!--根据表单匹配所有部分的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username"/>  
   --%>
   <!--根表单无关,通过手工赋值给属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username" value="lisi"/>
   <jsp:setProperty name="myUsers" property="password" value="888888"/>
   --%>
   <!--通过URL传参数给属性赋值 -->
   <jsp:setProperty name="myUsers" property="username"/>
   <jsp:setProperty name="myUsers" property="password" param="mypass"/>
   <!-- 使用传统的表达式方式来获取用户名和密码 -->
   <%--     
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br> 
   --%>
   <!-- 使用getProperty方式来获取用户名和密码 -->
      用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
      密码:<jsp:getProperty name="myUsers" property="password"/><br>


 


http://www.ppmy.cn/news/1455919.html

相关文章

【vim 学习系列文章 5.1 -- vim ctags 使用】

文章目录 背景 背景 在使用cscope生成文件cscope.files之后&#xff0c;如何将其当做ctags 命令的输入&#xff1f; 可以使用一系列的Shell命令来完成这个任务。具体来说&#xff0c;可以使用while read循环来按行读取cscope.files文件的内容&#xff0c;然后使用管道|和xarg…

PCB机打孔机程序(三)

///<-检测STOP/ OUT41; delay(80); //延时 OUT10; //开检测光标下总线 if(!IN5) //光标下检测 …

NFTScan | 04.22~04.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.04.22~ 2024.04.28 NFT Hot News 01/ ApeCoin DAO 发起「由 APE 代币支持的 NFT Launchpad」提案投票 4 月 22 日&#xff0c;ApeCoin DAO 社区发起「由 APE 代币支持的 NFT Launch…

本地部署Llama3 8b用Ollama和open-webui

1. 下载安装 ollama Ollama 启动后在右下角的状态栏里面有 2. 左下角搜索框输入 启用或关闭 Windows 功能 勾选 适用于Linux的Windows 子系统&#xff0c; 确定 并重启电脑。 3. 安装 Open-WebUI执行命令 需要安装Docker 笔者笔记本有GPU所以用下面的命令 docker run -d …

Android build.prop生成过程源码分析

Android的build.prop文件是在Android编译时刻收集的各种property【LCD density/语言/编译时间, etc.】&#xff1b;编译完成之后&#xff0c;文件生成在out/target/product/<board【OK1000】>/system/目录下&#xff1b;在Android运行时刻可以通过property_get()[c/c域] …

ue引擎游戏开发笔记(32)——为游戏添加新武器装备

1.需求分析&#xff1a; 游戏中角色不会只有一种武器&#xff0c;不同武器需要不同模型&#xff0c;甚至可能需要角色持握武器的不同位置&#xff0c;因此需要添加专门的武器类&#xff0c;方便武器后续更新&#xff0c;建立一个武器类。 2.操作实现&#xff1a; 1.在ue5中新建…

Vue入门到关门之Vue高级用法

一、在vue项目中使用ref属性 ref 属性是 Vue.js 中用于获取对 DOM 元素或组件实例的引用的属性。通过在普通标签上或组件上添加 ref 属性&#xff0c;我们可以在 JavaScript 代码中使用 this.$refs.xxx 来访问对应的 DOM 元素或组件实例。 放在普通标签上&#xff0c;通过 th…

Django REST framework(DRF)是什么?

Django REST framework&#xff08;DRF&#xff09;是什么&#xff1f; Django REST framework&#xff08;简称DRF&#xff09;是一个强大且灵活的工具包&#xff0c;用于构建Web API。它是基于Django&#xff08;一个高级Python Web框架&#xff09;构建的&#xff0c;提供了…