最近通过对JSP/Servlet学习,对最常用到的request参数的获取方式做个总结(如有不妥之处,请高人指出 ),可能有这么四种方式:
1. 直接使用request.getParameter(param)或者request.getParameterMap(),或者request.setAttribute(String name, Object o)/request.getAttribute(String name)再进行相应的处理,如果参数多,又要进行合法性判断,那么会显得很繁琐,比如最基本判断参数是否为NULL,可能会是以下的样子:
...... if(request.getParameter("param1") != null) { param1 = request.getParameter("param1"); } // todo some code ...... if(request.getParameter("paramN") != null) { paramN = request.getParameter("paramN"); }
2. 利用session,在实际中,session存在丢失的问题,所以在用session时要留心
3. 利用cookie,如果用户有意或无意禁用cookie,也会造成问题
4. 自己定义一个JavaBean,暂且称为DataStore吧,思路:将参数暂存入DataStore的Map成员变量中,用的时候取出,用完清空(赋NULL),个人这样处理更能体现OO的思想,DataStore可能以下的样子:
package cn.edu.xbmu.lib.jfly.net.util; import java.util.Map; /** * 获取request参数,提供数据服务 * @author JFly * 创建时间:2008年12月16日 */ public class DataStore { private Map<String, String> map = null; private String refer = null; // 获得Map public Map<String, String> getMap() { return map; } // 保存Map public void saveMap(Map<String, String> aMap) { map = aMap; } // 释放Map,消除Map引用, 以便垃圾回收 public void closeMap() { map = null; } public String getRefer() { return refer; } public void saveRefer(String aRefer) { refer = aRefer; } public void closeRefer() { refer = null; } }
(学习心得,如有不妥之处,请高人指点!)