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">&nbsp;</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>

马超登录页面火狐浏览器
换谷歌浏览器登录admin

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>

马超登录火狐浏览器
谷歌登录admin信息

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值