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

4种属性范围

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

page属性

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

<%@ page import="java.util.Date" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午1:02To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 设置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%>
</body>
</html>

request 属性

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

<%@ page import="java.util.Date" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午1:02To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%request.setAttribute("name", "ming");request.setAttribute("birthday", new Date());
%>
<jsp:forward page="request_scope_02.jsp"/>
</body>
</html>
<%@ page import="java.util.*" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午1:29To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%=(String)request.getAttribute("name")%>
<%=(Date)request.getAttribute("birthday")%>
</body>
</html>

session属性

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

cokice 属于客户端保存

<%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午3:07To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 设置session属性范围session.setAttribute("name", "ming");session.setAttribute("birthday", new Date());
%>
<!-- 超链接跳转 -->
<a href="session_scope_02.jsp">超级链接跳转</a>
</body>
</html>
<%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午3:07To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 取出session属性String username = (String)session.getAttribute("name");Date userbirthday = (Date)session.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>
</body>
</html>

application

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

<%@ page import="java.util.Date" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午10:17To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%application.setAttribute("name", "ming");application.setAttribute("birthday", new Date());
%>
<!-- 超级链接跳转 -->
<a href="./application_scope_02.jsp">超级链接获得属性</a>
</body>
</html>
<%@ page import="java.util.Date" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午10:20To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// application中获得属性String username = (String)application.getAttribute("name");Date userbirthday = (Date)application.getAttribute("birthday");
%>
<%=username%>
<%=userbirthday%>
</body>
</html>

request对象

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

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="request_demo01.jsp" method="post"><input type="text" name="info"><input type="submit" value="submit"></form>
</body>
</html>
<%--Created by IntelliJ IDEA.User: mingDate: 19-3-10Time: 下午11:54To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 接收参数String content = request.getParameter("info");
%>
<%=content%>
</body>
</html>

接收全部请求参数

用getParameterNames

显示全部头信息

使用getHeaderNames()

角色验证

额…依旧没啥东东
学过

response

定时跳转

定时跳转属于客户端跳转

操作cookie

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

session

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

cookie中保存的jsessionid为同样道理

登录 注销

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

<%--Created by IntelliJ IDEA.User: mingDate: 19-3-11Time: 下午9:17To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><form action="login.jsp" method="post">用户名<input type="text" name="uname"/>密码<input type="password" name="upass"/><input type="submit" value="登录"></form>
<%// 用户名 密码// 获得nameString name = request.getParameter("uname");// 获得passwordString 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");// 设置sessionsession.setAttribute("userid", name);%><h3>用户登录成功,两秒后将会跳转到欢迎页!</h3><h3>如果没有跳转,点击<a href="./welcome.jsp">这里</a></h3><%}else{%><h3>用户名密码错误</h3><%}}
%>
</body>
</html>
<%--Created by IntelliJ IDEA.User: mingDate: 19-3-11Time: 下午10:06To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 设置两秒跳转response.setHeader("refresh", "2;URL=login.jsp");// 清除sessionsession.invalidate();
%>
<h3>成功退出本系统,两秒跳转回首页</h3>
<h3>如果没有跳转,访问<a href="login.jsp">点我</a> </h3>
</body>
</html>
<%--Created by IntelliJ IDEA.User: mingDate: 19-3-11Time: 下午9:59To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 判断此用户的session是否设置过if(session.getAttribute("userid")!=null){%><h3>欢迎<%=session.getAttribute("userid")%></h3><h3>注销登录<a href="./logout.jsp">点我</a></h3><%}else{%><h3>非法访问</h3><%}
%>
</body>
</html>

判断新用户

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

用户操作时间

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

application对象

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

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="./input_content.jsp" method="post">输入文件名称 <input type="text" name="filename"/><br/>输入文件内容 <textarea name="filecontent" cols="30" rows="3"></textarea><input type="submit" value="保存"/><input type="reset" value="重置"/></form>
</body>
</html>
<%@ 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: mingDate: 19-3-11Time: 下午10:46To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 接收保存的文件名称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("\n");// 新建缓冲区StringBuffer stringBuffer = new StringBuffer();// 读取内容,保存进入缓冲区while(scanner.hasNext()){stringBuffer.append(scanner.next()).append("<br>");}// 关闭scanner.close();
%>
<%=stringBuffer%>
</body>
</html>

栗子 网站计数器 web 映射

站点的网站计数器的操作

