内容简介: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新特征总结与介绍——内置对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Don't Make Me Think
Steve Krug / New Riders Press / 18 August, 2005 / $35.00
Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are ......一起来看看 《Don't Make Me Think》 这本书的介绍吧!