2015-01-12 10 views
0

Я пытаюсь создать сервлет, который считывает данные из формы HTML с классом GetTicketInfo и вставляет данные в базу данных MySQL с классом WriteToDatabase. Проблема в том, что когда я заполнил форму HTML, и я нажму кнопку «Зарегистрировать билет», который должен начать процесс вставки данных в базу данных, я получаю эту ошибку в своем браузере «HTTP Status 405 - HTTP-метод GET не поддерживается этим URL-адресом «. URL для моего index.html, который содержит форму, является http://localhost/IssueHandler/index.html я использую 7.0.34 сервера Apache TomcatHTTP-метод GET не поддерживается этим URL-адресом, Status 405

консоль не печатает никаких ошибок, но два предупреждения:

WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:CDM' did not find a matching property. 
jan 12, 2015 5:42:06 EM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:IssueHandler' did not find a matching property. 
jan 12, 2015 5:42:07 EM org.apache.catalina.core.AprLifecycleListener initializeSSL 

Я угадывая, что это имеет какое-то отношение к форме, которая не может найти сервлет, но я честно понятия не имею. Я попытался добавить теги-сопоставления сервлетов и т. Д. В файл web.xml, но это не помогло.

GetTicketInfo

package com.issue.handler; 

import java.io.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 

import javax.servlet.*; 
import javax.servlet.annotation.*; 
import javax.servlet.http.*; 

@WebServlet("/issueHandler") 
public class GetTicketInfo extends HttpServlet { 


    String ticketID1, ticketOwner1, ticketTitle1, ticketHandler1, ticketCategory1, ticketDescription1, ticketDate1; 

    public void doGet(HttpServletRequest request, 
      HttpServletResponse response, String tID) { 
     tID=request.getParameter("ticketID"); 
     ticketID1=tID; 

    } 

    public String getTicketID(){ 

     return ticketID1; 

    } 


    public void setTicketOwner(HttpServletRequest request, 
      HttpServletResponse response, String tOW) { 
     tOW=request.getParameter("ticketOwner"); 
     ticketOwner1 = tOW; 

    } 

    public String getTicketOwner(){ 

     return ticketOwner1; 

    } 

    public void setTicketTitle(HttpServletRequest request, 
      HttpServletResponse response, String tTI) { 
     tTI=request.getParameter("ticketTitle"); 
     ticketTitle1 = tTI; 

    } 

    public String getTicketTitle(){ 

     return ticketTitle1; 

    } 

    public void setTicketHandler(HttpServletRequest request, 
      HttpServletResponse response, String tHA) { 
     tHA=request.getParameter("ticketHandler"); 

     ticketHandler1 = tHA; 

    } 

    public String getTicketHandler(){ 

     return ticketHandler1; 

    } 

    public void setTicketCategory(HttpServletRequest request, 
      HttpServletResponse response, String tCA) { 
     tCA=request.getParameter("ticketCategory"); 

     ticketCategory1 = tCA; 

    } 

    public String getTicketCategory(){ 

     return ticketCategory1; 

    } 

    public void setTicketDescription(HttpServletRequest request, 
      HttpServletResponse response, String tDE) { 
     tDE=request.getParameter("ticketDescription"); 

     ticketDescription1 = tDE; 

    } 

    public String getTicketDescription(){ 

     return ticketDescription1; 

    } 

    public void setTicketDate(HttpServletRequest request, 
      HttpServletResponse response, String tDA) { 
     tDA=request.getParameter("ticketDate"); 

     ticketDate1 = tDA; 

    } 

    public String getTicketDate(){ 

     return ticketDate1; 

    } 



}//GetTicketInfo 

WriteToDatabase