<%@ page import="java.math.BigInteger" %>
<%@ page import="java.io.File" %>
<%@ page import="java.util.Scanner" %>
<%@ page import="java.io.FileInputStream" %>
<%@ page import="java.io.PrintStream" %>
<%@ page import="java.io.FileOutputStream" %>
<%@ page import="java.util.zip.InflaterOutputStream" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-12Time: 下午10:25To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%// 定义全局变量BigInteger count = null;
%>
<%!// 获取计数器public BigInteger load(File file){BigInteger count = null;try{// 若文件存在则读取if(file.exists()){Scanner scanner = null;// 获取到文件的输入流scanner = new Scanner(new FileInputStream(file));// 对计数器内容进行加1if(scanner.hasNext()){count = new BigInteger(scanner.next());}scanner.close();}else{count = new BigInteger("0");save(file, count);}}catch (Exception e){e.printStackTrace();}return count;}// 计数文件保存回文件public void save(File file, BigInteger count){try{PrintStream printStream = null;printStream = new PrintStream(new FileOutputStream(file));// 流中输入对象printStream.println(count);printStream.close();}catch (Exception e){e.printStackTrace();}}
%>
<%// 获取文件路径String fileName = this.getServletContext().getRealPath("/") + "count.txt";// 定义file对象File file = new File(fileName);// 进行加if(session.isNew()) {synchronized (this) {count = load(file);System.out.println(count);count = count.add(new BigInteger("1"));save(file, count);}}
%>
您是第<%=count%>
</body>
</html>

web映射

文件保存在WEB-INF文件夹下,永远无法访问,此时,需要修改/WEB-INF/web.xml文件即可,达到映射的目的
修改xml文件如下

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>he</servlet-name><jsp-file>/WEB-INF/he.jsp</jsp-file></servlet><servlet-mapping><servlet-name>he</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
</web-app>

直接更新,但不重启,发现不能加载.
此时.即Tomcat需要重写配置属性
此时访问
http://localhost:8080/hello
即可访问

config

config用于获得

一篇彻底搞懂jsp内置对象相关推荐

  1. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  2. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  3. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  4. JSP内置对象使用大全

    原文地址:http://blog.csdn.net/csuliky/article/details/2439424 JSP内置对象使用大全 1.request对象 客户端的请求信息被封装在reques ...

  5. JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域

    JSP内置对象.基本动作指令.常见编译指令及四大作用域 (一) JSP工作原理 当一个jsp页面第一次被访问的时候,jsp将执行以下三个步骤,之后的访问速度会因为class文件已经生成而大大提高,当j ...

  6. jsp内置对象+Servlet

    一,jsp内置对象 1. request:请求对象: request.getParameter();得到一个参数:获得提交表单中唯一的值: request.getParameterValues();得 ...

  7. [02] JSP内置对象

    1.内置对象的来历 JSP是由一些内置对象的,即不需要定义,也不需要我们主动创建,就可以直接使用的对象.当然,其对象名称也是固定的,无法修改,我们可以直接调用其相关方法. 在 [01] JSP的基本认 ...

  8. EL表达式,JSP内置对象

    基本语法格式 EL都是以 ${ 为起始.以} 为结尾的 ${ EL Expression} 示例: ${ "Helloworld" }  //输出字符串常量 ${ str }  / ...

  9. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

最新文章

  1. Linux 磁盘挂载
  2. vbs 连接oracle 数据库,VBS访问、操作oracle数据库
  3. [国嵌攻略][080][无名管道通讯]
  4. Java秒杀系统优化的工程要点
  5. 使用Cloud SQL的Google App Engine全文搜索
  6. 简约黑板擦表白特效网源码
  7. Chrome OS 70 发布:这是安卓的私生子吗?
  8. Android系统(46)--- 基本常识
  9. mac vscode debug安装调试moodle
  10. donet 微服务开发 学习-AOP框架基础
  11. iso硬盘安装 凤凰os_凤凰系统安装教程-凤凰虚拟机2.0(Phoenix OS)下载v3.6.1可重启版-西西软件下载...
  12. 10万行代码电商项目
  13. 联想拯救者y7000p加内存条_联想 拯救者Y7000P 怎么升级内存?
  14. 家用智能洗地机哪个牌子好、洗地机品牌排行榜前十名介绍
  15. 【Flink】搭建单机环境
  16. oracle11g断电后无法启动,电脑突然断电后无法启动
  17. 原神如何修改服务器,原神服务器选择攻略 新手选择官服还是渠道服好
  18. mybatis 的 insert
  19. php 拼音首字母大写字母,获取汉字拼音首字母大写
  20. pureMVC 之 系统框架

热门文章

  1. Kerberos学习(一)
  2. cookie中转注入
  3. MySQL中GTID的几个限制和解决方案(r13笔记第21天)
  4. 网络安全公司 Proficio 获1200万美元融资
  5. RocketMQ事务消费和顺序消费详解
  6. docker-1 初识docker
  7. Network | DNS
  8. 验证身份证合法性的js
  9. 转录组分析_转录组分析 | 使用Stringtie对数据进行下游处理
  10. Java集合系列---红黑树(基于HashMap 超详细!!!)