掌握JSP必知的内置对象及其实际应用案例
jsp内置对象
1、 内置对象概念
由tomcat容器自动创建的对象,在jsp页面的代码段中直接使用的对象,称为内置对象。
2、 jsp的内置对象
out、request、response、session、application、pageContext、config、exception、page对象
常用的内置对象有5个
3、 常用内置对
1). out对象
1.)类型为`java.io.PrintWrite`
2.)常用方法
`out.print(........);`//向页面输出值,不换行
`out.println(....);`//向页面输出值,换行
(2) . request对象
1). 请求对象,主要用于获取用户通过url地址请求的参数值
2). request的类型为javax.servlet.http.HttpServletRequest
3). 常用方法
<1> 获取请求的参数
String xxx=request.getParameter(“参数名称”);
<2> 获取一组相同参数的值
String[] values=request.getParameterValues(“参数名称”);
<3> 设置请求字符数据的编码格式
request.setCaharacterEncoding(“utf-8”);
<4> 设置属性对象
request.setAttribute(“主键”,Object对象);
<5> 获取属性对象
Object obj=request.getAttribute(“主键”);
<6> 将请求转发给下一个目标页面(这种转发属于一次请求)
RequestDsipatcher dispatcher=request.getRequestDispatcher(“转发的目标路径”);
dispatcher.forward(request,response);//转发请求对象和响应对象到目标路径
(3) .response对象
1). 响应对象,主要用于对用户的请求做一个响应
2). response的类型为javax.servlet.http.HttpsServerletResponse类
3). 常用方法
<1>设置响应的字符编码
response.setCharacterEncoding("utf-8");
<2> 设置响应类型内容
response.setContentType("text\html");
<3> 重定向到指定的目标路径
response.setRedirect("目标路径");
(1).重定向属于二次请求
(2).重定向时,request.setAttribute("...");设置的属性值会被丢弃
<4> 设置客户端的cookie
response.addCookie("主键","cookie对象");
(4) .session对象
1). 属于作用域对象,主要用于记录用户的会话信息
2). 属于特定用户的会话对象,与客户端之间的关系是一对一,一个浏览器请求产生一个session对象
3). session对象的类型为javax.serverlet.http.HttpsSession类
4). 常用方法
<1> 设置对象到session属性中保存
session.setAttrubite("主键","object对象");
<2> 获取session属性对象
Object obj = session.getAttribute("主键");
注意:
(1)在当前web应用程序的任何页面或者类中都能获取session对象。
(2)session会话信息默认时长为30分钟
(3)当客户端浏览器关闭时,session会话对象记录的信息会被释放。
(4)session实在服务器端记录用户的会话信息,
<3> 终止session会话
session.avilibel();
名词解释:
(1)会话对象:
用户与服务器之间的交互信息,在服务器端被寄存的对象,称为会话对象,此对象又被称为上下文关系对象(上文指服务器,下文客户端(浏览器中包含的用户请求信息))
(2)常用的会话对象pageContext、request、session、application
(5)application对象
1).用于记录网站的全局共享信息
2).作用范围是整个网站,在网站的任何类和jsp页面都可以获取到application中记录的属性对象
3).生命周期为整个网站的生命周期。服务器关闭,application会自动销毁
4).application属于ServerletContext类对象。Tomcat负责创建
5).常用方法
(1)设置application对象属性
application.setAttribute("主键",Object对象);
(2)获取application中的对象的属性
Object obj=application.getAttribute(“主键”);
(3)移除属性对象
application.remove(“主键”);
练习1:
1.通过url地址传递参数。在index.jsp页面传递参数id的值到demo1.jsp。
http://...../xxx/demo1.jsp?id=1
(1)编写index.jsp
<a href="demo.jsp?id=1">demo.jsp页面传递参数值</a>
(2)编写demo.jsp
<%
//设置请求的字符编码格式
request.setCharacterEncoding(“utf-8”);//获取index.jsp页面传递的id值 String sid=request.getParameter("id"); out.println("传递的id值为:"+sid);
%>
2.用户通过login.jsp页面传递账号和密码到dologin.jsp页面进行验证,如果账号密码验证通过,则显示登陆成功并显示登录的账号和密码信息,否则显示登录失败:
(1)login.jsp与dologin.jsp页面联动,login.jsp页面表单来实现登录该功能
(2)表单form中参数 action=“dologin.jsp” 实现该联动功能
(3)dologin.jsp通过验证并显示
//设置请求字符的编码格式
request.setCharacterEncoding("utf-8");
//获取login.jsp页面表单元素的值,参数名称和表单元素名称一致
String sname = request.getParameter("sname");
String passwd = request.getParameter("passwd");
if (sname != null && !sname.equals("") && passwd != null && !passwd.equals("")){
out.println("登陆成功!"+"<br>");
out.println("账号:"+sname+"<br>");
out.println("密码:"+passwd+"<br>");
}
else{
out.println("登录失败!");
}
3.使用request对象转发属性值到目标页面
(1) 编写实体类Users.java
(2) 在dologin.jsp页面将请求成功的用户信息封装到Users对象中,并设置到请求的属性中
//设置请求字符编码格式
request.setCharacterEncoding("utf-8");
//获取login.jsp页面给表单元素的值
String sname = request.setParameter("sname");
String passwd = request.setParameter("passwd");
if (sname != null && !sname.equals("") && passwd != null && !passwd.equals("")){
//out.println("登陆成功!"+"<br>");
//out.println("账号:"+sname+"<br>");
//out.println("密码:"+passwd+"<br>");
//创建用户对象,设置用户对象us到request请求属性中
Users us = new Users(sname,passwd);
request.setAttribute("Users",us);
//获取转发对象
RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp");
//将请求和响应的对象转发给目标路径result.jsp
dispatcher.forward(request,response);
//下一步,准备在目标路径result.jsp页面中获取请求对象中封装的属性值Users对象
}
else{
out.println("登录失败!");
(3) 目标页面result.jsp页面的布局
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.util.*,com.bean"%>
<%@ page import="com.bean.Users" %>
<html>
<head>
<title>转发属性值到该界面</title> </head> <%
//设置请求字符编码
request.setCharacterEncoding("utf-8");
//获取request中获取的属性值
Object obj = request.getAttribute("Users");
if (obj == null){
out.println("用户未正确登录,请返回<a href='login.jsp'>登录</a>");//外面的引号和里面的引号
return;
}
else{
Users us = (Users) obj;
out.print("result页面的输出<br>");
out.print("账号:"+us.getUname());
out.print("<br>");
out.print("密码:"+us.getPasswd());
}
%>
<body>
</body>
</html>
详细代码:
1.index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="demo.jsp?id=1">demo.jsp页面传递参数值</a>
</body>
</html>
2.demo.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%
//设置请求的字符编码格式
request.setCharacterEncoding("utf-8");
//获取index.jsp页面传递的id值
String sid=request.getParameter("id");
out.println("传递的id值为:"+sid);
%>
<body>
</body>
</html>
3.login.jsp
<%--
Created by IntelliJ IDEA.
User: 顾念思成
Date: 2021/3/26
Time: 12:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
<style type="text/css">
#apDiv1 {
position: absolute;
width: 451px;
height: 208px;
z-index: 1;
left: 490px;
top: 313px;
}
</style>
</head>
<body>
<div id="apDiv1">
<form name="form1" method="post" action="dologin.jsp">
<table width="495" border="1">
<tr>
<td width="170"> </td>
</tr>
<tr>
<td>账 号:</td>
<td><label for="sname"></label>
<input type="text" name="sname" id="sname"></td>
</tr>
<tr>
<td>密 码:</td>
<td><label for="passwd"></label>
<input type="password" name="passwd" id="passwd"></td>
</tr>
<tr>
<td bgcolor="#66FFFF">
<input type="submit" align="center" name="button1" id="button1" value="登录">
<input type="reset" align="center" name="button2" id="button2" value="重置">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
4.dologin.jsp
<%--
Created by IntelliJ IDEA.
User: 顾念思成
Date: 2021/3/26
Time: 12:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" import="java.util.*" %>
<%@ page import="com.bean.Users" %>
<html>
<head>
<title>dologin</title>
</head>
<%
//设置请求字符的编码格式
request.setCharacterEncoding("utf-8");
//获取login.jsp页面表单元素的值,参数名称和表单元素名称一致
String sname = request.getParameter("sname");
String passwd = request.getParameter("passwd");
if (sname != null && !sname.equals("") && passwd != null && !passwd.equals("")){
//out.println("登陆成功!"+"<br>");
//out.println("账号:"+sname+"<br>");
//out.println("密码:"+passwd+"<br>");
//创建用户对象,设置用户对象us到request请求属性中
Users us = new Users(sname,passwd);
request.setAttribute("Users",us);
//获取转发对象
RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp");
//将请求和响应的对象转发给目标路径result.jsp
dispatcher.forward(request,response);
//下一步,准备在目标路径result.jsp页面中获取请求对象中封装的属性值Users对象
}
else{
out.println("登录失败!");
}
%>
<body>
</body>
</html>
5.Users.java
package com.bean;
import java.io.Serializable;
public class Users implements Serializable {
private String uname;
private String passwd;
public Users(String uname, String passwd) {
this.uname = uname;
this.passwd = passwd;
}
public Users() {
}
public void setUname(String uname) {
this.uname = uname;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getPasswd() {
return passwd;
}
public String getUname() {
return uname;
}
}
6.reslut.jsp
<%--
Created by IntelliJ IDEA.
User: 顾念思成
Date: 2021/3/26
Time: 15:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.util.*,com.bean"%>
<%@ page import="com.bean.Users" %>
>
<html>
<head>
<title>转发属性值到该界面</title>
</head>
<%
//设置请求字符编码
request.setCharacterEncoding("utf-8");
//获取request中获取的属性值
Object obj = request.getAttribute("Users");
if (obj == null){
out.println("用户未正确登录,请返回<a href='login.jsp'>登录</a>");//外面的引号和里面的引号
return;
}
else{
Users us = (Users) obj;
out.print("result页面的输出<br>");
out.print("账号:"+us.getUname());
out.print("<br>");
out.print("密码:"+us.getPasswd());
}
%>
<body>
</body>
</html>
练习2(购物车实例)【具体代码打包放资源里了】
1.add.jsp页面
2.list.jsp页面
练习3(session与application的使用)
用户登录成功以后,在session中保存用户的登录信息,记录当前用户登录的次数和网站被所有用户登录成功的总次数。
当前用户的登陆次数使用session进行记录,网站成功登录的总次数使用application进行记录。
Users类封装登录用户的信息
index.jsp:登陆页面
dologin.jsp:数据处理页面
loginok.jsp:登录成功
验证:不同浏览器登录 查看
1.Users类
package com.bean;
import java.io.Serializable;
public class Users implements Serializable {
private String uname ;
private String passwd;
public Users() {
}
public Users(String uname, String passwd) {
this.uname = uname;
this.passwd = passwd;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
2.index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="dologin.jsp" method="post">
账号:<input type="text" name="uname" value="账号"></br>
密码:<input type="password" name="passwd" value="密码"></br>
<input type="submit" name="sub" value="登录">
</form>
</body>
</html>
3.dologin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.bean.*"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<html>
<head>
<title>数据处理</title>
</head>
<%
//设置请求和响应的字符编码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取index.jsp页面的表单数据
String uname = request.getParameter("uname");
String passwd = request.getParameter("passwd");
//判断是否为空,,去除空格是否为空
if (uname!=null && !uname.trim().equals("") && passwd!=null && !passwd.trim().equals("")){
//创建Users对象
Users us = new Users(uname,passwd);
//把us设置到session属性中
session.setAttribute("user",us);
//从session中获取当前用户登录次数
Integer usercount = (Integer) session.getAttribute("ucount");
if (usercount==null){
usercount=0;
}
usercount++;
//设置当前用户的登录次数
session.setAttribute("ucount",usercount);
//从application中获取所有用户的登录次数
Integer tocount = (Integer)session.getAttribute("tcount");
if (tocount==null){
tocount=0;
}
tocount++;
//设置tocount到application中
application.setAttribute("tcount",tocount);
//获取所有用户列表对象
List<Users> lsus = (List<Users>) application.getAttribute("lsus");
if (lsus==null){
lsus = new ArrayList<>();
}
lsus.add(us);
//设置用户
application.setAttribute("lsus",lsus);
//页面跳转
response.sendRedirect("loginok.jsp");
return;
}else{
out.println("账号或密码错误,请重新<a href='index.jsp'>登录!</a>");
}
%>
<body>
</body>
</html>
4.loginok.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.bean.*"%>
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<html>
<head>
<title>登录成功计算次数</title>
</head>
<body>
<%
//设置请求和响应的字符编码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//从session中获取用户对象
Users us= (Users) session.getAttribute("user");
if (us==null){
out.println("您不是合法对象,请<a href='index.jsp'>登录!</a>");
return;
}
//从session中获取用户登录的次数
Integer ucount = (Integer) session.getAttribute("ucount");
Integer tcount = (Integer) application.getAttribute("tcount");
List<Users> lsus = (List<Users>) application.getAttribute("lsus");
%>
当前用户的登录次数为:<%=ucount%>次<br>
访问网站的所有用户登录次数为:<%=tcount%>次<br>
在线用户的信息为:
<%
for(Users ous:lsus){
out.print(ous.getUname()+"<br>");
}
%>
</body>
</html>
上一篇: 掌握JSP必知的内置对象及其用法
下一篇: 全面解析JSP中的九大内置对象的用法