资讯专栏INFORMATION COLUMN

JSP 内置对象(一)

lordharrd / 440人阅读

摘要:提供了个内置对象该对象会自动进行实例化操作种属性范围只在一个保存属性跳转无效一次请求保存属性跳转依旧有效同一会话有效整个服务器上保存所有用户都可使用属性一个属性设置在本页上跳转后无法获得下午设置属性重中取出属性姓名生日属性服务

jsp提供了9个内置对象,该对象会自动进行实例化操作

4种属性范围

page 只在一个保存属性,跳转无效
request 一次请求保存属性,跳转依旧有效
session 同一会话有效
application 整个服务器上保存,所有用户都可使用

page属性

一个属性设置在本页上,跳转后无法获得

<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午1:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // 设置page属性
    pageContext.setAttribute("name", "ming");
    pageContext.setAttribute("birtday", new Date());
%>
<%
    // 重page中取出属性
    String username = (String)pageContext.getAttribute("name");
    Date userbirthday = (Date)pageContext.getAttribute("birtday");
%>
姓名 <%=username%>
生日 <%=userbirthday%>


request 属性

服务器跳转后,属性会被继续保存
浏览器的URL地址会发生改变

<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午1:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    request.setAttribute("name", "ming");
    request.setAttribute("birthday", new Date());
%>



<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午1:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title



<%=(String)request.getAttribute("name")%>
<%=(Date)request.getAttribute("birthday")%>


session属性

当一个属性设置以后,任何一个与设置页面相关的页面都可以取得
即,session,session属于服务器端保存.

cokice 属于客户端保存
<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午3:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>


    Title


<%
    // 设置session属性范围
    session.setAttribute("name", "ming");
    session.setAttribute("birthday", new Date());
%>

超级链接跳转


<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午3:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>


    Title


<%
    // 取出session属性
    String username = (String)session.getAttribute("name");
    Date userbirthday = (Date)session.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>


application

此为公共参数
此属性保存在服务器上

<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午10:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    application.setAttribute("name", "ming");
    application.setAttribute("birthday", new Date());
%>

超级链接获得属性


<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午10:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // application中获得属性
    String username = (String)application.getAttribute("name");
    Date userbirthday = (Date)application.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>


request对象

接收客户端发送的请求,请求的参数,头部信息.




    
    Title


    
<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-10
  Time: 下午11:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // 接收参数
    String content = request.getParameter("info");
%>
<%=content%>


接收全部请求参数

用getParameterNames

显示全部头信息

使用getHeaderNames()

角色验证

额...依旧没啥东东
学过

response 定时跳转

定时跳转属于客户端跳转

操作cookie

额..依旧没啥
在response中调用addCookie
需要注意的是会返回一个jsessionid

session

当服务器端使用session的时候,可以保存在redis中
会有一个不重复的编号,即session id

cookie中保存的jsessionid为同样道理
登录 注销

实现思路,设置session范围的属性,需要验证的页面进行判断session
即,保存用户的信息,使用session进行保存

<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-11
  Time: 下午9:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    
用户名 密码
<% // 用户名 密码 // 获得name String name = request.getParameter("uname"); // 获得password String password = request.getParameter("upass"); // 进行用户名密码比对 if(!(name==null||"".equals(name) || password == null || "".equals(password)) ){ if("admin".equals(name) && "admin".equals(password)){ // 跳转 response.setHeader("refresh", "2;URL=welcome.jsp"); // 设置session session.setAttribute("userid", name); %>

用户登录成功,两秒后将会跳转到欢迎页!

如果没有跳转,点击这里

<% }else{ %>

用户名密码错误

<% } } %>
<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-11
  Time: 下午10:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // 设置两秒跳转
    response.setHeader("refresh", "2;URL=login.jsp");
    // 清除session
    session.invalidate();
%>

成功退出本系统,两秒跳转回首页

如果没有跳转,访问点我

