servlet用的baseservlet继承,反射获取url地址中的method的地址
@WebServlet("/orders")
public class OrderServlet extends BaseServlet{
// 3.增加配送通知单
public void addOrder(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// 测试是否调用此方法
System.out.println("进入addOrder()");
// 获取来自providerManage.jsp中id为fm的form表单传过来的数据,用来新增配送通知单.
String cidStr = req.getParameter("cid");
String username = req.getParameter("username");
String telephone = req.getParameter("telephone");
String address = req.getParameter("address");
String name = req.getParameter("name");
//测试数据接收是否成功
System.out.println("cid : "+cidStr);
System.out.println("username : "+username);
System.out.println("address : "+address);
System.out.println("telephone : "+telephone);
// 把有些参数转换成int类,因为这些参数在数据库中是int类型
int cid = Integer.parseInt(cidStr);
OrderService orderService = new OrderService();
orderService.addOrder(username, username, address, telephone, cid);
// 获取该用户通知单,再次发送至页面
OrderService service = new OrderService();
List<Orders> orderList = service.findAllOrdersByCid(cid);
req.setAttribute("orderList", orderList);
System.out.println("orderList : "+orderList);
req.getRequestDispatcher("customer_orderlist.jsp").forward(req, resp);
System.out.println("addOrder结束");
}
jsp页面中的表单发送至该servlet,但是控制台打印始终显示为空
<form action="${pageContext.request.contextPath}/orders?oid=${oid}&cid=${cid}">
<table border="1px">
请教同学后解决了问题
1.首先jsp页面中加上以下代码
<form action="${pageContext.request.contextPath}/orders?oid=${oid}&cid=${cid}">
<table border="1px">
<!--添加下面的input-->
<input type="hidden" name="method" value="addOrder" />
一个隐藏的input
2.再把orders?后面的oid=
{oid}&cid=
{oid}&cid=
{cid}给删掉
<form action="${pageContext.request.contextPath}/orders">
<table border="1px">
<!--添加下面的input-->
<input type="hidden" name="method" value="addOrder" />
原因: servlet用了反射的方法来获取方法名,在servlet方法中用req.getParameters(),就无法获取jsp中form传来的数据,
因此,在jsp中加上一个隐藏的input,把方法名传过去也一样,其他数据也可用隐藏的input传到servlet去
版权声明:本文为huayf1989原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。