简单的MVC小应用

MVC概述:

 M:modal,是一个模型,比如一瓶啤酒,需要有商标.在选择啤酒时,给定一个想要的颜色的酒,可以给出该颜色酒的品牌

 V:view,视图.

 C:controler,处理业务逻辑的地方,获得view中提交的酒的颜色,调用M获得建议的酒种类,将其转交至view中显示(也可以直接显示,不使用view).

设计过程:

  1.构造一个表单,可以从其中获取客户需要的酒的颜色.

   

 1 <!--BeerForm.html-->
 2 <html>
 3 <head>
 4 <title>beer select</title>
 5 </head>
 6 <body>
 7   <form action="SelectBeer.do" method="post">
 8       <p>Select beer characteristics</p>
 9       Color:
10       <select name="color" size="1">
11           <option value="light">light</option>
12           <option value="amber">amber</option>
13           <option value="brown">brown</option>
14           <option value="dark">dark</option>
15       </select>
16       <input type="submit" value="submit">
17   </form>
18 </body>
19 </html>

  2.构造一个知道各种酒颜色的大师类,可以通过提供的颜色,给出建议.

  

 1 package com.slowalker.modal;
 2 
 3 import java.util.*;
 4 
 5 public class BeerExpert {
 6     public List<String> getBrands(String color) {
 7         List<String> brands = new ArrayList<String>();
 8         if(color.equals("amber")) {
 9             brands.add("Jack Amber");
10             brands.add("Red Moose");
11         }else {
12             brands.add("Jail Pale Ale");
13             brands.add("Gout Stout");
14         }
15         return brands;
16     }
17 }

    3.构造一个servlet处理主要业务逻辑,从表单中获取需要的酒的颜色,根据这种颜色从大师的到相应的建议,将建议反馈到一个view中,

   

 1 package com.slowalker;
 2 
 3 import com.slowalker.modal.*;
 4 import java.util.*;
 5 import java.io.IOException;
 6 import java.io.PrintWriter;
 7 
 8 import javax.servlet.RequestDispatcher;
 9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 
15 /**
16  * Servlet implementation class BeerSelect
17  */
18 @WebServlet(name="/BeerSelect", urlPatterns= {"/SelectBeer.do"})
19 public class BeerSelect extends HttpServlet {
20     private static final long serialVersionUID = 1L;
21     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
22         
23         String c = request.getParameter("color");
24         BeerExpert be = new BeerExpert();
25         List result = be.getBrands(c);
26         request.setAttribute("styles", result);
27         RequestDispatcher view = request.getRequestDispatcher("BeerForm.jsp");
28         view.forward(request, response);
29         
30         /*//使用BeerExpert模型,但是不使用MVC结构中的view
31         String c = request.getParameter("color");
32         BeerExpert be = new BeerExpert();
33         List<String> result = be.getBrands(c);
34         response.setContentType("text/html");
35         PrintWriter pw = response.getWriter();
36         pw.println("Beer Selection Advice<br>");
37         
38         Iterator it = result.iterator();
39         while(it.hasNext()) {
40             pw.println("<br>try : " + it.next());
41         }
42         */
43         
44         /*//不使用BeerExpert模型
45         response.setContentType("text/html");
46         PrintWriter pw = response.getWriter();
47         pw.println("Bear Selection Advice<br>");
48         String c = request.getParameter("color");
49         pw.println("<br>Got beer color " + c);
50         */
51     }
52 
53 }

4.根据servlet提供的值,将其显示在view中.

   

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ page import="java.util.*" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <h1 align="center">Beer Recommendations</h1>
12 <p>
13 <%
14     List styles = (List)request.getAttribute("styles");
15     Iterator it = styles.iterator();
16     while(it.hasNext()){
17         out.println("<br>try: " + it.next());
18     }
19 %>
20 </p>
21 </body>
22 </html>
原文地址:https://www.cnblogs.com/slowalker-lee/p/7886839.html