将字符串变量从jsp传递给servlet

时间:2016-06-01 12:08:56

标签: jsp servlets

我需要帮助将字符串变量从jsp传递给servlet

问题

我的jsp页面充满了从数据库收到的内容。我需要将这些内容从我的jsp页面传递给servlet,该servlet在将数据插入数据库时​​受到了干扰。

这是我的代码

 <%@page import="java.util.List"%>
    <%@page import="web.Products"%>
    <%@page import="java.util.ArrayList"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
     <form name="sform" method="post" action="Save_Products"> 
      <table style="width:40%">
          <tr> <th> Brand Name</th>
              <th> Product Name</th>
              <th> Description</th>
          </tr>
          <tr>
               <td><%
  List<Products> pdts = (List<Products>) request.getAttribute("productlist");
  if(pdts!=null){
    for(Products prod: pdts){
  String brand_name=prod.getBrandname();
      out.println("<br/>"+brand_name);

        } %> 
       <td><%
  if(pdts!=null){
    for(Products prod: pdts){
       out.println("<input type=\"checkbox\" name=\"prod\" checked=\"checked\" value=\""  + prod.getProductname() + "\">"  + prod.getProductname()+"<br>");
        } } %> </td>
       <td><%
       if(pdts!=null){
       for(Products prod: pdts){
        out.println("<input type=\"text\" name=\"desc\" style=\"width:50px; height:22px\" value=\""+prod.getDesc()+"\"/><br/>");
    } 
   }  
   } %> </td>  
   </tr>
    <br/>
    <br/>
    <tr>
        <td></td>
        <td align="center">  <input type="submit" value="Save" name="save"/> </td></tr> 

      </table>
         </form>
    </html>

使用上面的代码,我可以将产品名称和描述的值传递给我的servlet,但是我无法将我的品牌名称的数据传递给我的servlet。请将我的品牌名称值传递给我的servlet 。这是我的servlet代码。

Servlet代码

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;


public class Save_Products extends HttpServlet {
 static final String dbURL = "jdbc:mysql://localhost:3306/pdt";
     static final String dbUser = "root";
     static final String dbPass = "root";
    @Override
     public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         response.setContentType("text/html;charset=UTF-8");    
        PrintWriter out = response.getWriter();
            ResultSet rs=null;
            Connection connection = null;  
            try{
      HttpSession session = request.getSession();
    String brand_name =(String) session.getAttribute("brand_name");
String [] prod_list = request.getParameterValues("prod");
String [] desc_list = request.getParameterValues("desc");
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection (dbURL,dbUser,dbPass);

String sql="insert into pdt_list(brand_name,product_name,desc)values(?,?,?)";
PreparedStatement prep = connection.prepareStatement(sql); 
int num_values = Math.min(prod_list.size(), desc_list.size());

int count_updated = 0;
for(int i = 0; i < num_values; i++){
    prep.setString(1, brand_name);
    prep.setString(2, prod_list[i]);
    prep.setString(3,desc_list[i]);
    count_updated += prep.executeUpdate();
}
if(count_updated>0)
{    
   out.print("Products Saved Successfully...");
 RequestDispatcher rd=request.getRequestDispatcher("Save_Success.jsp");    
            rd.forward(request,response);    
}
else{
    RequestDispatcher rd=request.getRequestDispatcher("Save_Failure.jsp");    
            rd.forward(request,response);   
}

prep.close();
       }
     catch(Exception E){
//Any Exceptions will be caught here
System.out.println("The error is"+E.getMessage());

    }  

        finally {
            try {
                connection.close();
            } 
        catch (Exception ex) {
                System.out.println("The error is"+ex.getMessage());
            }
                }

}

}

1 个答案:

答案 0 :(得分:0)

对于品牌名称设置隐藏的表单输入,请执行以下操作:

out.println("<input type=\"hidden\" name=\"brand_name\" value=\""  + prod.getBrandname() + "\">");

而不是doPost对其他人的喜欢:

request.getParameterValues("brand_name");