前言:为了能够清晰的理解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应用:

MVC轻量web应用的更多相关文章

  1. 动手打造轻量web服务器(二)路由

    tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...

  2. OSCHina技术导向:Java轻量web开发框架——JFinal

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ru ...

  3. Python轻量Web框架Flask使用

    http://blog.csdn.net/jacman/article/details/49098819 目录(?)[+] Flask安装 Python开发工具EclipsePyDev准备 Flask ...

  4. tomcat启动慢?自己动手打造轻量web服务器(一)

    废话少说,直接上代码. 编程语言:kotlin import java.net.ServerSocketimport java.net.Socket fun main(args:Array<St ...

  5. 初识python轻量web框架flask

    1.使用pip安装Python包 大多数Python包都使用pip实用工具安装,使用pyvenv创建的虚拟环境会自动安装pip. 1.使用pip安装Flask(其它Python包同理) pip ins ...

  6. golang 实现轻量web框架

    经常看到很多同学在打算使用go做开发的时候会问用什么http框架比较好.其实go的 http package 非常强大,对于一般的 http rest api 开发,完全可以不用框架就可以实现想要的功 ...

  7. 轻量的web框架Bottle

    简洁的web框架Bottle 简介 Bottle是一个非常简洁,轻量web框架,与django形成鲜明的对比,它只由一个单文件组成,文件总共只有3700多行代码,依赖只有python标准库.但是麻雀虽 ...

  8. Nancy总结(一)Nancy一个轻量的MVC框架

    Nancy是一个基于.net 和Mono 构建的HTTP服务框架,是一个非常轻量级的web框架. 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATC ...

  9. Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器

    最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流 ...

随机推荐

  1. [译] OpenStack Pike 版本中的 53 个新功能盘点

      原文:https://www.mirantis.com/blog/53-things-to-look-for-in-openstack-pike/ 作者:Mirantis Nick Chase 发 ...

  2. PyQt QFontDialog显示中文

    QApplication 加载Translator app = QtWidgets.QApplication(sys.argv) translator = QtCore.QTranslator() i ...

  3. Sass之Compass学习笔记

    compass Compass是Sass的工具库,就好像jQuery是js的库一样. sass有了compass的配合,就会更加事半功倍. Sass本身只是一个编译器,Compass在它的基础上,封装 ...

  4. jQuery圣诞雪花

    <script type="text/javascript"> $(function(){ var d="<div class='y_snow'> ...

  5. Android滑动控件.md

    1.概述 最近写代码临时加了个功能主要是滑动选择的功能效果图如下: 2.代码 这里主要是用属性动画做的 <ImageButton android:id="@+id/fab" ...

  6. 再起航,我的学习笔记之JavaScript设计模式18(观察者模式)

    观察者模式 观察者模式(Observer): 又被称为发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合. 创建一个观察者对象 首先我们创建一个闭包对象,让其在页面加 ...

  7. vue-cli搭建多页面项目如何配置

    这里使用的是webpack模板. 首先安装vue-cli,执行命令 npm install vue-cli -g: 安装完成后初始化一个项目模板:vue init webpack myproject; ...

  8. 自制OSPF配置实验大全

    OSPF综合实验(gns模拟器)   注意点: Ospf实验推荐用gns制作 //图中的交换机可以视觉忽略或缩小成一个点.(^ v^) Ospf 实验拓扑图 ​ 目录 OSPF综合实验... 1 Os ...

  9. (Alpha)个人总结

    (Alpha)个人总结 一. 总结自己的alpha 过程 1.团队的整体情况 alpha阶段,整个团队很团结状态很好.在计划制定出来后,大家都服从安排,将该完成的工作都一一完成.虽然在课堂演示的时候又 ...

  10. 团队作业10--Beta阶段项目复审

    小组的名字和链接 优点 缺点 最终排名 油炸咸鱼 http://www.cnblogs.com/24app/ 基本功能实现,能够完成预期达到的大部分功能,并能够修复所有自己提出的bug,界面也还行,博 ...