0

I need help in passing a string variable from jsp to servlet

Issue

My jsp page is filled with the content received from the database. I need to pass those content from my jsp page to a servlet which is invloved in the insertion of data into the database.

This is my code

 <%@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>

Using the above code I can able to pass the value of product name and description to my servlet but I am not able to pass the data of my brand name to my servlet .Help me in passing the Brand name value to my servlet. This is my servlet code.

Servlet code

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());
            }
                }

}

}
sound
  • 55
  • 2
  • 11
  • This is not specifically you have asked but using *Scriplets* is highly discouraged these days and would recommend you to switch to JSTL quickly. – Dhaval Simaria Jun 01 '16 at 12:24
  • Is it possible to pass the String brand_name value from jsp to servlet without using JSTL implementation? – sound Jun 01 '16 at 12:34

1 Answers1

1

For Brand name set a hidden form input, do something like this:

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

and than in your doPost do like for the others:

request.getParameterValues("brand_name");
KlajdPaja
  • 959
  • 1
  • 8
  • 17