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应用:


MVC轻量web应用的更多相关文章
- 动手打造轻量web服务器(二)路由
tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...
- OSCHina技术导向:Java轻量web开发框架——JFinal
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ru ...
- Python轻量Web框架Flask使用
http://blog.csdn.net/jacman/article/details/49098819 目录(?)[+] Flask安装 Python开发工具EclipsePyDev准备 Flask ...
- tomcat启动慢?自己动手打造轻量web服务器(一)
废话少说,直接上代码. 编程语言:kotlin import java.net.ServerSocketimport java.net.Socket fun main(args:Array<St ...
- 初识python轻量web框架flask
1.使用pip安装Python包 大多数Python包都使用pip实用工具安装,使用pyvenv创建的虚拟环境会自动安装pip. 1.使用pip安装Flask(其它Python包同理) pip ins ...
- golang 实现轻量web框架
经常看到很多同学在打算使用go做开发的时候会问用什么http框架比较好.其实go的 http package 非常强大,对于一般的 http rest api 开发,完全可以不用框架就可以实现想要的功 ...
- 轻量的web框架Bottle
简洁的web框架Bottle 简介 Bottle是一个非常简洁,轻量web框架,与django形成鲜明的对比,它只由一个单文件组成,文件总共只有3700多行代码,依赖只有python标准库.但是麻雀虽 ...
- Nancy总结(一)Nancy一个轻量的MVC框架
Nancy是一个基于.net 和Mono 构建的HTTP服务框架,是一个非常轻量级的web框架. 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATC ...
- Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器
最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流 ...
随机推荐
- 读取xml文件中节点
/// <summary> /// /// </summary> /// <param name="xmlpath">节点路径</para ...
- 原创 :nfs软件服务利用ansible实现一键化部署
[root@m01 tools]# cat nfspeizhi.shcat >>/etc/exports<<EOF /data 172.16.1.0/24(rw,sync)EO ...
- 配置HAProxy支持https协议
author:JevonWei 版权声明:原创作品 实现http重定向到https HAProxy 创建CA证书 [root@HAProxy ~]# cd /etc/haproxy/ [root@HA ...
- 1000以内完全数(完美数)获取实现---基于python
"""题目: 如果一个数恰好等于它的因子之和,则称该数为"完全数" .各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的 ...
- ajax请求成功前loading
1.jquery方式 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- 详解 anjularjs的ui-route(多视图、视图嵌套、视图传参)
最近整理了一下anjularjs的第三方插件ui-route,在这就以一个demo的形式讲解一下.整片博客均以开头的demo代码为例.下边是个目录,大家可以酌情直接跳转浏览. 1. demo的代码 2 ...
- Jquery 父级元素、同级元素、子元素
prev():获取指定元素的上一个同级元素(是上一个哦). prevAll():获取指定元素的前边所有的同级元素. find():查找子元素方式 next(): 获取指定元素的下一个同级元素(注意是下 ...
- test文件伪装
该文件属于伪装图片类型.图片另存后把后缀改为rar将看到txt文件. 利用了 cmd cp /b 命令 命令格式:copy /b 文件1+文件2+......文件N 合并后的文件名<br&g ...
- Wireshark抓包TCP三次握手数据
抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...
- 【Beta】 第五次Daily Scrum Meeting
一.本次会议为第五次meeting会议 二.时间:10:00AM-10:20AM 地点:陆大楼 三.会议站立式照片 四.今日任务安排 成员 昨日任务 今日任务 林晓芳 帮助完善登录界面 对目前完成的模 ...