1. 程式人生 > >解決form表單資料提交不到servlet中去的問題

解決form表單資料提交不到servlet中去的問題

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={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去