当前位置: 首页 > news >正文

实验15 MVC

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

编写代码,掌握MVC的用法。

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

inputMenu.jsp:

<%@ page contentType="text/html" %>

<%@ page pageEncoding = "utf-8" %>

<jsp:useBean id="menu" class ="save.data.MenuBean" scope="session"/>

<style>

   #textStyle{

      font-family:宋体;font-size:36;color:blue

   }

</style>

<HTML><body bgcolor=#ffccff>

<form action="addMenu" id= textStyle method=post>

输入餐单(每次输入一个消费项目)<br>

名称:<input type=text name='foodName' id =textStyle value ='剁椒鱼头' size = 8 />

价格:<input type=text name='price' id =textStyle value ='26.9' size = 8 />

<br><input type=submit id=textStyle value="添加到餐单">

</form>

</body></HTML>

showMenu.jsp:

<%@ page contentType="text/html" %>

<%@ page pageEncoding = "utf-8" %>

<jsp:useBean id="menu" class ="save.data.MenuBean" scope="session"/>

<style>

   #tom{

      font-family:宋体;font-size:26;color:blue

   }

</style>

<HTML><body bgcolor=pink>

<table border=1>

   <tr><th id=tom>序号</th><th id=tom>食物名称</th><th id=tom>价格</th>

<%  request.setCharacterEncoding("utf-8");

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

    if(index!=null){

       menu.removeFood(Integer.parseInt(index));

    }

    for(int i=0;i<menu.size();i++){

        out.print("<tr>");

        out.print("<td id=tom>"+(i+1)+"</td>");

        out.print("<td id=tom>"+menu.getFoodName(i)+"</td>");

        out.print("<td id=tom>"+menu.getPrice(i)+"</td>");

        out.print("<td ><form action ="+"showMenu.jsp"+" method=post>");

        out.print("<input type = hidden name = 删除 value = "+i+" />");

        out.print("<input type = submit  value = 删除该食物 />");

        out.print("</form></td>");

        out.print("</tr>");

    }

  

%> </table>

<p id = tom>

餐单总额(共有<%=menu.size()%>道食物): 

<jsp:getProperty name="menu" property="totalPrice" /><br>

点餐时间:

<jsp:getProperty  name="menu" property="time" /></p>

<a id =tom href="inputMenu.jsp">继续点餐</a>

</body></HTML>

web.xml:

<?xml version="1.0" encoding="utf-8"?>

<web-app>

    <!--  以下是web.xml文件新添加的内容 -->

    <servlet>

        <servlet-name>addMenu</servlet-name>

        <servlet-class>handle.data.HandleMenu_Servlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>addMenu</servlet-name>

        <url-pattern>/addMenu</url-pattern>

    </servlet-mapping>

</web-app>

Food:

package save.data;

public class Food implements Comparable<Food>{

    String foodName ;  

    double price;     

    public void setFoodName(String name){

        foodName = name;

    }

    public String getFoodName(){

        return foodName;

    }

    public void setPrice(double d){

        price = d;

    }

    public double getPrice(){

        return price;

    }

    public int compareTo(Food food){

        return (int)(food.getPrice()*1000-price*1000);

    }

}

MenuBean:

package save.data;

import java.util.ArrayList;

import java.util.Collections;

public class MenuBean {

    String time ;

    String totalPrice;

    ArrayList<Food> foodList;

    public MenuBean(){

        foodList = new ArrayList<Food>();

    }

    public void addFood(Food food){

        foodList.add(food);

        Collections.sort(foodList);

    }

    public void removeFood(int index){

        if(index>=0){

           foodList.remove(index);

           Collections.sort(foodList);

        }

    }

    public String getFoodName(int index) {

        return foodList.get(index).getFoodName();

    }

    public double getPrice(int index) {  

        return foodList.get(index).getPrice();

    }

    public int size() {

        return foodList.size();

    }

    public void setTime(String time){

        this.time = time

    }

