实验9 内置对象application

一、实验目的

掌握怎样在JSP中使用内置对象application

二、实验项目内容(实验题目)

编写代码,掌握application的用法。【参考课本例题4-16 留言板 】

三、源代码以及执行结果截图:

example4_16.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<style>

#textStyle{

font-family:宋体; font-size:18;color:bule

}

</style>

<body id='textStyle'bgcolor=#ffccff>

<form action='example4_16_pane.jsp'method='post'>

留言者:<input type='text'name='peopleName'size=40/>

<br>标题:<input type='text'name='title'size=42/>

<br>留言:<br>

<textArea name='contens' id='textStyle' rows="10" cols=36 wrap='physical'>

</textArea>

<br><input type='submit'id='textStyle' value='提交留言'name='submit'/>

</form>

<a href='example4_16_delete.jsp'>删除留言</a>

<a href='example4_16_show.jsp'>查看留言</a>

</body></html>

example4_16_pane.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<%@ page import= "java.time.LocalDateTime" %>

<%@ page import= "java.util.Stack" %>

   

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body>

<%!

    Stack<Integer>maxAmount = null;

    synchronized void addMess(ServletContext application, StringBuffer mess){

        int index= -1;

        if(!maxAmount.empty()){

        index = maxAmount.pop();

        mess.insert(0,"No."+index+".");

        application.setAttribute(""+index, new String(mess));

        }

    }

%>

<%

    if(maxAmount == null){

        maxAmount = new Stack < Integer>();//最多可以有999条留言

        for(int i=99999; i>=1; i--){

            maxAmount.push(i);

        }

    }

    boolean isSave= true;

    request.setCharacterEncoding("utf-8");

    String peopleName = request.getParameter("peopleName");

    String title = request.getParameter("title");

    String contents = request.getParameter("contents");

    if(peopleName.length() == 0 || title.length() == 0 || contents.length() == 0){

        isSave = false;

        out. print("<h2>" + "请输人留言者、标题和内容");

    }

        if(isSave){

            LocalDateTime dateTime = LocalDateTime. now();

            StringBuffer message = new StringBuffer();

            message.append("留言者:" + peopleName+"#");

            message.append("< br>留言标题«" + title+"»#");

            message.append("<br>留言内容:<br>" + contents+"#");

            String timeFormat =

                    String.format("%tY%<tm%<td,%<tH:%<tM:%<tS",dateTime);

                    message.append("<br>留言时间<br>" + timeFormat+"#");

                if(maxAmount.empty()){

                    out.print("<h2>"+"留言板已满,无法再留言"+"</h2");

                }

                else{

                    addMess(application,message);

                }

                           

            }

        %>

<br><a href= "example4_16.jsp">返回留言页面</a><br>

<a href = "example4_16_show.jsp">查看留言板</a>

</body>

</html>

example4_16_show.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

    <%@ page import = "java.util.Enumeration" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor=cyan>

<p style="font-family:宋体; font-size:14; color:black" >

    <a href = "main.jsp" >返回留言页面</a><br><br>

    <%

    Enumeration<String>e= application.getAttributeNames();

    while(e.hasMoreElements()){

        String key= e.nextElement( );

        String regex = "[1-9][0-9]*";

        if (key.matches(regex)){

            String message = (String) application.getAttribute(key);

            String [] mess = message.split("#");

            out. print(mess[0]);

            out. print(mess[1]);

            out. print(mess[2]);

            out. print(mess[3]);

            out. print("<br>------<br>");

           

        }

    }

%>

</body>

</html>

example4_16_delete.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

    <%@ page import = "java.util.Enumeration" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor=pink>

<p style="font-family:宋体; font-size:18; color:blue" >

管理员删除留言

<form action = "" method=post>

输入密码:<input type="password" name="password" size=12/><br>

输入留言序号:<input type="text" name="index" size=6/>

<br><input type="submit" name="submit" value="删除"/>

</form>

<%

String password=request.getParameter("passwoed");

String index=request.getParameter("index");

    if(password==null)password="";

    if(index==null)index="";

    if(password.equals("123456")){

        Enumeration<String>e = application.getAttributeNames();

        while(e.hasMoreElements()){

        String key=e.nextElement();

            if(key.equals(index)){

                application.removeAttribute(key);

                out.print("<br>删除了第" + index+ "条留言<br>");

            }

        }

    }

%>

<a href= "example4_16.jsp">返回留言页面</a><br>

<a href = "example4_16_show.jsp">查看留言板</a>

</p></body></html>

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/536810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2024年认证杯】A题详细思路+数据(来源)+成品论文+模型代码

2024年认证杯A题 解题思路 ⭐⭐第一问题分析第二问题分析第三问题分析 数据与数据来源指标解释数据来源 参考论文python/ matlab 代码 解题思路 ⭐⭐ 这个题目要求我们围绕人造保暖纤维的保暖能力进行建模&#xff0c;并解决三个具体问题。 第一问题分析 第一问题要求建立一…

【C 数据结构】循环链表

文章目录 【 1. 基本原理 】【 2. 循环链表的创建 】2.1 循环链表结点设计2.2 循环单链表初始化 【 3. 循环链表的 插入 】【 4. 循环单链表的 删除操作 】【 5. 循环单链表的遍历 】【 6. 实例 - 循环链表的 增删查改 】【 7. 双向循环链表 】 【 1. 基本原理 】 对于单链表以…

【嵌入式学习】ARM day04.11

一、思维导图 二、练习 实现三个灯闪烁 汇编代码 .text .global _start _start: 使能GPIOE和F时钟LDR r0,0x50000A28LDR r1,[R0]ORR R1,R1,#(0X3<<4)STR R1,[R0]配置GPIOE和F的MODER寄存器LDR r0,0x50006000 GPIOELDR R1,0X50007000 G…

