JSP九大内置对象

jsp的简介:
JSP全称:Java Server Pages
将java代码嵌入到html页面中
1.1:指令部分:对当前页面设置的区域,一般在页面的第一行
1.2:小脚本:java代码嵌入的区域
1.3:表达式:输出区域  输出显示到页面中
<!--JSP的组成部分-->
<!--这个区域是JSP的指令部分-->
<%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat" pageEncoding="utf-8" %>
<!--这些是HTML静态内容-->
<html>

<head>
    <title>我的第一个JSP页面</title>
</head>

<!--这个是JSP的小脚本-->
<body>
<%
    Date date=new Date();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String now=sdf.format(date);
%>
今天是:<%=now %>
</body>
</html>

jsp的九大内置对象
out对象:输出对象  负责将内容输出显示到页面
request对象:请求对象    获取浏览器发送过来的请求
response对象:响应对象   服务器对浏览器做出的响应结果
session对象:会话对象    服务器和浏览器之间的一次通话
application对象:上下文对象   服务器的全局操作
page对象:当前对象
exception 对象:异常对象
config 对象:配置对象
pageContext:总控对象 控制其他对象
(1)out输出对象:主要将内容进行输出
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>out对象</title>
</head>
<body>
<%
//out对象主要将内容进行输出
    String str="我爱你中国";
    out.print(str);
    out.print(str+"<br/>");
    out.println(str);
    //print和println效果一样
%>
<%= str%>;
</body>
</html>
(2)request请求对象:获取浏览器发送过来的请求
a)request对象的第一组方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Request对象的第一组方法</title>
</head>
<body>
<%
    String servername=request.getServerName();//得到服务器的名字
    int serverport=request.getServerPort();//得到服务器的端口号
    InputStream in=request.getInputStream();//得到输入流对象
    String uri=request.getRequestURI();//得到所请求的路径
    String remoteuser=request.getRemoteUser();//得到当前用户名
    String ip=request.getRemoteAddr();//得到客户端的ip地址
    int port=request.getRemotePort();//得到客户端的端口号
%>
</body>
</html>
b)request对象的第二组方法(容器)
                   在网页上进行填写通过发送按钮发送到c3                        
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Request对象的第2组方法</title>
    </head>
    <body>
        <br>
            <form action="c3.jsp" method="get">
            name:<input type="text" name="name"/></br>
        age:<input type="number" name="age"/></br>
    sex:
    <input type="radio" name="sex" value="nan" checked/><input type="radio" name="sex" value="nv"/></br>
love:
    <input type="checkbox" name="love" value="zuqiu"/>足球
    <input type="checkbox" name="love" value="lanqiu"/>篮球
    <input type="checkbox" name="love" value="paiqiu"/>排球
    <input type="checkbox" name="love" value="wangqiu"/>网球
    <br/>
    <button>发送</button>
</form>
</body>
</html>
                                 c3
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%
            //注意:重要的3个方法
            String value1=request.getParameter("name");
            String value2=request.getParameter("age");
            String value3=request.getParameter("sex");//获取到客户端发送的请求

            String[] value4=request.getParameterValues("love");//得到请求参数对应的值得到的是String的数组
            Map<String,String[]>map=request.getParameterMap();//将所有的东西全部接收接受的是一个map数组
            out.print(value1+"</br>");
            out.print(value2+"</br>");
            out.print(value3+"</br>");
            out.print(Arrays.toString(value4)+"</br>");
            out.print(map.keySet()+"</br>");
            out.print(map.values()+"</br>");

        %>
    </body>
</html>
c)request对象的第三组方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
                                 c4