package com.issue.handler; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class WriteToDatabase { 



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


     GetTicketInfo myGetTicketInfo = new GetTicketInfo(); 






     try( PrintWriter out = response.getWriter()) { 
      String host = "jdbc:derby://localhost:1527/school_server"; 
      String uName = "testuser"; 
      String uPass = "testuser"; 
      Connection con = DriverManager.getConnection(host, uName, uPass); 



      String query = "INSERT INTO issues (ticketID, ticketOwner, ticketTitle, ticketHandler, ticketCategory, ticketDescription, ticketDate)"+ "VALUES(?,?,?,?,?,?,?)"; 

      PreparedStatement preparedStmt = con.prepareStatement (query); 


      preparedStmt.setString(1,myGetTicketInfo.getTicketID()); 
      preparedStmt.setString(2,myGetTicketInfo.getTicketOwner()); 
      preparedStmt.setString(3,myGetTicketInfo.getTicketTitle()); 
      preparedStmt.setString(4,myGetTicketInfo.getTicketHandler()); 
      preparedStmt.setString(5,myGetTicketInfo.getTicketCategory()); 
      preparedStmt.setString(6,myGetTicketInfo.getTicketDescription()); 
      preparedStmt.setString(7,myGetTicketInfo.getTicketDescription()); 

      preparedStmt.execute(); 

     }catch (Exception e) { 
      System.err.println("Got an exception!"); 
      System.err.println(e.getMessage());} 



    } 


} 

индекс

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Issue Handler</title> 
</head> 
<body> 
<h1>Issue Handler</h1> 

<FORM ACTION="issueHandler" method="get"> 
    Ticket ID: 
    <INPUT TYPE="TEXT" NAME="ticketID" VALUE=""><BR> 

    Ticket Owner: 
    <INPUT TYPE="TEXT" NAME="ticketOwner" VALUE=""><BR> 

    Ticket Title: 
    <INPUT TYPE="TEXT" NAME="ticketTitle" VALUE=""><BR> 

    Ticket Handler: 
    <INPUT TYPE="TEXT" NAME="ticketHandler" VALUE=""><BR> 

    Ticket Category: 
    <INPUT TYPE="TEXT" NAME="ticketCategory" VALUE=""><BR> 

    Ticket Description: 
    <INPUT TYPE="TEXT" NAME="ticketDescription" VALUE=""><BR> 

    Ticket Date: 
    <INPUT TYPE="TEXT" NAME="ticketDate" VALUE=""><BR> 



    <INPUT TYPE="SUBMIT" VALUE="Register Ticket"> 
</FORM> 

</body> 
</html> 

web.xml

<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
    <display-name>Issue Handler</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 


</web-app> 
+0

Чтобы отправить данные формы на сервер, вы должны использовать POST. – pbespechnyi

+0

обновлен в соответствии с вашими комментариями. Однако никаких различий относительно моей ошибки. – bork

ответ

0

Вы не дали переопределение HttpServlet#doGet(HttpServletRequest, HttpServletResponse). Это метод, используемый контейнером Servlet.

Вы ввели

public void doGet(HttpServletRequest request, 
     HttpServletResponse response, String tID) { 
    tID=request.getParameter("ticketID"); 
    ticketID1=tID; 

} 

который является совершенно не связан метод.

Подсказка: аннотировать методы, которые, по вашему мнению, вы переопределяете @Override.

+0

Я немного чувствую себя здесь, я получаю эту ошибку в коде, если добавить аннотацию @Override. «Метод doGet (HttpServletRequest, HttpServletResponse, String) типа GetTicketInfo должен переопределить или реализовать метод супертипа« – bork

+0

@bork Точно. Этот метод не отменяет ничего. Вы используете '@ Override', чтобы убедиться, что это то, что вы делаете. Предоставленный метод 'doGet' не связан ни с одним методом родительского класса. Вам нужно переопределить метод родительского класса 'doGet', у которого есть подпись, с которой я связан. –

+0

Спасибо. Я теперь переопределяю метод, и по-прежнему получаю ту же ошибку в своем браузере, что и раньше. – bork

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