查看“商苑面馆:Java 网页版之 CartModel层”的源代码
←
商苑面馆:Java 网页版之 CartModel层
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==Model层的作用== *M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 [[文件:Java8-1.png]] ===客户端功能=== [[文件:Java2-36.png]] ==客户端Model层的编写== ==开发过程== ===创建项目和网页页面=== 我们在[[商苑面馆:Java 网页版之 CartView层]]已经完成。 [[文件:Java_web2-4.png]] ===创建servlet=== 向工程添加一个servlet文件: 在包service中,包名 右键→New→Servlet ,新建一个叫CartServlet的类。 <nowiki>package service; /** * 这个类主要的功能是调用CartDao接口进行商品查询 * 并将结果返回前台页面 */ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.*; import entity.*; /** * Servlet implementation class FoodServlet */ public class CartServlet implements javax.servlet.Servlet { private static final long serialVersionUID = 1L; /* * 方法名称:getFood * 功能:调用底层数据库方法,查询特定名称的商品 * 返回:True /False */ public HashMap<Food,Integer> listCart() throws Exception{ CartDao db = new CartDaoMap(); // 构建数据接口 HashMap<Food,Integer> myFood = db.queryFood(); // 取得商品详细信息 if (myFood.isEmpty()){ System.out.println("您的购物车为空"); }else { System.out.println("商品详细信息为:"+myFood.toString()); } return myFood; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception { //String name = request.getParameter("foodname");// 取得商品名 //byte[] b=name.getBytes("ISO-8859-1");//用tomcat的格式(iso-8859-1)方式去读。 //String str=new String(b,"utf-8");//采用utf-8去接string response.setContentType("text/html;charset=utf-8"); //设置页面的字符编码 System.out.println("取得商品名"); HashMap<Food,Integer> list = listCart(); request.setAttribute("list", list); //将数据打包 request.getRequestDispatcher("cart.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception { //String name = request.getParameter("foodname");// 取得商品名 //byte[] b=name.getBytes("ISO-8859-1");//用tomcat的格式(iso-8859-1)方式去读。 //String str=new String(b,"utf-8");//采用utf-8去接string response.setContentType("text/html;charset=utf-8"); //设置页面的字符编码 System.out.println("取得商品名"); HashMap<Food,Integer> list = listCart(); request.setAttribute("list", list); //将数据打包 request.getRequestDispatcher("cart.jsp").forward(request, response); } /*以下的代码咱不用研究, * 带着就行 * 不影响软件编写*/ public void destroy() { } public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } public void init(ServletConfig arg0) throws ServletException { } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { HttpServletRequest rq = (HttpServletRequest) request; HttpServletResponse rs = (HttpServletResponse) response; try { doPost(rq, rs); } catch (Exception e) { e.printStackTrace(); } } } </nowiki> 这里,前台输入的数据可能乱码,所以加入了重新编码的处理。参考了文档:https://blog.csdn.net/u010127245/article/details/51817329 后台java向前台页面传值参考了文档:https://blog.csdn.net/qq_38663729/article/details/78088689 数据打包参考了文档:https://blog.csdn.net/mpfly/article/details/70195671 ===编写跳转网页=== 跳转页cart.jsp ,当完成查询后跳转到这个界面: cart.jsp : <nowiki><%@page import="entity.*"%> <%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML > <html> <head> <title>小脚本测试</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="jsp base"> <meta http-equiv="description" content="This is my first jsp page"> </head> <body> 购物车内容如下:<br/> <% HashMap<Food,Integer> list = (HashMap) request.getAttribute("list"); if(list.isEmpty()){ out.println("抱歉,您的购物车为空"); }else{ out.print(list.toString()); } %> </body> </html> </nowiki> ===.创建一个web.xml=== web.xml用来建立servlet与jsp的关系(需要放在WEB-INF内)。 根据不同的url来调用不同的servlet来进行处理。 <nowiki><?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>web7-3</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>UserServlet</servlet-name> <servlet-class>service.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>FoodServlet</servlet-name> <servlet-class>service.FoodServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FoodServlet</servlet-name> <url-pattern>/search</url-pattern> </servlet-mapping> <servlet> <servlet-name>CartServlet</servlet-name> <servlet-class>service.CartServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CartServlet</servlet-name> <url-pattern>/cart</url-pattern> </servlet-mapping> </web-app></nowiki> ==程序测试运行== 右击项目名称,RUN -> RUN AS SERVER 选择tomcat服务器 网站页面会出现如下画面: [[文件:Java9-43.png]] 如果点击,会跳转到购物车清单页面: [[文件:java9-44.png]] ==什么是MVC== MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。其实上面的结构就是一种MVC,页面用jsp来展现,控制用servlet,而模型就是用普通的JAVA类来实现不同的处理过程 参考: https://www.cnblogs.com/coder2012/p/3389979.html
返回至
商苑面馆:Java 网页版之 CartModel层
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息