<%
    request.setCharacterEncoding("utf-8");//设置指定的编码集,只针对于post请求
    request.setAttribute("key1","values");//把东西放到requst容器里,第一个参数String类型,第二个object类型什么都可以
    request.setAttribute("key2",27);
    request.setAttribute("key3",new Date());//key值如果重名覆盖掉
    request.removeAttribute("key2");//删除
   Object obj1= request.getAttribute("key1");
    Object obj2= request.getAttribute("key2");
    Object obj3=request.getAttribute("key3");
    out.print(obj1+"<br/>");
    out.print(obj2+"<br/>");
    out.print(obj3+"<br/>");
    //转发
    request.getRequestDispatcher("c5.jsp").forward(request,response);//打出c5,一次请求
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
c5
<%
    //c4和c5是两个请求,不共享
    Object obj1= request.getAttribute("key1");
    Object obj2= request.getAttribute("key2");
    Object obj3=request.getAttribute("key3");
    out.print(obj1+"<br/>");
    out.print(obj2+"<br/>");
    out.print(obj3+"<br/>");
%>
</body>
</html>

(3)response对象

                             d1
//将d1重定向到d2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Response对象</title>
</head>
<body>
d1
<%
    response.setCharacterEncoding("utf-8");//响应编码集,服务器到浏览器端
    response.setContentType("text/html:charset-UTF-8");
    OutputStream os=response.getOutputStream();//输出流
    //重定向
    response.sendRedirect("d2.jsp");
%>
</body>
</html>
                                    d2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
d2
</body>
</html>

转发和重定向的区别
在这里插入图片描述在这里插入图片描述

(3)response响应对象 服务器对浏览器做出的响应结果
                                    response1
<%@ page import="org.omg.CORBA.portable.OutputStream" %>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setAttribute("A",23);
    request.setAttribute("B",15);
    request.setAttribute("C",99);
%>
<%
response.setCharacterEncoding("utf-8");//定义编码集
response.setContentType("text/html;charset=UTF-8");
 java.io.OutputStream os=response.getOutputStream();//获得输出流
response.sendRedirect("response2.jsp");//重定向
%>
</body>
</html>
                                 response2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Object v1=request.getAttribute("A");
    Object v2=request.getAttribute("B");
    Object v3=request.getAttribute("C");
    Object v4=request.getAttribute("D");
    out.print(v1+"<br/>");
    out.print(v2);
    out.print(v3);
    out.print(v4);
%>
</body>
</html>

转发和重定向

直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。

**间接转发方式(Redirect)**实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

举个通俗的例子:

直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;

间接转发就相当于:“A找B借钱,B说没有,让A去找C借”。

img

img

(4)session会话对象 服务器和浏览器之间的一次通话
a)session的常用方法
                                 session1
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>session对象</title>
</head>
<body>
<%
//保存会话信息 session服务器和浏览器之间的一次通话
String id=session.getId();//session编号,唯一
boolean b=session.isNew();//判断是否是新会话
 long maxinactiveinterval= session.getMaxInactiveInterval();//获取会话不活动情况下的最大存活时间,默认是30min
 /* session.setMaxInactiveInterval(-1);*///设置最大存活时间 -1永久存活
    /*session.invalidate();*///销毁会话
long creationtime=session.getCreationTime();//第一次请求的时间
long lastaccesstime=session.getLastAccessedTime();//最后一次请求的时间

%>
</body>
</html>
                            session2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>session的第二组方法--容器</title>
</head>
<body>
<%
    session.setAttribute("A","h");
    session.setAttribute("B",55);
    session.setAttribute("C",new Date());
    session.removeAttribute("B");
    Object v1=session.getAttribute("A");
    Object v2=session.getAttribute("B");
    Object v3=session.getAttribute("C");
    out.print(v1+"<br/>");
    out.print(v2+"<br/>");
    out.print(v3+"<br/>");

%>
</body>
</html>
                               session3
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
Object v1=session.getAttribute("A");
Object v2=session.getAttribute("B");
Object v3=session.getAttribute("C");
out.print(v1+"<br/>");
out.print(v2+"<br/>");
out.print(v3+"<br/>");
request.getRequestDispatcher("session2.jsp").forward(request,response);//可以输出数据,因为session容器的存活时间长
%>
</body>
</html>

