2014-12-05 4 views
-1

Мы должны написать веб-приложение с использованием Java, HTML, Beans и JSP. Проблема в том, что я никогда не читал курс HTML или CSS.Сервлет, не направляющийся на страницу JSP

У меня есть базовая HTML-страница с именем index.html, которая берет имя пользователя и фамилию пользователя в текстовом поле с кнопкой отправки. Когда я нажимаю кнопку «Отправить», я получаю «Страница не может быть отображена ошибка». Я сравнил свой код с моими инструкторами, и это очень похоже, поэтому я не уверен, что я делаю неправильно. Любая помощь будет оценена.

Кроме того, не против моего ужасного форматирования.

index.html

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Final Project</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    </head> 
    <body> 
     <h1>Welcome to Banking by Tyler Weaver</h1> 
     <h4>Please Enter your First and Last Name</h4> 
     <form action="BankingControl" method="POST"> 
      <input type="hidden" name="action" value="Menu"> 
      First Name: 
      <input type="text" name="FirstName" required/> <br></> 
      Last Name: 
      <input type="text" name="LastName" required/> <br></> 
      <input type="submit" value="Login"/> 
     </form> 
    </body> 
</html> 

BankingControl.java

import beans.User; 
import database.MySQL; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import utilities.ErrorLogger; 

@WebServlet(name = "BankingControl", urlPatterns = {"/BankingControl"}) 
public class BankingControl extends HttpServlet { 

    private static final String mysqlPrefix = "jdbc:mysql://"; 
    private static final String hostname = "cs3db.bloomu.edu"; 
    private static final String databaseName = "CS3"; 
    private static final String databaseURL = mysqlPrefix + hostname + "/" + databaseName; 
    private static final String userName = "tgw46366"; 
    private static final String password = "tgw46366"; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 

     //Creates mysql database connection with specified information 
     MySQL mysql = new MySQL(databaseURL, userName, password); 

     //The URL where processor will send. 
     String JSP_URL = "/index.html"; 

     //Tries making a connection to the database 
     try (Connection conn = mysql.getConnection()) { 
      ErrorLogger.log(Level.INFO, "Database Connection Obtained"); 

      //Retrieve action from page 
      String action = request.getParameter("action").trim(); 
      //If action is null, make it menu 
      if (action == null) { 
       action = "Menu"; 
      } 

      User user = new User(); 
      user.setFirstName(request.getParameter("firstName").trim()); 
      user.setLastName(request.getParameter("lastName").trim()); 
      request.setAttribute("User", user); 

      //Check to see if action is menu 
      if (action.equalsIgnoreCase("Menu")) { 
       //Place to send information 
       JSP_URL = "/Menu.jsp"; 

       ErrorLogger.log(Level.INFO, "User " + user.getFirstName() + " " 
         + user.getLastName() 
         + " logged in - Menu Page Returned"); 
      } else if (action.equalsIgnoreCase("NewCustomer")) { 
       JSP_URL = "/NewCustomer.jsp"; 

       ErrorLogger.log(Level.INFO, "New Customer Selected"); 
      } else if (action.equalsIgnoreCase("NewAccount")) { 
       JSP_URL = "/NewAccount.jsp"; 

       ErrorLogger.log(Level.INFO, "New Account Selected"); 
      } else if (action.equalsIgnoreCase("AccountTransaction")) { 
       JSP_URL = "/Transaction.jsp"; 

       ErrorLogger.log(Level.INFO, "Account Transaction Selected"); 
      } else if (action.equalsIgnoreCase("Logout")) { 
       JSP_URL = "/index.html"; 

       ErrorLogger.log(Level.INFO, "Logout Selected"); 
      } else { 
       ErrorLogger.log(Level.WARNING, 
         "Invalid Option -- index.html Returned"); 
      } 

      //If connection cannot be made, throw here 
     } catch (SQLException ex) { 
      ErrorLogger.log(Level.SEVERE, 
        "Not Making a Database Connection at this Time", ex); 
     } 

     //forward to correct JSP 
     getServletContext() 
       .getRequestDispatcher(JSP_URL) 
       .forward(request, response); 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    } 

} 

MySQL.java

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import utilities.ErrorLogger; 

public class MySQL { 

    private final String databaseURL; 
    private final String userName; 
    private final String password; 

    public MySQL(String databaseURL, String userName, String password) { 
     this.databaseURL = databaseURL; 
     this.userName = userName; 
     this.password = password; 
     initDB(); 
    } 