<%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-11
  Time: 下午9:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // 判断此用户的session是否设置过
    if(session.getAttribute("userid")!=null){
        %>
            

欢迎<%=session.getAttribute("userid")%>

注销登录点我

<% }else{ %>

非法访问

<% } %>
判断新用户

使用isnew的方式,
原理,在第一次访问的时候,给客户端设置cokkie,然后再次访问的时候,会带上cokkie中的jsessionid,用来判断是否为新用户

用户操作时间

使用getCreationTime获取第一个session创建的session时间,和最后一次操作的时间,用来判断秒数

application对象

用来获取serlet对象上下文 ServletContext表示整个容器的操作
使用表单输入要保存的文件名称和内容,直接在web项目的根目录的note文件夹中保存文件




    
    Title


    
输入文件名称
输入文件内容
<%@ page import="java.io.File" %>
<%@ page import="java.io.PrintStream" %>
<%@ page import="java.io.FileOutputStream" %>
<%@ page import="java.util.Scanner" %>
<%@ page import="java.io.FileInputStream" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-11
  Time: 下午10:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    // 接收保存的文件名称
    String name = request.getParameter("filename");
    // 接收文件内容
    String content = request.getParameter("filecontent");
    // 获得文件名称
    String fileName = this.getServletContext().getRealPath("/") + "note" + File.separator + name;
    // 获得文件对象
    File file = new File(fileName);
    // 用于判断父文件夹是否存在
    if(!file.getParentFile().exists()){
        // 创建文件夹
        file.getParentFile().mkdir();
    }
    // 定义打印流对象
    PrintStream printStream = null;
    // 创建一个到文件的输入流
    printStream = new PrintStream(new FileOutputStream(file));
    // 往流中输入内容
    printStream.println(content);
    // 关闭流
    printStream.close();
%>
<%
    // 通过Scanner获取流的输入
    Scanner scanner = new Scanner(new FileInputStream(file));
    // 设置读取分隔符
    scanner.useDelimiter("
");
    // 新建缓冲区
    StringBuffer stringBuffer = new StringBuffer();
    // 读取内容,保存进入缓冲区
    while(scanner.hasNext()){
        stringBuffer.append(scanner.next()).append("
"); } // 关闭 scanner.close(); %> <%=stringBuffer%>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73698.html

相关文章

  • JSP第二篇【内置对象的介绍、4种属性范围、应用场景】

    摘要:什么是内置对象引擎在调用对应的时,会传递或创建个与开发相关的对象供使用。九个内置对象对象对象的得到缓存大小得到未使用缓存的大小对象用于向浏览器输出数据,与之对应的是的对象。种属性范围到目前为止,我们已经学了种属性范围了。 什么是JSP内置对象 JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用。JSP技术的设计者为便于开...

    lookSomeone 评论0 收藏0
  • JSP面试题都在这里

    摘要:下面是我整理下来的知识点图上的知识点都可以在我其他的文章内找到相应内容。在中,尤其重要的是对象。 下面是我整理下来的JSP知识点: showImg(https://segmentfault.com/img/remote/1460000013229216?w=4962&h=2653); 图上的知识点都可以在我其他的文章内找到相应内容。 JSP常见面试题 jsp静态包含和动态包含的区别 j...

    gaosboy 评论0 收藏0
  • JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用${}括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的显示! 为什么要使用EL表达式? 为什么要使用EL表达式,我们先来看一下没有EL表达式是怎么样读取对象数据的吧! 在1.jsp中设置了Session属性 向session设置一个属性 在2...

    flyer_dev 评论0 收藏0
  • JSP 学习记录

    摘要:对象具有请求域,即完成客户端的请求之前,该对象一直有效。提交的数据量最多不超过。安全性较低但效率比方式高。适合提交数据量大,安全性高的用户信息。除非本次会话的所有页面都关闭后再重新访问某个或者,将会创建新的会话。 JSP 简介 全名为Java Server Pages,其根本是一个简化的Servlet设计,实现了在Java当中使用HTML标签。JSP是一种动态网页技术标准,也是Java...

    BearyChat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<