b)session的生命周期:

浏览器的第一次请求开始
结束有如下情况:
1、浏览器关闭
2、服务器关闭
3、手动调用了invalidate()
4、时间到了

(5)application上下文对象 服务器的全局操作
                                 application1
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>application对象</title>
</head>
<body>

<%
   //服务器打开时创建,关闭时销毁
    //一个服务器一个application,是一个全局容器
   
    application.setAttribute("A",12);
    application.setAttribute("B",13);
    application.setAttribute("C",new Date());
    application.removeAttribute("B");
    Object v1=application.getAttribute("A");
    Object v2=application.getAttribute("B");
    Object v3=application.getAttribute("C");
    out.print(v1+"<br/>");
    out.print(v2+"<br/>");
    out.print(v3+"<br/>");
%>
</body>
</html>
                                  application2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Object v1=application.getAttribute("A");
    Object v2=application.getAttribute("B");
    Object v3=application.getAttribute("C");
    out.print(v1+"<br/>");
    out.print(v2+"<br/>");
    out.print(v3+"<br/>");
    request.getRequestDispatcher("application.jsp").forward(request,response);//可以输出数据,因为application容器的存活时间长

%>
</body>
</html>
(6)page当前对象

page等同于this object的方法都可以使用

(7)exception异常对象
                                       exception1
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="exception2.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
   int a=9/0;
%>
</body>
</html>
                                     exception2
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String str=exception.getMessage();
    out.print(str);
%>
</body>
</html>
(8)pageContext总控对象,控制其他对象
<%@ page import="java.io.PrintWriter" %>
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>pageContext对象</title>
</head>
<body>
<%
    HttpServletRequest req = pageContext.getRequest();
    HttpServletResponse resp = pageContext.getResponse();
    PrintWriter o = resp.getWriter();
    HttpSession sess = req.getSession();
    Object obj = pageContext.getPage();
    pageContext.setAttribute("A","page",1);
    pageContext.setAttribute("A","request",2);
    pageContext.setAttribute("A","session",3);
    pageContext.setAttribute("A","application",4);
    //pageContext.removeAttribute("A",1);
    //pageContext.removeAttribute("A",2);
    //pageContext.removeAttribute("A",3);
    //pageContext.removeAttribute("A",4);
    Object obj1 = pageContext.getAttribute("A",1);
    Object obj2 = pageContext.getAttribute("A",2);
    Object obj3 = pageContext.getAttribute("A",3);
    Object obj4 = pageContext.getAttribute("A",4);
%>
</body>
</html>
jsp内置对象的比较
名称类型中文说明注意
OutPrintWrite输出对象通过流输出显示到页面中
RequestServletRequest|HttpServletRequest请求对象服务器获取浏览器的请求信息Request的生命周期 Request的容器 转发和重定向
ResponseServletRequest|HttpServletRequest响应对象服务器对浏览器的响应响应格式
SessionHttpSession会话对象服务器和浏览器之间的一次通话Session的生命周期 Session的容器 什么时候Sesssion结束
ApplicationServletContext全局对象服务器全局信息Application容器是共享的
PageObject当前对象当前页面对象
ExceptionRunnable异常对象页面出现异常时出现只有isErrorPage="true"时才能使用
PageContextPageContext控制其他对象,其他容器1,2,3,4四大容器的编号 page容器只能通过pageContext操作,它的生命周期是当前页面
jsp四大容器的生命周期
名称生命周期
Request从发送请求开始创建,到做出响应结束
Session浏览器的第一次请求开始 结束有如下情况: 1、浏览器关闭 2、服务器关闭 3、手动调用了invalidate() 4、时间到了
Application服务器启动开始 服务器关闭结束
Page它的生命周期是当前页面
标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值