    public String getTime(){

        return time

    }

    public String getTotalPrice(){

        double sum = 0;

        for(Food food:foodList){

          sum += food.getPrice();

        }

        totalPrice = String.format("%.2f",sum);

        return totalPrice;

    }

}

HandleMenu_Servlet:

package handle.data;

import save.data.Food;

import save.data.MenuBean;

import java.util.*;

import java.io.*;

import java.time.LocalTime;

import javax.servlet.*;

import javax.servlet.http.*;

public class HandleMenu_Servlet extends HttpServlet{

   public void init(ServletConfig config) throws ServletException{

       super.init(config);

   }

   public void service(HttpServletRequest request,HttpServletResponse response)

                       throws ServletException,IOException{

       request.setCharacterEncoding("utf-8");

       MenuBean menu  = null;

       HttpSession session=request.getSession(true);

       menu = (MenuBean)session.getAttribute("menu");

       if(menu == null ){

           menu = new MenuBean();

           session.setAttribute("menu",menu);

       }

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

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

       Food food = new Food();

       if(foodName.length()==0||price.length()==0){

            response.sendRedirect("inputMenu.jsp");

            return;

       }

       food.setFoodName(foodName);

       food.setPrice(Double.parseDouble(price));

       LocalTime dateTime = LocalTime.now(); 

       String str = dateTime.toString();

       String time =str.substring(0,str.lastIndexOf("."));

       menu.setTime(time);

       menu.addFood(food);

       response.sendRedirect("showMenu.jsp");

   }

}

运行结果图:

点餐:

增加菜单:

删除:

相关文章:

实验15 MVC

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握MVC的用法。 三、源代码以及执行结果截图&#xff1a; inputMenu.jsp&#xff1a; <% page contentType"text/html" %> <% page pageEncoding "utf-8" %> &…...

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构&#xff1a;方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…...

上位机图像处理和嵌入式模块部署(树莓派4b镜像烧录经验总结)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 陆陆续续也烧录了好多次树莓派的镜像了&#xff0c;这里面有的时候很快&#xff0c;有的时候很慢。特别是烧录慢的时候&#xff0c;也不知道是自己…...

简单数据加解密,JS和JAVA同时实现

前端Vue调用Java后端接口中的数据进行加密&#xff0c;以避免敏感数据泄露。 现在实现一个高性能加密方法&#xff0c;用来对数据进行加密后传输。算法包括JS的加密和解密方法&#xff0c;也包括Java的加密解密方法。 可以在前端加密&#xff0c;后端解密。也可以在后端加密&…...

Android Framework中PackageManagerService的深度剖析

摘要 Android操作系统的核心服务之一——PackageManagerService(PMS)&#xff0c;扮演着至关重要的角色&#xff0c;负责维护系统中所有应用程序的生命周期管理。本文旨在全面探讨PMS的功能特性、工作流程、实际应用场景&#xff0c;并对其进行优劣分析&#xff0c;以期为开发者…...

(AI Web、ChatGPT Native、Ai Loading、AI Tools、知豆AI)

目录 1、AI Web 2、ChatGPT Native 3、Ai Loading 4、AI Tools 5、知豆AI 1、AI Web...

VBA 批量处理Excel文件

目录 一. 批量创建Excel文件1.1 VBA的方式1.2 Powershell方式 二. 批量删除文件三. 批量重命名文件四. 合并多个Excel数据到一个Excel文件中 一. 批量创建Excel文件 1.1 VBA的方式 Sub CreateFiles()Dim strPath As String, strFileName As StringDim i As Long, rDim pathSe…...

PG实例连接访问控制

实例访问控制可以控制来自于不同主机&#xff0c;不同用户是否允许访问指定的数据库&#xff0c;以及验证方式。 与oracle中的连接管理器的功能相同&#xff0c;之前有写过一篇oracleCMAN连接管理器的配置实操&#xff1a; 配置oracle连接管理器&#xff08;cman&#xff09;…...

