2015-01-21 3 views
0

Я пытаюсь загрузить изображение в базу данных mysql, используя веб-службу SOAP, разработанную с Java в сервере GlassFish. Этот веб-сервис потребляется клиентом в JSP. Я много искал, но не смог найти правильный ответ.Как загрузить изображение в базу данных mysql с помощью JAX-WS с помощью JSP-клиента?

Может ли кто-нибудь мне помочь? Заранее спасибо!

+0

JSP также является серверной техникой. Итак, у вас есть две системы, сообщающие через мыло, почему JSP? – Stefan

ответ

-1

Вы должны создать клиентский код для использования веб-службы с использованием JAX-WS или другой структуры, такой как CXF, Axis или Spring WS. Клиентский код будет находиться в контроллере вашего приложения. JSP будет выступать в качестве представления для отправки данных для отправки в службу контроллеру, а затем контроллер будет взаимодействовать с веб-службой.

Вот скелет JSP и контроллер:

<form action="${request.contextPath}/path/to/controller" method="POST" enctype="multipart/form-data"> 
    File to upload: 
    <input type="file" name="fileData" /> 
    <br /> 
    <!-- probably more fields, depending on your requirements... --> 
    <input type="submit" value="Upload file"> 
</form> 

код контроллера (так как вы не специфичные определение специфических рамок для использования, я использую простой Servlet):

@WebServlet("/path/to/controller") 
public class FileUploadToWSServlet { 

    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

     //consume the data from JSP 

     //pass the data received from JSP 
     //to send it to consume the JAX-WS service 
    } 
} 

Попытка использовать веб-службу непосредственно из JSP выполнима через скриптлеты, но ее использование следует избегать, поэтому этот подход не рекомендуется и не является частью моего ответа.

+0

@ downvoter любая причина для downvote? –

+0

Спасибо! Не обращайте внимания на нисходящего, они притворяются экспертами. –

0

Это полный ответ на мой вопрос. Я не верю, что у вас будут проблемы с страницей .jsp, вам просто нужно создать форму со входом, как вы пожелаете. Код, который обрабатывает загрузку, находится ниже:

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String name = ""; 
    String comment = ""; 

    if(ServletFileUpload.isMultipartContent(request)){ 
     try { 

      List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 

      for(FileItem item : multiparts){ 
       if(!item.isFormField()){ 
        name = new File(item.getName()).getName(); 
        item.write(new File(UPLOAD_DIRECTORY + File.separator + name)); 
       } else { 
        if ("comment".equals(item.getFieldName())) { 
         comment = item.getString(); 
        // Whatever you have to do with the comment 
        } 
       } 
      } 
      addPhoto((int) request.getSession().getAttribute("id"), UPLOAD_DIRECTORY + File.separator + name , comment); 
      request.setAttribute("message", "File Uploaded Successfully"); 
     } catch (Exception ex) { 
      request.setAttribute("message", "File Upload Failed due to " + ex); 
     }   
    }else{ 
     request.setAttribute("message","Sorry this Servlet only handles file upload request"); 
    } 
    request.getRequestDispatcher("/index.jsp").forward(request, response); 
} 
Смежные вопросы