    private void initDB() { 
     try { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); //Not needed for MySQL - here for show only 
     } catch (ClassNotFoundException ex) { 
      ErrorLogger.log(Level.SEVERE, "Could not find the class com.mysql.jdbc.Driver \n" 
        + "Program will now exit. ", ex); 
      System.exit(1); 
     } catch (InstantiationException ex) { 
      ErrorLogger.log(Level.SEVERE, "Could not instaniate the class com.mysql.jdbc.Driver \n" 
        + "Program will now exit. ", ex); 
      System.exit(1); 
     } catch (IllegalAccessException ex) { 
      ErrorLogger.log(Level.SEVERE, "Could not access the class com.mysql.jdbc.Driver \n" 
        + "Program will now exit. ", ex); 
      System.exit(1); 
     } 
     try { 
      Connection conn = DriverManager.getConnection(databaseURL, userName, password); 
      conn.close(); 
     } catch (SQLException ex) { 
      ErrorLogger.log(Level.SEVERE, "Could not connect to the database. " 
        + "Database string = " 
        + databaseURL + " user = " + userName + " password " + password, ex); 
      System.exit(1); 
     } 
    } 

    public Connection getConnection() { 
     Connection conn = null; 
     try { 
      conn = DriverManager.getConnection(databaseURL, userName, password); 
     } catch (SQLException e) { 
      ErrorLogger.log(Level.SEVERE, "Could not connect to the database. " 
        + "Database string = " 
        + databaseURL + " user = " + userName + " password " + password); 
      System.exit(1); 
     } 
     return conn; 
    } 

    public void closeConnection(Connection connection) { 
     if (connection != null) { 
      try { 
       connection.close(); 
      } catch (SQLException e) { 
       ErrorLogger.log(Level.SEVERE, "SQL Exception is thrown while " 
         + "trying to close a Connection object. The connection " 
         + "object was not null.", e); 
      } 
     } 
    } 

} 

ErrorLogger.java

import java.io.IOException; 
import java.sql.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.logging.FileHandler; 
import java.util.logging.Handler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class ErrorLogger { 

    private static final String errorFileName = "SQLErrorLogger"; 
    public static boolean showLogInErrorWindow = true; 

    private static Logger errorLogger; 

    private static void initializeLogging() throws IOException { 
     String logFile = getLogfileName(); 
     errorLogger = Logger.getLogger(logFile); 
     Handler handler = new FileHandler(logFile); 
     handler.setFormatter(new java.util.logging.SimpleFormatter()); 
     if (showLogInErrorWindow) { 
      errorLogger.setUseParentHandlers(true); 
     } else { 
      errorLogger.setUseParentHandlers(false); 
     } 
     errorLogger.addHandler(handler); 
    } 

    private static String getFormattedDate(Date date) { 
     DateFormat format; 
     format = new SimpleDateFormat("MM-dd-yyyy"); 

     return (format.format(date)); 
    } 

    private static String getFormattedTime(Date date) { 
     DateFormat format; 
     format = new SimpleDateFormat("hh.mm.a"); 

     return (format.format(date)); 
    } 

    private static String getDateTime(Date date) { 
     String sDateTime = getFormattedDate(date) + "_" 
       + getFormattedTime(date); 
     return sDateTime; 
    } 

    private static String getLogfileName() { 
     String logFileName = errorFileName; 

     Date date = new Date(System.currentTimeMillis()); 
     String sFormattedDateTime = getDateTime(date); 
     logFileName += "_" + sFormattedDateTime; 
     logFileName += ".log"; 

     return logFileName; 
    } 

    public static String getNewLogFileName(String logFileBase, String logFileExt) { 
     String logFile = logFileBase; 
     Date date = new Date(System.currentTimeMillis()); 
     String sFormattedDateTime = getDateTime(date); 
     logFile += "_" + sFormattedDateTime; 
     logFile += logFileExt; 
     return logFile; 
    } 

    public static void log(Level level, String message, Throwable ex) { 
     if (errorLogger == null) { 
      initLogger(); 
     } 
     errorLogger.log(level, message, ex); 
    } 

    public static void log(Level level, String message) { 
     if (errorLogger == null) { 
      initLogger(); 
     } 
     errorLogger.log(level, message); 
    } 

    private static void initLogger() { 
     try { 
      initializeLogging(); 
     } catch (IOException ex) { 
      errorLogger = Logger.getLogger(getLogfileName());//Will not write to a file 
      errorLogger.log(Level.SEVERE, "Could not create a file handler for teh error logger"); 
     } 
    } 

    public static void main(String[] args) { 
     ErrorLogger.log(Level.SEVERE, "Test error Message"); 
    } 

} 

Это должен быть минимум, необходимый для воспроизведения того, что является неправильным, кроме базы данных и информации образца. Все страницы JSP загружаются индивидуально, но не начинаются с index.html. Это затрудняет отладку остальной части приложения. Любая помощь будет оценена.

Каталог: Director img


Изображение ошибок! First image

ErrorImage

+0

Вы должны предоставить web.xml для заполнения и того, что вы подразумеваете под ошибкой (проверка на консоль - ошибка, возвращаемая сервером, или браузер не хотел вообще подключаться). Ребята, покажите минимальное усилие, пожалуйста! –

+0

Я бы хотел увидеть структуру каталогов и другие контроллеры, которые у вас могут быть. Вы перенаправляетесь на ресурс, но я не знаю, находится ли этот ресурс в том же каталоге, что и root, или он где-то еще? Приветствия. – lupus137

+0

@MichalWilkowski Как показать web.xml? Я перечислил свою структуру каталогов выше! –

ответ

1

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

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