Request获取参数
package com.itheima.request;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.itheima.domain.User;
/*
GET方式: URI?username=abc&password=123 username和password就是请求参数
POST方式: 请求正文中 username=abc&password=123
*/
public class RequestDemo3 extends HttpServlet {
public response)
void doGet(HttpServletRequest request, HttpServletResponse
throws ServletException, IOException {
try {
test7(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
//实际开发中怎么玩:封装对象 借助第三方开发包 BeanUtils 终极版
private void test7(HttpServletRequest request, HttpServletResponse response)
throws IOException, Exception {
User user = new User();
System.out.println(\"封装前:\"+user);
//表单的字段名和User中的属性名一致
BeanUtils.populate(user, request.getParameterMap());
System.out.println(\"封装后:\"+user);
}
//实际开发中怎么玩:封装对象 借助第三方开发包 BeanUtils
private void test6(HttpServletRequest request, HttpServletResponse response)
throws IOException, Exception {
User user = new User();
System.out.println(\"封装前:\"+user);
//表单的字段名和User中的属性名一致
Map for(Map.Entry String paramName = me.getKey(); String paramValues[] = me.getValue(); BeanUtils.setProperty(user, paramName, paramValues);//调用对应的setter方法 } System.out.println(\"封装后:\"+user); } //实际开发中怎么玩:封装对象(技术点:反射+内省) 参考:java基础加强 private void test5(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println(\"封装前:\"+user); //表单的字段名和User中的属性名一致 Map for(Map.Entry String paramName = me.getKey(); String paramValues[] = me.getValue(); //调用User中对应的写属性:比如当前username,需要调用setUsername(paramValues); PropertyDescriptor pd = new PropertyDescriptor(paramName, User.class);//属性描述器:就是得getter或setter方法的类 Method method = pd.getWriteMethod();// setter方法 if(paramValues!=null){ if(paramValues.length==1){ method.invoke(user, paramValues);//有一个数组(参考反射main方法) }else{ method.invoke(user, (Object)paramValues); } } } System.out.println(\"封装后:\"+user); } //实际开发中怎么玩:封装对象(技术点:反射+内省) 参考:java基础加强 private void test4(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println(\"封装前:\"+user); //表单的字段名和User中的属性名一致 Enumeration e = request.getParameterNames(); while(e.hasMoreElements()){ String paramName = (String) e.nextElement();//每一个form中的input域的name 和User中的属性一致 String paramValues[] = request.getParameterValues(paramName); //调用User中对应的写属性:比如当前username,需要调用setUsername(paramValues); PropertyDescriptor pd = new PropertyDescriptor(paramName, User.class);//属性描述器:就是得getter或setter方法的类 Method method = pd.getWriteMethod();// setter方法 if(paramValues!=null){ if(paramValues.length==1){ method.invoke(user, paramValues);//有一个数组(参考反射main方法) }else{ method.invoke(user, (Object)paramValues); } } } System.out.println(\"封装后:\"+user); } //获取所有的请求参数 private void test3(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType(\"text/html;charset=UTF-8\"); PrintWriter out = response.getWriter(); Enumeration e = request.getParameterNames();//获取所有请求参数名 while(e.hasMoreElements()){ String paramName = (String)e.nextElement();//请求参数名 String values [] = request.getParameterValues(paramName); out.write(paramName+\"=\"); for(String v:values){ out.write(v+\",\"); } out.write(\" } } //为什么返回的是String或String[]:用户的所有输出都是字符串 //获取重名的请求参数 private void test2(HttpServletRequest request, HttpServletResponse response) throws IOException { String passwords[] = request.getParameterValues(\"password\"); response.setContentType(\"text/html;charset=UTF-8\"); PrintWriter out = response.getWriter(); for(String p:passwords) out.write(p+\" } //获取单一的请求参数:重名的特例 private void test1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter(\"username\"); String password = request.getParameter(\"password\"); String code = request.getParameter(\"code\"); response.setContentType(\"text/html;charset=UTF-8\"); PrintWriter out = response.getWriter(); out.write(username+\":\"+password+\":\"+code); } public void doPost(HttpServletRequest request, response) throws ServletException, IOException { doGet(request, response); } } HttpServletResponse 因篇幅问题不能全部显示,请点此查看更多更全内容
\");
\");