jsp或者java web的servlet获取get方式提交的数据的几种方式

最近由于工作需要,又重新拾起的java web的开发。之前大体学习过,今儿重新使用,却别有一番滋味。是的,看的更深入了,而不再仅仅是当时那种不明白但会用的状态!
先看源码~
第一个页面:一个可以通过get方式提交数据的页面,可以是普通的url方式:目标url?parameter1=value1&parameter2=value2或者form的get方式提交(其实最终还是转变为上一种方式)。这里使用了form的get方式提交数据:
<form name=”getForm” id=”getForm” action=”/getForm.jsp” method=”get”>
姓名:<input type=”text” name=”name” id=”name” /><br />
年龄:<input type=”text” name=”age” id=”age”><br />
介绍:<textarea name=”description” id=”description”></textarea><br />
<input type=”submit” id=”getList” name=”getList” value=”submit”/>
</form>
解析:这是把表单中的元素以get方式提交给同项目中的getForm.jsp页面,当然也可以是其他网站的jsp页面或者servlet。
第二部分:接收端。这里使用了jsp接收提交的数据。
<%
//获取提交的表单数据
//方式一获取
/*
*普通方法,通过request对象中的getParameter()方法获取需要的数据
*/
String name = request.getParameter(“name”);
String age = request.getParameter(“age”);
String description = request.getParameter(“description”);
//方法二获取
/*
*通过request对象中的getParameterNames()方法获取输入数据的name属性枚举
*通过遍历枚举获取所有name,并利用getParameter()方法获取对应值
*/
Map<String,String> map = new HashMap<String,String>();
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()){
String key = (String)names.nextElement();
String value = request.getParameter(key);
map.put(key, value);
}
//方法三获取
/*
*通过request对象中的getParameterMap()方法获取提交数据的map集合,
*不过要注意的是键值对是String:String[]
*/
Map nextMap = request.getParameterMap();//键是String,值是String[]
//数据输出
PrintWriter pw = response.getWriter();
//方式一打印
pw.println(“name:” + name + “<br />”);
pw.println(“age:” + age + “<br />”);
pw.println(“description:” + description + “<br /><hr />”);
//方法二打印
Set<Entry<String,String>> set = map.entrySet();
Iterator<Entry<String,String>> it = set.iterator();
while(it.hasNext()){
Entry<String,String> entry = (Entry<String,String>)it.next();
String key = entry.getKey();
String value = entry.getValue();
pw.println(key + “:” + value + “<br />”);
}
pw.println(“<hr />”);
//方法三遍历
Set<Entry<String,String[]>> nextSet = nextMap.entrySet();
Iterator<Entry<String,String[]>> nextIt = nextSet.iterator();
while(nextIt.hasNext()){
Entry<String,String[]> entry = (Entry<String,String[]>)nextIt.next();
String key = entry.getKey();
String[] value = entry.getValue();
pw.println(key + “:” + value[0] + “<br />”);
}
%>
解析:以上介绍了三种方式获取数据,第一种是最为常规的方式,当然在获取大量数据时,需要挨个添加,比较费劲;第二个方式先获取传入参数的名字的枚举,在通过这个枚举获取每个名字对应的值;第三种方式十分省劲,直接获取传入参数的Map集合,不过要十分留意的是:这是一个String:String[]的键值对,当时就因为没仔细看方法的api,费了半天劲~
深入分析:1、以前从没有关注过jsp中的java代码不是类,这个问题,今天意识到这个问题,便分析了下:jsp页面在运行前会被翻译成一个java类,并被编译成字节码文件。而上面使用的request和response对象正是jsp的内置对象,这其实与servlet中的request和response很相像!2、以上方式同样适用于servlet获取get提交的数据。

© 2014 – 2016, 李德涛博客. 版权所有.

发表评论

电子邮件地址不会被公开。 必填项已用*标注