博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java.Web】MVC —— 基于Servlet Controller的Model2 —— 示例
阅读量:4006 次
发布时间:2019-05-24

本文共 5002 字,大约阅读时间需要 16 分钟。

基于Servlet Controller的Model2

示例

这个应用程序可以用来输入产品信息;在如图的表单中输入信息:

http://localhost:8080/base-webapp/product_input

并提交,然后,应用程序给用户发送一个确认页面,并显示所保存产品的详细信息。

http://localhost:8080/base-webapp/product_save

这个应用程序能够执行下面这两个action:

  • 显示Add Product表单,URI中包含字符串“product_input”
  • 保存产品,并返回确认页面,URI中包含字符串“product_save”

这个应用包含一下组件:

  • Product类时模型对象,包含产品信息
  • ProductForm类,封装用于输入产品的HTML表单域
  • ControllerServlet类,是这个Model2应用的Controller
  • Action类,用于保存产品信息
  • View的两个JSP页面:ProductForm.jsp和ProductDetails.jsp

源码:

product bean 类:

package com.gof.test.bean;import java.io.Serializable;public class Product implements Serializable {	/**	 * 	 */	private static final long serialVersionUID = -2088880133830936693L;	private String nameString;	private String description;	private float price;		public String getName(){		return nameString;	}	public void setName(String name){		this.nameString = name;	}	public String getDescription(){		return description;	}	public void setDescription(String description){		this.description = description;	}	public float getPrice(){		return price;	}	public void setPrice(float price){		this.price = price;	}}

product form 类:

package com.gof.test.bean;public class ProductForm {	private String nameString;	private String description;	private String price;		public String getName(){		return nameString;	}	public void setName(String name){		this.nameString = name;	}	public String getDescription(){		return description;	}	public void setDescription(String description){		this.description = description;	}	public String getPrice(){		return price;	}	public void setPrice(String price){		this.price = price;	}}

ControllerServlet类:

package com.gof.test.servlet;import java.io.IOException;import java.net.URL;import javax.print.DocFlavor.STRING;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.gof.test.action.SaveProductAction;import com.gof.test.bean.Product;import com.gof.test.bean.ProductForm;public class ControllerServlet extends HttpServlet {		protected void doGet(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException{		process(req, resp);	}		protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException{		process(req, resp);	}		private void process(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException{		String uri = req.getRequestURI();		int lastIndex = uri.lastIndexOf("/");		String action = uri.substring(lastIndex + 1);		String dispatchUrlString = null;				if (action.equals("product_input")){			dispatchUrlString = "/jsp/controller/ProductForm.jsp";		}else 		if (action.equals("product_save")){			ProductForm productForm = new ProductForm();						productForm.setName(req.getParameter("name"));			productForm.setDescription(req.getParameter("description"));			productForm.setPrice(req.getParameter("price"));						Product product = new Product();			product.setName(productForm.getName());			product.setDescription(productForm.getDescription());			try{				product.setPrice(Float.parseFloat(productForm.getPrice()));			}catch (NumberFormatException e){				e.printStackTrace();			}						SaveProductAction saveProductAction = new SaveProductAction();			saveProductAction.save(product);						req.setAttribute("product", product);			dispatchUrlString = "/jsp/controller/ProductDetails.jsp";		}        		if (dispatchUrlString != null){			RequestDispatcher rDispatcher = req.getRequestDispatcher(dispatchUrlString);			rDispatcher.forward(req, resp);		}	}}

在web.xml中注册这个servlet:

controller
com.gof.test.servlet.ControllerServlet
controller
/product_input
controller
/product_save

save action类:

package com.gof.test.action;import com.gof.test.bean.Product;public class SaveProductAction {    public void save(Product product){    	// insert product into the database    }}

View - ProductForm.jsp :

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Add Product Form

Add a product

Product Name:
Description:
Price:

View - ProductDeails.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Save Product

The product has been saved.

Details:
Product Name: ${product.name}
Description: ${product.description}
Price:${product.price}

你可能感兴趣的文章
VS 2005 CRT函数的安全性增强版本
查看>>
SQL 多表联合查询
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
CLOSE_WAIT和TIME_WAIT
查看>>
在C++中使用Lua
查看>>
在Dll中调用自身的位图资源
查看>>
IP校验和详解
查看>>
C++中使用Mongo执行count和distinct运算
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
C++获取文件大小常用技巧分享
查看>>
未来5年大机遇:做贩卖多巴胺的超级玩家
查看>>
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
昨夜今晨最大八卦终于坐实——人类首次直接探测到了引力波
查看>>