导入commons-beanutils.jar包
package utils;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
public class WebUtils {
public static <T> T copyParamToBean(Map value, T bean){
//把Map中的值注入到对应的JavaBean属性中
System.out.println("注入之前"+bean);
try {
BeanUtils.populate(bean,value);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println("注入之后"+bean);
return bean;
}
public static int parseInt(String strInt,int defaultValue){
try {
return Integer.parseInt(strInt);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return defaultValue;
}
}
获取的参数名称和bean中的属性名要一致,才可以注入成功
public class BookServlet extends BaseServlet {
private BookService bookService=new BookServiceImpl();
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
//添加图书
protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//请求的参数一次性注入到Bean对象中
Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());
//添加图书
bookService.addBook(book);
resp.sendRedirect("http://localhost:8080/book/manager/bookServlet?action=list");
//用重定向,重定向是两次请求,请求转发是一次请求,功能键F5会提交最后一次请求
//req.getRequestDispatcher("/manager/bookServlet?action=list").forward(req,resp);
}