2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录

摘要: 2024-05-07 商业分析-如何成为一个靠谱的工具人 如何在社会层面做一个更好的工具人 那么今天讲的这个主题呢&#xff0c;对吧&#xff1f;你们一看啊&#xff0c;就觉得这个就不应该我讲是吧啊&#xff0c;但是呢这个逻辑呢我还得跟你们讲一下啊&#xff0c;就是如何成为…...

C++设计模式-创建型设计模式

设计模式 设计模式是什么 设计模式是指在软件开发中&#xff0c;经过验证的&#xff0c;用于解决在特定环境下&#xff0c;重复出现的&#xff0c;特定问题的解决方案&#xff1b;其实就是解决问题的固定套路。但是要慎用设计模式&#xff0c;有一定的工程代码量之后用它比较…...

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…...

leetcode47-Permutations II

分析 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 题目 由于元素是重复的&#xff0c;要求返回不重复的&#xff0c;所以一定会有…...

246 基于matlab的交流电机动态方程

基于matlab的交流电机动态方程&#xff0c;用于交流电机动态分析。输入电机的额定功率(kW)、电机的额定转速(r/min)、转子外径(m)、铁心长(m)转子槽数、电机极对数 等参数&#xff0c;输出转速变化、力矩变化等结果。程序已调通&#xff0c;可直接运行。 246 交流电机动态 转速…...

7天入门Android开发之第2天——四大组件之活动

一、活动是什么 活动&#xff08;Activity&#xff09;是 Android 应用程序中的一个重要组件&#xff0c;它代表用户界面上的单个窗口&#xff0c;通常会填充整个屏幕。通过活动&#xff0c;可以创建各种各样的用户界面&#xff0c;并控制界面的行为。活动可以包含各种 UI 元素…...

自然语言(NLP)

It’s time for us to learn how to analyse natural language documents, using Natural Language Processing (NLP). We’ll be focusing on the Hugging Face ecosystem, especially the Transformers library, and the vast collection of pretrained NLP models. Our proj…...

学习java第六十天

Advice的类型&#xff1a; &#xff08;1&#xff09;前置通知&#xff08;Before Advice&#xff09;&#xff1a;在连接点&#xff08;Join point&#xff09;之前执行的通知。 &#xff08;2&#xff09;后置通知&#xff08;After Advice&#xff09;&#xff1a;当连接点退…...

OpenFeign修改HttpClient为Apache HttpClient 5

OpenFeign中http client 如果不做特殊配置&#xff0c;OpenFeign默认使用JDK自带的HttpURLConnection发送HTTP请求&#xff0c; 由于默认HttpURLConnection没有连接池、性能和效率比较低。所以修改为Apache HttpClient 5。 总结为两步&#xff1a; 加依赖改yml 具体操作请往…...

【busybox记录】【shell指令】comm

目录 内容来源&#xff1a; 【GUN】【comm】指令介绍 【busybox】【comm】指令介绍 【linux】【comm】指令介绍 使用示例&#xff1a; 逐行比较两个排序后的文件 - 默认输出 逐行比较两个排序后的文件 - 如果一个文件的排序有问题&#xff0c;那么反错&#xff08;默认&…...

工作中遇到的问题,如何解决的

1. gorm update 一条记录的某个字段后&#xff0c;立刻&#xff08;1ms&#xff09;select这条记录&#xff0c;会有读取不到最新结果的情况&#xff1a; transaction已经提交&#xff0c;数据最后也是更新的。 猜测原因&#xff1a;MySQL没能及时把那条很大的record“刷盘”到…...

数据结构(c):队列

目录 &#x1f37a;0.前言 1.什么是队列 2. 队列的实现 2.1定义队列节点 2.2定义队列 2.3队尾入队列 2.4判断队列是否为空 2.5队头出队列 2.6 队列首元素 2.7队尾元素 2.8队列内的元素个数 2.9销毁队列 3.试运行 &#x1f48e;4.结束语 &#x1f37a;0.前言 言C之…...

