实验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);

}

}

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");

}

}

运行结果图:

点餐:

增加菜单:

删除:

相关推荐
曹牧2 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法2 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7253 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄3 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿3 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds3 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹3 小时前
【Java基础】多态 | 打卡day2
java·开发语言
Re.不晚3 小时前
JAVA进阶之路——无奖问答挑战2
java·开发语言
Ro Jace4 小时前
计算机专业基础教材
java·开发语言