最近通过对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;
}
}
(学习心得,如有不妥之处,请高人指点!)