zoukankan      html  css  js  c++  java
  • MVC轻量web应用

    前言:为了能够清晰的理解mvc架构,以一个简单的mvc架构web应用为例。例子为一个beer项目,用户可通过页面选择啤酒的种类,服务端根据用户的选择,给出相应的推荐。

    涉及到的代码:

    view层:form.html 》 用户选择页面

    result.jsp 》 服务器返回推荐页面

    model层:BeerExpert.java  》 处理用户选择并给出推荐的逻辑处理

    control层:BeerSelect.java 》 负责接收view层传入的数据,并将数据交给model层处理,然后将处理结果重定向到result.jsp

    web架构:

                                                      

    代码实现:

    form.html

    <html>
    <body>
    <h1 align="Center">Beer Selection Page</h1>
    <form method="Post"
        action="SelectBeer.do">
        <p>Select beer charcteristics</p>
        Color:
        <select name="color" size="1">
        <option value="light">light </option>
        <option value="amber">amber </option>
        <option value="brown">brown </option>
        </select>
        <br><br>
        <center>
            <input type="submit">
        </center>
    </form>
    </body>
    </html>

    result.jsp

    <%@ page import="java.util.*" %>
    
    <html>
    <body>
    <h1 align="center">Beer Recommendations JSP</h1>
    
    <% 
    List styles = (List)request.getAttribute("styles");
    Iterator it = styles.iterator();
    while(it.hasNext()){
        out.print("<br>try:: "+it.next());
    }
    %>
    </body>
    </html>

    web.xml

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0">
          <servlet>
              <servlet-name>MyBeer</servlet-name>
              <servlet-class>com.example.web.BeerSelect</servlet-class>
          </servlet>
    
          <servlet-mapping>
              <servlet-name>MyBeer</servlet-name>
              <url-pattern>/SelectBeer.do</url-pattern>
          </servlet-mapping>
    
     </web-app>

    BeerSelect.java

    package com.example.web;
    
    import com.example.model.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    
    public class BeerSelect extends HttpServlet {
        public void doPost(HttpServletRequest request,
                        HttpServletResponse response)
                        throws IOException, ServletException{
            response.setContentType("text/html");
            String c = request.getParameter("color");
            //PrintWriter out = response.getWriter();
            BeerExpert expert = new BeerExpert();
            List ls = expert.getBrands(c);
            //Iterator it = ls.iterator();
            //while(it.hasNext()){
            //    out.println("<br> try:"+it.next());
            //}
            
            //out.println("Beer Selection Advice<br>");
            //ot.println("<br> Got beer color"+c);
            request.setAttribute("styles",ls);
            RequestDispatcher view = request.getRequestDispatcher("result.jsp");
    
            view.forward(request,response);
        }
    }

    BeerExpert.java

    package com.example.model;
    
    import java.util.*;
    
    public class BeerExpert {
        public List getBrands(String color){
            List<String> brands = new ArrayList<String>();
            if(color.equals("amber")) {
                brands.add("Jack Amber");
                brands.add("Red Moose");
            }
            else {
                brands.add("Jail Pala Ale");
                brands.add("Gout Stout");
            }
            return(brands);
        }
    }

    测试Beer应用:

  • 相关阅读:
    Hbase学习02-API操作
    Hbase学习01-shell操作
    09 | 普通索引和唯一索引,应该怎么选择?
    08 | 事务到底是隔离的还是不隔离的?
    07 | 行锁功过:怎么减少行锁对性能的影响?
    06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
    05 | 深入浅出索引(下)
    04 | 深入浅出索引(上)
    03 | 事务隔离:为什么你改了我还看不见?
    02 | 日志系统:一条SQL更新语句是如何执行的?
  • 原文地址:https://www.cnblogs.com/justenjoy/p/6642852.html
Copyright © 2011-2022 走看看