2015-08-02 5 views
0

Я пытаюсь отправить запрос на мою страницу jsp i.e сведения о производителе и получить атрибут через сеанс, но он выдает ошибку 500.Ошибка ответа 500 не совершена

package com.osahub.disaster.controller; 
    import java.io.IOException; 

    import static com.osahub.disaster.controller.Ofymethodadmin.ofy; 

    import java.io.PrintWriter; 
    import java.util.Iterator; 
    import java.util.List; 

    import javax.servlet.ServletException; 
    import javax.servlet.http.*; 

     import com.osahub.disaster.controller.SendMail; 

     @SuppressWarnings("serial") 
     public class admin extends HttpServlet { 
     public void doPost(HttpServletRequest req, HttpServletResponse resp) 
       throws IOException, ServletException { 
      resp.setContentType("text/plain"); 
      resp.getWriter().println("Data Saved!"); 

     PrintWriter out = resp.getWriter(); 

     String name= req.getParameter("name"); 
     String address = req.getParameter("address"); 
     String email = req.getParameter("email"); 
     String website = req.getParameter("website"); 
     String topex = req.getParameter("topex"); 
     String topdes = req.getParameter("topdes"); 
     String topmob = req.getParameter("topmob"); 
     String year = req.getParameter("year"); 
     String brand = req.getParameter("brand"); 
     String factory = req.getParameter("factory"); 
     String sector = req.getParameter("sector"); 
     String contactpername = req.getParameter("contactpername"); 
     String contactperdes = req.getParameter("contactperdes"); 
     String contactpermob = req.getParameter("contactpermob"); 

     HttpSession currentSession=req.getSession(); 
     currentSession.setAttribute("name", name); 
     req.getRequestDispatcher("ManufacturerDetails.jsp").forward(req, resp); 


     SendMail mail = new SendMail(); 
     mail.send(email, "send Test mail from gae" , "this is the mail body"); 



     ManufacturerDetails ad = new ManufacturerDetails(name,address,email,website,topex,topdes,topmob,year,brand,factory,sector,contactpername,contactperdes,contactpermob); 
     ofy().save().entity(ad); 
     ofy().clear(); 

     List<ManufacturerDetails> li = ofy().load().type(ManufacturerDetails.class).list(); 
     Iterator<ManufacturerDetails> iter = li.iterator(); 

     while(iter.hasNext()) 
     { 
      ManufacturerDetails ad1 = iter.next(); 
      System.out.println(ad1.getName()); 
      System.out.println(ad1.getAddress()); 
      System.out.println(ad1.getEmail()); 
      System.out.println(ad1.getWebsite()); 
      System.out.println(ad1.getTopex()); 
      System.out.println(ad1.getTopdes()); 
      System.out.println(ad1.getTopmob()); 
      System.out.println(ad1.getYear()); 
      System.out.println(ad1.getBrand()); 
      System.out.println(ad1.getFactory()); 
      System.out.println(ad1.getSector()); 
      System.out.println(ad1.getContactpername()); 
      System.out.println(ad1.getContactpermob()); 
      System.out.println(ad1.getContactperdes()); 

     } 
    resp.sendRedirect("about.jsp"); 


    } 
    } 
+0

Что находится в журнале ошибок? – Smutje

ответ

1

Ответ с кодом состояния HTTP 500 может быть вызван любым исключением.

Однако, похоже, что в вашем случае исключение выбрасывается, потому что вы вызываете resp.sendRedirect("about.jsp"); после req.getRequestDispatcher("ManufacturerDetails.jsp").forward(req, resp);.

Вы не можете этого сделать, потому что как только звонок на forward() завершается, ответ завершен. Однако это не означает, что метод doPost() возвращает управление, он продолжает выполнять. Таким образом, resp.sendRedirect("about.jsp"); вызывает исключение java.lang.IllegalStateException, так как ответ уже закрыт.

Вы должны пересмотреть свой метод, и ввести условный оператор:

if (condition) { 
    // do something 
    req.getRequestDispatcher("ManufacturerDetails.jsp").forward(req, resp); 
} else { 
    // do something 
    resp.sendRedirect("about.jsp"); 
} 

Другим вариантом является ввести явный returnreq.getRequestDispatcher("ManufacturerDetails.jsp").forward(req, resp); после.

+1

@Shubham Malik Или, может быть, вам нужно будет называть 'include' вместо' forward'. –

+0

@LittleSanti Очень хорошая точка. Однако из этого перечня кода неясно, какой должен быть правильный поток. Либо он хочет переслать/переадресовать в зависимости от какого-то условия, либо хочет «включить» обработку, выполненную «ManufacturerDetails.jsp». – Constantine

0

500 Исключение возникает из-за проблемы с сервером. Это потому, что вы можете написать оба кода - getRequestDispatcher и sendRedirect для выполнения. И это невозможно. Вы не можете этого сделать, потому что после отправки запроса paramater он завершает работу. Таким образом, вы можете написать оба кода в условии if-else.

 Смежные вопросы

  • Нет связанных вопросов^_^