内容简介:jsp提供了9个内置对象,该对象会自动进行实例化操作page 只在一个保存属性,跳转无效request 一次请求保存属性,跳转依旧有效
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" %> <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: 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" %> <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: 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" %> <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: 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.*" %> <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: 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.*" %> <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: 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" %> <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: 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" %> <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: 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" %> <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: 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" %> <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> <% // 用户名 密码 // 获得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); %> <h3>用户登录成功,两秒后将会跳转到欢迎页!</h3> <h3>如果没有跳转,点击<a href="./welcome.jsp">这里</a></h3> <% }else{ %> <h3>用户名密码错误</h3> <% } } %> </body> </html>
<%-- 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" %> <html> <head> <title>Title</title> </head> <body> <% // 设置两秒跳转 response.setHeader("refresh", "2;URL=login.jsp"); // 清除session session.invalidate(); %> <h3>成功退出本系统,两秒跳转回首页</h3> <h3>如果没有跳转,访问<a href="login.jsp">点我</a> </h3> </body> </html>
<%-- 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" %> <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: 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" %> <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>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- javaScript常用内置对象
- Webform 内置对象 Session对象、Application全局对象,ViewState详细介绍
- JS中数据类型、内置对象、包装类型对象、typeof关系
- jsp 内置对象 登录 cookie + session
- 前端培训-初级阶段(13) - ECMAScript (内置对象、函数)
- ES6新特征总结与介绍——内置对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
RESTful Web Services Cookbook中文版
Subbu Allamaraju / 丁雪丰、常可 / 电子工业出版社 / 2011-9 / 59.00元
RESTful Web Services Cookbook中文版:REST最佳实践手册,ISBN:9787121143908,作者:(美)Subbu Allamaraju(沙布·阿拉马拉尤)著,丁雪丰,常可 译一起来看看 《RESTful Web Services Cookbook中文版》 这本书的介绍吧!