jsp内置对象
对象:就是一个类的实例。
jsp内置对象:就是web容器给jsp提前实例化好了的对象,不需要人为创建,直接可以使用。
jsp常用的内置对象有:
out输入流
//登录失败,提示失败!
//jsp也是动态网页,所以输出网页上的标签也会被解析
out.print("<script>alert('登录失败!');location.href='login.jsp';</script>");
request请求对象
(1)内置方法有
①getParameter(“参数名”) 可以取到请求参数值
②setCharacterEncoding(“utf-8”) 可以设置请求中的中文参数乱码的问题
//使用request对象可以获取请求中的数据
//获取用户名
String uname=request.getParameter("username");
response响应
①sendRedirect(“页面”) 重定向到新的页面
//登录成功,response响应跳转到新的页面
//sendRedirect("home.jsp")重定向不能将数据发送到下一个页面上去
response.sendRedirect("home.jsp");
session 一级缓存
作用域:当前用户整个项目的一次会话
①setAttribute(“key”,“value”) 可以键值对存值
②getAttribute() 根据key取值 返回值为Object
③setMaxInactiveInterval(秒) 可以设置session的非活动时间
④invalidate() 销毁session(清空session对象数据)
//登录成功之后,直接将用户名存进session对象(session的作用域是整个项目)
session.setAttribute("user",uname);
session.setMaxInactiveInterval(60*10);//非活动时间设置
//因为数据 已经存在session中了,所以直接重定向页面就可以了
response.sendRedirect("home.jsp");
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注销</title>
</head>
<body>
<%
//清空session中的用户数据
session.invalidate();
//回到登录页面
response.sendRedirect("login.jsp");
%>
</body>
</html>
Application 全局会话
①所有用户共用的会话
②生命周期为:项目启动开始到项目结束
<!--记录访问过网页的人数-->
<%
//取出上一次的访问记录量
Integer count=(Integer) application.getAttribute("count");
//如果是第一个进入,count是不存在的,所以Integer默认值为null;
//int的默认值为0
//记录加+1
if(count==null){
count=1;
}else {
count++;
}
//将更新完的访问记录,重新访问application
application.setAttribute("count",count);
%>
<!--打印访问次数看效果-->
<h1>当前网站的访问次数为:<%=application.getAttribute("count")%></h1>
include指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
//include file 可以调用其它页面
<%@include file="ExamLogin.jsp"%>
<html>
<head>
<title></title>
</head>
<body></body>
<html>
JSP中常用的跳转页面方式有:
1、out.print(“使用脚本跳转”);
2、重定向跳转
response.sendRedirect(“页面”);
(1)不能将request和response的数据传递到下一个页面
(2)网页url地址栏会发生改变
3、转发
getRequestDispatcher(“home.jsp”).forward(request,response)
(1)可以将request和response的数据传递到下一个页面
(2)网页url地址栏不会发生改变
提问:重定向和转发的区别?