From 5ec93d28d8c113e7d93e8e3eaddb0a861aedf36b Mon Sep 17 00:00:00 2001 From: shiven Date: Sat, 12 Oct 2024 18:26:35 +0530 Subject: [PATCH] Updated AddBookServlet and RemoveBookServlet; improved login handling --- .classpath | 26 +++++- .project | 88 +++++++++---------- src/main/java/servlets/AddBookServlet.java | 40 ++++----- .../java/servlets/CustomerLoginServlet.java | 53 +++++++---- src/main/java/servlets/RemoveBookServlet.java | 43 ++++++--- 5 files changed, 151 insertions(+), 99 deletions(-) diff --git a/.classpath b/.classpath index b4f58a5a..715cb653 100644 --- a/.classpath +++ b/.classpath @@ -14,7 +14,6 @@ - @@ -27,6 +26,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project index 83518ba9..45bc2ef7 100644 --- a/.project +++ b/.project @@ -1,48 +1,48 @@ - onlinebookstore - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.jdt.core.javanature - org.eclipse.wst.jsdt.core.jsNature + onlinebookstore + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature - - - 1665573956898 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - + + + + 1665573956898 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/src/main/java/servlets/AddBookServlet.java b/src/main/java/servlets/AddBookServlet.java index e6697a06..d25f1a69 100644 --- a/src/main/java/servlets/AddBookServlet.java +++ b/src/main/java/servlets/AddBookServlet.java @@ -19,9 +19,11 @@ import com.bittercode.util.StoreUtil; public class AddBookServlet extends HttpServlet { + private static final long serialVersionUID = 1L; BookService bookService = new BookServiceImpl(); - public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { PrintWriter pw = res.getWriter(); res.setContentType(BookStoreConstants.CONTENT_TYPE_TEXT_HTML); @@ -37,52 +39,48 @@ public void service(HttpServletRequest req, HttpServletResponse res) throws IOEx rd.include(req, res); StoreUtil.setActiveTab(pw, "addbook"); pw.println("
"); - if(bName == null || bName.isBlank()) { - //render the add book form; + + if (bName == null || bName.trim().isEmpty()) { // Use trim() for better handling of blank spaces showAddBookForm(pw); return; - } //else process the add book - - + } + try { String uniqueID = UUID.randomUUID().toString(); String bCode = uniqueID; String bAuthor = req.getParameter(BooksDBConstants.COLUMN_AUTHOR); - double bPrice = Integer.parseInt(req.getParameter(BooksDBConstants.COLUMN_PRICE)); + double bPrice = Double.parseDouble(req.getParameter(BooksDBConstants.COLUMN_PRICE)); int bQty = Integer.parseInt(req.getParameter(BooksDBConstants.COLUMN_QUANTITY)); Book book = new Book(bCode, bName, bAuthor, bPrice, bQty); String message = bookService.addBook(book); + if ("SUCCESS".equalsIgnoreCase(message)) { - pw.println( - "
Book Detail Updated Successfully!
Add More Books
"); + pw.println("
Book Detail Updated Successfully!
Add More Books
"); } else { - pw.println("
Failed to Add Books! Fill up CareFully
"); - //rd.include(req, res); + pw.println("
Failed to Add Books! Fill up Carefully
"); } + } catch (NumberFormatException e) { + pw.println("
Invalid number format. Please check your input.
"); } catch (Exception e) { - e.printStackTrace(); - pw.println("
Failed to Add Books! Fill up CareFully
"); + e.printStackTrace(); // Optionally log this to a logging framework + pw.println("
Failed to Add Books! Please try again later.
"); } } - + private static void showAddBookForm(PrintWriter pw) { String form = "\r\n" + " \r\n" + " \r\n" - + " \r\n" - + " \r\n" + + " \r\n" + "
\r\n" + "
\r\n" - + " \r\n" + "
\r\n" + "
\r\n" - + "
\r\n" + + "
\r\n" // Added step for decimal support + "
\r\n" - + " \r\n" + + " \r\n" + "
\r\n" + "
"; pw.println(form); } diff --git a/src/main/java/servlets/CustomerLoginServlet.java b/src/main/java/servlets/CustomerLoginServlet.java index 9fc293d8..f4459515 100644 --- a/src/main/java/servlets/CustomerLoginServlet.java +++ b/src/main/java/servlets/CustomerLoginServlet.java @@ -17,40 +17,55 @@ import com.bittercode.service.impl.UserServiceImpl; public class CustomerLoginServlet extends HttpServlet { + private static final long serialVersionUID = 1L; UserService authService = new UserServiceImpl(); - public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + res.setContentType(BookStoreConstants.CONTENT_TYPE_TEXT_HTML + "; charset=UTF-8"); PrintWriter pw = res.getWriter(); - res.setContentType(BookStoreConstants.CONTENT_TYPE_TEXT_HTML); + String uName = req.getParameter(UsersDBConstants.COLUMN_USERNAME); String pWord = req.getParameter(UsersDBConstants.COLUMN_PASSWORD); - User user = authService.login(UserRole.CUSTOMER, uName, pWord, req.getSession()); + User user = null; try { + user = authService.login(UserRole.CUSTOMER, uName, pWord, req.getSession()); if (user != null) { - RequestDispatcher rd = req.getRequestDispatcher("CustomerHome.html"); rd.include(req, res); - pw.println("

Welcome to Online
Book Store

\r\n" - + "
\r\n" - + " \r\n" - + " \r\n" - + " \r\n" - + " \r\n" - + "

Welcome "+user.getFirstName()+", Happy Learning !!

"); - + pw.println("

Welcome to Online
Book Store

\r\n" + + "
\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "

Welcome " + escapeHtml(user.getFirstName()) + ", Happy Learning !!

"); } else { - - RequestDispatcher rd = req.getRequestDispatcher("CustomerLogin.html"); - rd.include(req, res); - pw.println("
Incorrect UserName or PassWord
"); + handleLoginFailure(req, res, pw); } - } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); // Log this to a logging framework + pw.println("
Something went wrong. Please try again later.
"); } } -} \ No newline at end of file + private void handleLoginFailure(HttpServletRequest req, HttpServletResponse res, PrintWriter pw) throws ServletException, IOException { + RequestDispatcher rd = req.getRequestDispatcher("CustomerLogin.html"); + rd.include(req, res); + pw.println("
Incorrect Username or Password
"); + } + + private String escapeHtml(String input) { + if (input == null) { + return ""; + } + return input.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace("\"", """) + .replace("'", "'"); + } +} diff --git a/src/main/java/servlets/RemoveBookServlet.java b/src/main/java/servlets/RemoveBookServlet.java index a063fae8..b9ba5972 100644 --- a/src/main/java/servlets/RemoveBookServlet.java +++ b/src/main/java/servlets/RemoveBookServlet.java @@ -16,12 +16,32 @@ import com.bittercode.util.StoreUtil; public class RemoveBookServlet extends HttpServlet { - + private static final long serialVersionUID = 1L; BookService bookService = new BookServiceImpl(); - public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + // Show the remove book form for GET requests PrintWriter pw = res.getWriter(); - res.setContentType("text/html"); + res.setContentType("text/html; charset=UTF-8"); + + if (!StoreUtil.isLoggedIn(UserRole.SELLER, req.getSession())) { + RequestDispatcher rd = req.getRequestDispatcher("SellerLogin.html"); + rd.include(req, res); + pw.println("
Please Login First to Continue!!
"); + return; + } + + pw.println("
"); + showRemoveBookForm(pw); + pw.println("
"); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + PrintWriter pw = res.getWriter(); + res.setContentType("text/html; charset=UTF-8"); + if (!StoreUtil.isLoggedIn(UserRole.SELLER, req.getSession())) { RequestDispatcher rd = req.getRequestDispatcher("SellerLogin.html"); rd.include(req, res); @@ -35,26 +55,23 @@ public void service(HttpServletRequest req, HttpServletResponse res) throws IOEx rd.include(req, res); StoreUtil.setActiveTab(pw, "removebook"); pw.println("
"); - if (bookId == null || bookId.isBlank()) { - // render the remove book form; + + if (bookId == null || bookId.trim().isEmpty()) { + // Render the remove book form again if no bookId is provided showRemoveBookForm(pw); return; - } // else continue + } String responseCode = bookService.deleteBookById(bookId.trim()); if (ResponseCode.SUCCESS.name().equalsIgnoreCase(responseCode)) { pw.println("
Book Removed Successfully
"); - pw.println( - "
Remove more Books
"); - } else { pw.println("
Book Not Available In The Store
"); - pw.println( - "
Remove more Books
"); } + pw.println("
Remove more Books
"); pw.println("
"); } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); // Optionally log this to a logging framework pw.println("
Failed to Remove Books! Try Again
"); } } @@ -69,10 +86,8 @@ private static void showRemoveBookForm(PrintWriter pw) { + " \r\n" + " \r\n" + " \r\n" - + "\r\n" + " \r\n" + " "; pw.println(form); } - }