告别信息混乱:Trilium中文版让知识管理像整理衣柜一样简单

告别信息混乱&#xff1a;Trilium中文版让知识管理像整理衣柜一样简单 【免费下载链接】trilium-translation Translation for Trilium Notes. Trilium Notes 中文适配, 体验优化 项目地址: https://gitcode.com/gh_mirrors/tr/trilium-translation 还在为英文笔记软件的…...

当知识有了‘关系网‘:LightRAG如何让大模型‘秒懂‘你的文档?

想象一下&#xff0c;你有一座藏书万卷的图书馆&#xff0c;但你找书的方式只有一种——记住每本书某个页面的关键词&#xff0c;然后靠"猜"来定位。 这&#xff0c;就是传统RAG系统的尴尬处境。 今天要介绍的这个开源项目LightRAG&#xff0c;被顶会EMNLP 2025接收…...

Zephyr与MCUBoot的深度整合:从构建到安全启动的完整指南

1. 为什么需要安全启动&#xff1f; 在嵌入式开发中&#xff0c;设备固件的安全性往往是最容易被忽视的一环。想象一下&#xff0c;如果你的智能门锁固件被恶意篡改&#xff0c;或者医疗设备的程序被非法替换&#xff0c;后果会有多严重&#xff1f;这就是为什么我们需要MCUBoo…...

Pixel Epic · Wisdom Terminal保姆级教程:备份与恢复研报工程文件全指南

Pixel Epic Wisdom Terminal保姆级教程&#xff1a;备份与恢复研报工程文件全指南 1. 引言&#xff1a;为什么需要备份研报工程文件 在Pixel Epic Wisdom Terminal中&#xff0c;每一份研究报告都是你与AI贤者共同创造的智慧结晶。就像RPG游戏中的存档点一样&#xff0c;定…...

终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤

终极指南&#xff1a;用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的旧款Mac无法…...

AI赋能.NET开发:让快马平台智能生成Redis缓存与消息队列集成代码

最近在做一个电商系统的订单模块&#xff0c;发现缓存和消息队列这两个组件几乎是标配。但每次从零开始集成Redis和RabbitMQ都要查半天文档&#xff0c;配置各种连接字符串&#xff0c;写一堆样板代码。直到尝试用InsCode(快马)平台的AI辅助功能&#xff0c;才发现原来这些重复…...

如何免费将OFD转PDF?Ofd2Pdf完整使用指南

如何免费将OFD转PDF&#xff1f;Ofd2Pdf完整使用指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 你是否经常收到OFD格式的文件却无法打开&#xff1f;无论是电子发票、政府公文还是企业文档&…...

使用Papanastasiou正交模型求解‘宾汉姆浆液在5mm开度裂隙中,注浆压力1MPa、塑...

使用Papanastasiou正交模型求解宾汉姆浆液单一裂隙注浆扩散范围 裂隙开度5mm&#xff0c;注浆管半径2.5cm&#xff0c;注浆压力1MPa 塑性粘度6PaS&#xff0c;屈服应力2Pa COMSOL注浆打开COMSOL新建一个流体模型&#xff0c;先别急着点确定——宾汉姆流体这种带屈服应力的家伙&…...

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产

先唠两句&#xff1a;参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜&#xff0c;它是菜单&#xff08;资源路径&#xff09;的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...

太阳能家用电池电源市场:预计到2032年将达到98.8亿美元

在全球能源转型与地缘政治风险交织的背景下&#xff0c;家庭能源自主性需求正催生一个高速增长的细分市场。据 恒州诚思&#xff08;YH Research&#xff09; 《全球太阳能家用电池电源市场报告2026-2032》预测&#xff0c;2032年该市场规模将达98.8亿美元&#xff0c;2026-203…...