`
wanglu271991027
  • 浏览: 91356 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

对界面的封装 属性的封闭

 
阅读更多

package com.sdjt.util.page;

import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

public class PageData extends HashMap implements Map{
	/**
	 * 自动将页面数据放入PageData对象中,当从页面获取数据时 new的时候要传request
	 * request.getParameter(arg0): get(arg0)或getString(arg0)
	 * request.getParameterValues(arg0): getValues(arg0)方法
	 * 本类也可以当做一个普通的Map使用,new的时候不要传参数
	 * author:lqf
	 */
	private static final long serialVersionUID = 1L;
	Map map = null;
	HttpServletRequest request;
	//从页面获取数据
	public PageData(HttpServletRequest request){
		this.request = request;
		map = request.getParameterMap();
		//当表单提交类型为"multipart/form-data"时,request.getParameterMap()返回的是一个HashMap,没有setLocked方法
		if("ParameterMap".equals(map.getClass().getSimpleName())) {
			Method method;
			try {
				method = map.getClass().getMethod("setLocked",new Class[]{boolean.class});
				method.invoke(map,new Object[]{new Boolean(false)});
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}
	
	//普通的Map
	public PageData() {
		map = new HashMap();
	}
	@Override
	public Object get(Object key) {
		Object obj = null;
		if(map.get(key) instanceof Object[]) {
			Object[] arr = (Object[])map.get(key);
			obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]);
		} else {
			obj = map.get(key);
		}
		return obj;
	}
	
	//本方法只能用于从页面获取数组,例如相同名字的checkbox
	public String[] getValues(Object key) {
		return request == null ? null:request.getParameterValues((String)key);
	}
	
	public String getString(Object key) {
		return (String)get(key);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public Object put(Object key, Object value) {
		return map.put(key, value);
	}
	
	@Override
	public Object remove(Object key) {
		return map.remove(key);
	}

	public void clear() {
		map.clear();
	}

	public boolean containsKey(Object key) {
		// TODO Auto-generated method stub
		return map.containsKey(key);
	}

	public boolean containsValue(Object value) {
		// TODO Auto-generated method stub
		return map.containsValue(value);
	}

	public Set entrySet() {
		// TODO Auto-generated method stub
		return map.entrySet();
	}

	public boolean isEmpty() {
		// TODO Auto-generated method stub
		return map.isEmpty();
	}

	public Set keySet() {
		// TODO Auto-generated method stub
		return map.keySet();
	}

	@SuppressWarnings("unchecked")
	public void putAll(Map t) {
		// TODO Auto-generated method stub
		map.putAll(t);
	}

	public int size() {
		// TODO Auto-generated method stub
		return map.size();
	}

	public Collection values() {
		// TODO Auto-generated method stub
		return map.values();
	}
}

分享到:
评论

相关推荐

    C++图书销售系统无界面

    1. **Book类**:表示图书的基本信息,包括书ID、书名、作者、出版社、出版日期、库存数量和价格等属性,以及与图书相关的操作方法,如获取和设置属性、打印图书详情等。 2. **Customer类**:表示顾客信息,包括顾客...

    一对一局域网通讯工具

    通过这些文件,开发者可以深入研究通信工具的具体实现,包括如何设置TCP连接,如何封装和解析消息,以及如何在用户界面上实时反映通信状态。 总结来说,这个一对一局域网通讯工具是使用Delphi 5开发的,利用其丰富...

    DXD_PADS2007_4_Demo_lib

    13. **关联封装**:为了指定一个封闭库到新创建的symbol中,可以使用`Tools > PADS Decal Browser`。需要注意的是,在PADS中使用`File > Library > Manage Lib List > Add`来增加相应的pads封装库文件(*.pt07)。 14....

    局域网点对点聊天程序

    ClientSocket通常设置其Host属性为服务器的IP地址或域名,Port属性为服务器监听的端口号,然后调用Connect方法建立连接。一旦连接建立,就可以通过Write和Read方法进行数据的发送和接收。 - **ServerSocket**: ...

    将成asp.net2.0(c#)+access版空气污染气象学教学计算辅助软件 v 1.0.rar

    该人软件暂时可以绘制:线性曲线图,玫瑰图,并可对生成的图片样式进行属性设置 本软件操作完全模仿桌面操作界面样式,提高了用户体验,所有操作在一个页面上完成,实现桌面软件窗体样式 使用说明: ...........

    ios-自定义标签,类似滴滴打车评论的标签.zip

    4. **属性封装**:将可以调整的属性封装为公共的实例变量或属性,如borderWidth、borderColor、font、textColor等,以便在代码中进行设置。 5. **KVC(Key-Value Coding)和KVO(Key-Value Observing)**:为了实现...

    面向对象系统设计PPT学习教案.pptx

    2. **开放封闭原则**:类应该对扩展开放,对修改关闭。 3. **里氏替换原则**:子类型必须能够替换它们的基类型,而不影响程序的正确性。 4. **依赖倒置原则**:依赖于抽象而不是具体实现。 5. **接口隔离原则**:...

    34IOS面试题设计模型.pdf

    MVC将应用程序逻辑划分为明确的层次,提高了代码的可维护性和可扩展性,遵循“对扩展开放,对修改封闭”的设计原则。然而,过度使用MVC可能会导致结构复杂,影响运行效率,特别是在小型项目中。 单例模式是iOS开发...

    数据库原理可视化程序设计PPT学习教案.pptx

    在VFP中,对象具有众多属性,可以在设计时或运行时进行设置,并且支持封装性、多态性和继承性。 3. **类**:类是对象的模板,是对具有相同属性和行为特征的对象的抽象描述。类定义了对象的一般属性和行为,VFP提供...

    EAS控件培训

    编写控件的具体实现代码时,应在封闭的`<public:component>`标签内,采用`<script language="javascript">`嵌入javascript或vbscript(虽然不推荐混用)。每个自定义脚本块需正确关闭,确保代码结构清晰。 #### ...

    java贪吃蛇完整版源代码(可用性,可扩展)

    通过封装这些属性和方法,使得代码结构更加清晰,也便于后续的功能扩展和维护。同时,`Food`类和`Boundary`类分别对游戏中的食物和边界进行抽象,让游戏逻辑的实现更为直观。 事件驱动编程是游戏开发中的一个核心...

    基于Qt的吃豆豆游戏的设计与实现 .doc

    - 游戏对象模型:定义吃豆人、幽灵、豆豆等类,封装各自的行为和属性。 - 游戏逻辑处理:实现游戏循环,处理用户输入、移动对象、检测碰撞等。 - 用户交互界面:设置按钮和菜单项,响应用户的操作请求。 - 错误处理...

    深入浅出面向对象的分析与设计1

    1. **封装**:封装是指将对象的状态信息(即数据)隐藏在对象内部,不允许外部程序直接访问,而是通过该类提供的成员函数来实现对状态信息的操作。 2. **继承**:继承是子类自动共享父类数据结构和方法的机制,这是...

    Geomagicstudio11教程连载一:软件命令熟悉整理.pdf

    + 封装:曲面封装的最大圆周孔设为0 + 语言设置:中国大陆 四、点云处理流程 * 逆向设计流程: 1. 导入点云数据 2. 对点云数据进行处理 3. 生成三角网格模型 4. 将三角网格模型转换为 CAD 模型 五、实例...

    随机生成迷宫,可调节大小

    3. **图形用户界面(GUI)**:`Form1.cs`和`DimensionsDialog.cs`包含了对用户界面的处理,如按钮点击事件、文本输入验证等。`Form1.resx`和`DimensionsDialog.resx`是资源文件,存储了界面布局和控件的属性。 4. *...

    小程序——自定义组件.rar

    在微信小程序的开发中,自定义组件是一种非常重要的特性,它允许开发者将复杂的功能或界面封装成可复用的组件,提升代码的可维护性和应用的扩展性。本压缩包"小程序——自定义组件.rar"可能包含了一系列关于如何创建...

    重写asp.net TEXTBOX

    这种设计模式遵循了软件工程中的“开放封闭原则”——即对扩展开放,对修改封闭,保证了代码的灵活性和可维护性。 #### 应用场景 重写后的`WebTextBox`适用于各种需要进行复杂数据验证的Web应用程序,如在线表单、...

    Interview:java面试基础+数据库基础

    3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类...

    面向对象期末考试答案.doc

    1. **继承与泛化**:继承是特殊类继承一般类的属性和操作,泛化是一般类对特殊类的抽象,两者共同构建类的层次结构。 2. **聚合与组合**:聚合体现"整体-部分"关系,是临时的或弱关联;组合是强关联,表示组件对象...

    推选文档c-程序设计-pptPPT.ppt

    1. 封闭性:对象内部的数据和操作对外部是隐藏的,只通过预设的接口与外界交流。 2. 继承性:子类可以继承父类的属性和方法,实现代码复用。 3. 多态性:同一消息可以被不同类型的对象响应,实现不同的行为。 C++...

Global site tag (gtag.js) - Google Analytics