JSP

<!--
    1.什么是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>
<body>
<%
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = sdf.format(date);
%>
今天是:
<%=str%>
</body>
</html>

//输出九九乘法表

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <table border="1" width="70%" align="center">
        <%
            for (int i = 0; i < 10; i++) {
                %><tr><%
                for (int j = 0; j <=i; j++) {
                    %><td><%=i+"*"+j+"="+i*j%></td>&nbsp;&nbsp;<%
                }
                %></tr><%
                %><br/><%
            }
        %>
      </table>
</body>
</html>

<%–
JSP注释
–%>

JSP的九大内置对象
1.out对象:输出对象 负责将内容输出显示到页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        String str = "你好,中国!";
        out.print(str);
        out.println(str+"<br/>");//换行要加后面的<br/>,否则在页面中不显示
        out.print(str);
    %>
</body>
</html>

2.request对象:请求对象 获取浏览器发送过来的请求(最重要的对象)

<%@ page import="jdk.internal.util.xml.impl.Input" %>
<%@ page import="java.io.InputStream" %>
<%@ 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();//得到客户端的端口号
        out.print(serverName+"<br/>");
        out.print(serverPort+"<br/>");
        out.print(in+"<br/>");
        out.print(uri+"<br/>");
        out.print(remoteUser+"<br/>");
        out.print(ip+"<br/>");
        out.print(port+"<br/>");
    %>
</body>
</html>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Arrays" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Request对象</title>
</head>
<body>
    <%
        //注意:最重要的方法
        String value1 = request.getParameter("name");//获取表单提交的信息
        String value2 = request.getParameter("age");//字符串形式
        String value3 = request.getParameter("sex");//即对应名字的表单信息
        String[] value4 = request.getParameterValues("love");//得到请求参数的值 是数组形式的 一般用于复选框
        Map<String,String[]> map = request.getParameterMap();//该返回值记录着前端(如jsp页面)所提交请求中的请求参数和请求参数值的映射关系,这个返回值有个特别之处---只能读
        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>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>表单</title>
</head>
<body>
    <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>

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>对Request容器的操作</title>
</head>
<body>
c4
    <%
      request.setCharacterEncoding("utf-8");//只针对post请求的乱码处理
        request.setAttribute("key1","value1");//将value1放到request容器中 第一个参数一般为String类型 第二个参数为Object类型
        request.setAttribute("key2",27);
        request.setAttribute("key3",new Date());
        request.removeAttribute("key2");//移除
        Object obj1 = request.getAttribute("key1");//获取key1映射的值
        Object obj2 = request.getAttribute("key2");
        Object obj3 = request.getAttribute("key3");
        out.print(obj1+"<br/>");
        out.print(obj2+"<br/>");
        out.print(obj3+"<br/>");
        //不转发的话请求c5.jsp显示是全空,因为其生命周期结束
        //转发(学名)
        request.getRequestDispatcher("c5.jsp").forward(request,response);//跳转
        //请求的是c4.jsp,转发的是c5.jsp,显示的是c5.jsp
    %>
</body>
</html>
<%--
 request容器的生命周期:从发送请求开始创建,到作出响应结束
--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    c5
    <%
        Object obj1 = request.getAttribute("key1");//获取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对象:响应对象 服务器对浏览器作出的响应结果

<%@ page import="java.io.OutputStream" %>
<%@ 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>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    d2;
</body>
</html>

4.session对象:会话对象 服务器和浏览器之间的一次通话

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Session对象</title>
</head>
<body>
    <%
        String id = session.getId();//获得session编号 它是唯一的(一个浏览器的id,是唯一的)
        boolean b = session.isNew();//是第一次请求还是非第一次请求 测试它是否是一个新会话
        long maxInactiveInterval = session.getMaxInactiveInterval();//获取会话不活动情况下的最大存活时间,默认30分钟
        //session.setMaxInactiveInterval(1000);//设置它的最大存活时间 单位:秒 如果参数为-1,则永久存活
        //session.invalidate(); //销毁会话
        long creationTime = session.getCreationTime();//第一次请求的时间 1970年1.1到--请求时
        long lastAccessedTime = session.getLastAccessedTime();//最后一次请求的时间
        out.print(id+"<br/>");
        out.print(b+"<br/>");
        out.print(maxInactiveInterval+"<br/>");
        out.print(creationTime+"<br/>");
        out.print(lastAccessedTime+"<br/>");
    %>
</body>
</html>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>session容器</title>
</head>
<body>
    e2
    <%
        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/>");
        //request.getRequestDispatcher("e3.jsp").forward(request,response);
        response.sendRedirect("e3.jsp");
    %>
</body>
</html>
<%--
    session的生命周期:
    浏览器的第一次请求开始
    结束有如下情况:
    1.浏览器关闭了
    2.服务器关闭了
    3.手动调用了invalidate()
    4.最大存活时间到了
--%>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
e3
    <%
        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>

5.application对象:上下文对象 服务器的全局操作

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>application对象</title>
</head>
<body>
    <%
        //一个服务器一个application,是一个全局容器
        application.setAttribute("A","asd");
        application.setAttribute("B",77);
        application.setAttribute("C",new Date());
        Object object1 = application.getAttribute("A");
        Object object2 = application.getAttribute("B");
        Object object3 = application.getAttribute("C");
        out.print(object1);
        out.print(object2);
        out.print(object3);
    %>
</body>
</html>
<%--
    application的生命周期:
    服务器启动开始
    服务器关闭结束

    比如,在一个浏览器放的东西,在另一个浏览器也能拿到
--%>

6.page对象:当前对象

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>page对象</title>
</head>
<body>
    <%
        //page 等同于this  当前页面的对象
        //Object中有的方法它也有
    %>
</body>
</html>

7.exception对象:异常对象

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="h1.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        int i = 9/0;//如果这边出错,errorPage 跳转到另一个页面
    %>
</body>
</html>

<%@ 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.config对象:配置对象
9.pageContext对象:总控对象 控制其他对象
这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。

pageContext是PageContext类的实例,使用pageContext可以访问page、request、session、application范围的变量。

getAttribute(String name):取得page范围内的name属性。

setAttribute(String name,值,int scope):如果没有指定scope,该属性默认在page范围内,如:pageContext.setAttribute(“page”,“hello”);

使用pageContext将属性设置在request范围中pageContext.setAttribute(“request2”,“hello” , pageContext.REQUEST_SCOPE);

使用pageContext将属性设置在session范围中pageContext.setAttribute(“session2”,“hello” , pageContext.SESSION_SCOPE);

使用pageContext将属性设置在application范围中pageContext.setAttribute(“app2”,“hello” , pageContext.APPLICATION_SCOPE);

getAttribute(String name,int scope):取得指定范围内的name属性,其中scope可以是如下4个值:

PageContext.PAGE_SCOPE:对应于page范围。

PageContext.REQUEST_SCOPE:对应于request范围。

PageContext.SESSION_SCOPE:对应于session范围。

PageContext.APPLICATION_SCOPE:对应于application范围。

<%@ 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("B",2);
        //pageContext.removeAttribute("C",3);
        //pageContext.removeAttribute("D",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);
        out.print(obj1.toString()+"<br/>");
        out.print(obj2.toString()+"<br/>");
        out.print(obj3.toString()+"<br/>");
        out.print(obj4.toString()+"<br/>");
    %>
</body>
</html>

全域查找:
Object findAttribute(String name):依次在page、request、session、application范围查找名称为name的数据,如果找到就停止查找。这说明在这个范围内有相同名称的数据,那么page范围的优先级最高!

处理过程见下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值