• 12.1


     今天学了

    创建处理文件

    保存用户信息
    用户在登录网站之后,在访问网页的过程中随时都可能使用用户信息。要想随时访问
    用户信息,需要把用户信息保存起来,如果不保存,用户输入的信息就只能在登录处理的
    时候使用,在其他地方不能使用。原因是 Web 应用采用的是无状态的请求/应答模式,客户
    端通过浏览器发送请求,服务器对客户端进行响应,但是不会保存客户端的信息。

     在JSP 中提供了几种保存信息的方式:可以保存在当前页面,但是只能在当前页面使用;
    可以保存在请求对象(每次请求都会创建这样一个对象)中,但是只能在这次请求中使用,请
    求对象是在服务器接收到请求后创建的,对客户端进行响应之后就没有了;可以保存在会
    话对象中,每个用户对应一个会话对象,当用户访问第一个网页的时候,服务器为这个用
    户创建一个会话对象,在用户的访问过程中一直有效,当用户关闭网页的时候,会话对象
    就删除了;还可以保存在应用对象中,这个对象是 Web 应用的所有用户共享的。
    这 4 个对象分别对应下面的 4 个内部对象:pageContext、request、session 和 application。
    这几个对象都可以直接使用,不用创建。
    根据这 4 个对象的作用范围,要保存个人信息,应该使用 session。如果使用 pageContext
    和 request,则作用范围太小;如果使用 application,则这个信息就会共享,产生冲突。
    要把信息保存到 session 中,可以使用标准标签库中的<c:set>标签。
    <c:set>标签的语法格式为:
    <c:set var="变量名" value="变量的值" scope="作用范围"/>
    该标签相当于创建了一个变量,var 指出变量的名字,value 指出变量的值,scope 指出
    变量的作用范围,也就是把变量存放在什么地方,取值可以是 page、request、session 和
    application。
    现在需要把用户名保存到 session 中,所以使用下面的代码:
    <c:set var="username" value="${param.username}" scope="session"/>
    在 session 中保存这个信息使用的名字是 username,值来自于用户的输入。修改后的代
    码如下:
    <%@ page contentType="textml;charset=GB2312"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <c:if test="${param.username=="zhangsan" && param.userpass=="wangwu"}">
     <c:set var="username" value="${param.username}" scope="session"/>
     登录成功!
    </c:if>
    <c:if test="${param.username!="zhangsan" || param.userpass!="wangwu"}">
     登录失败!
    </c:if>
    通常,存储在 page 中的信息在文件执行完毕后就会被系统自动释放;存储在 request
    对象中的信息在请求结束后就会被自动释放;而存在 session 中的信息,只有当用户离开网
    站或者 session 无效的时候才会被释放;存储在 application 中的信息,只有当网站的服务器
    关闭的时候才会被释放。如果用户的这些信息在后续的访问过程中已经没有用了,我们应
    该释放这些资源。
    JSP 提供了删除存储在这些作用范围内信息的标签<c:remove>,该标签的格式如下:
    <c:remove var="变量名"
     [scope="{page|request|session|application}"]
    />
    var 属性指出要删除的变量的名字,还可以使用 scope 属性指出要删除哪个作用范围内 

    的对象。
    假设要删除存储在 session 中的变量 result,可以使用下面的代码:
    <c:remove var="result"
    scope="session"

  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/dty602511/p/14173724.html
Copyright © 2020-2023  润新知