C语言.指针(5)

指针&#xff08;5&#xff09; 1.sizeof和strlen的对比1.1sizeof1.2strlen1.3sizeof和strlen的对比 2.数组和指针笔试题解析2.1一维数组2.2字符数组2.3二维数组 3.指针运算笔试题解析3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 1.sizeof和strlen的对比…

Qt栅格布局的示例

QGridLayout * layoutnew QGridLayout;for(int i0;i<10;i){for(int j0;j<6;j){QLabel *labelnew QLabel(this);label->setText(QString("%1行%2列").arg(i).arg(j));layout->addWidget(label,i,j);}}ui->widget->setLayout(layout); 这样写程序会崩…

NC65 查询默认密码(sql)

NC65 使用sql查询设置的默认密码&#xff08;如果系统设置有&#xff09;&#xff1a; select * from sm_user_defaultpwd

电商技术揭秘十三:云计算在电商中的应用场景

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

C++11 设计模式2. 简单工厂模式

简单工厂&#xff08;Simple Factory&#xff09;模式 我们从实际例子出发&#xff0c;来看在什么情况下&#xff0c;应用简单工厂模式。 还是以一个游戏举例 //策划&#xff1a;亡灵类怪物&#xff0c;元素类怪物&#xff0c;机械类怪物&#xff1a;都有生命值&#xff0…

「Java开发指南」如何利用MyEclipse启用Spring DSL?(一)

本教程将引导您通过启用Spring DSL和使用Service Spring DSL抽象来引导Spring和Spring代码生成项目&#xff0c;本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中&#xff0c;您将学习如何&#xff1a; 为Spring DSL初始化一个项目创建一个模型包创建一个服务和操…

实体抽取全解析:技术与实战

目录 一、前言二、实体抽取技术概览基于规则的实体抽取基于统计的实体抽取基于深度学习的实体抽取 三、实体抽取的发展历程早期的实体抽取方法基于规则和词典的方法基于特征的机器学习方法 深度学习时代的实体抽取从传统模型到神经网络序列标注模型的兴起预训练语言模型的革命 …

如何修改 MySQL 8.0 的密码

在 MySQL 8.0 中修改用户密码是数据库管理的一项基本任务。本教程将引导您完成这一过程&#xff0c;确保即使是初学者也能理解并成功执行。 介绍 MySQL 是最流行的关系数据库管理系统之一。作为数据库管理员或开发人员&#xff0c;您可能需要更改用户的密码来保证账户安全。本…

QT 信号与槽的简单使用

文章目录 1.通过Singloat and Slots Editor 添加信号与槽2. 通过拖动动态添加3.通过转到槽方式添加&#xff08;自动关联&#xff09;4. 自定义信号与槽&#xff08;connect)4.1 connect方式4.2 自定义信号 1.通过Singloat and Slots Editor 添加信号与槽 点添加&#xff0c;然…

突破像素限制,尽显照片细腻之美——Topaz Gigapixel AI for Mac/Win

在这个数字化的时代&#xff0c;我们都热爱用照片记录生活中的美好瞬间。然而&#xff0c;有时候我们会发现&#xff0c;由于各种原因&#xff0c;照片的像素可能无法满足我们的需求。这时候&#xff0c;Topaz Gigapixel AI for Mac/Win 这款强大的照片放大工具应运而生。 Top…

open c UF_MODL_create_simple_hole 识别放置平面 UF_MODL_ask_face_data

在BLOCK上创建一个简单孔 UF_FEATURE_SIGN sign UF_NULLSIGN;double block_orig[3] { -25.0,-25.0,0.0 };char* block_len[3] { "50","50","30" };tag_t blk_obj;UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);tag_t bo…

PSPICE、Multisim和Saber哪个更适合电路仿真?没想到是它

PSPICE、Multisim和Saber这三个软件都是非常流行的模拟电路仿真工具&#xff0c;它们各自有各自的优缺点&#xff0c;我简单讲一下&#xff1a; PSPICE&#xff1a; 优点&#xff1a; 精度高&#xff1a;PSPICE是专业的电路仿真软件&#xff0c;可以进行高精度的模拟电路仿真…

兮兮牧场养殖小游戏积分兑换互动商城引流模式

刚注册的新会员必须要进入牧场才能激活所有功能 一、获得动物的途径的方式 第一种是邀请好友注册获得&#xff0c;第二种是看广告获得 邀诘好友注册获得动物明细: 1、从兮兮牧场的邀请好友的链接去邀请好友才能获得&#xff0c;其他邀请码无效 2、注册赠送小鸡一只; 3、邀…

基于Springboot + vue + MySQL +Tomcat 社区医院管理服务系统 (含源码)

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统架构 &#x1f4da; 数据库设计 &#x1f4ac; 用户注册实体属性图 &#x1f4ac; 医生实体属性图 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 前台模块 用户注册 医生信息 &#x1f4ac; 后台功能模…

Docker部署SpringBoot+Vue前后端分离项目

文章目录 1. 安装Docker1. 1 卸载旧版Docker1.2 配置yum仓库1.3 安装Docker1.4 添加自启动配置1.5 配置阿里云镜像加速1.6 测试 2. 安装Nginx2.1 拉取镜像2.2 安装Nginx2.3 测试 3. 安装MySQL3.1 拉取镜像3.2 安装MySQL3.3 连接MySQL 4. 部署SpringBoot项目4.1 Maven打包4.2 编…

centos7安装 on-my-zsh

如下&#x1f447; yum install -y zsh chsh -s /bin/zsh yum install -y git sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 重启即可生效啦~

Windows搭建LightPicture图片管理网站结合内网穿透实现公网访问本地图片

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…