2015-07-30 4 views
1

Пожалуйста, помогите мне, я не можите сделать это на 3-й день ((Glassfish 4 URL отображение

Вот мой файл web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <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"> 

     <servlet> 
      <servlet-name>ebookshopservlet</servlet-name> 
      <servlet-class> 
       ebookshop.ShoppingServlet 
      </servlet-class> 

     </servlet> 

    <servlet-mapping> 
     <servlet-name>ebookshopservlet</servlet-name> 
     <url-pattern>/eshop</url-pattern> 
    </servlet-mapping> 
</web-app> 

У меня есть Jsp проект, и есть проблема с/ebookshop/ESHOP URL, он постоянно пишет ошибку 404 -. не нашел, что моя ошибка в настройке этого веб-сервер и приложение

есть мой сервлет

package ebookshop; 
import java.util.Vector; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletContext; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
import javax.servlet.http.HttpServletResponse; 
import ebookshop.Book; 
import javax.servlet.annotation.WebServlet; 

/** 
* 
* @author Ilqar 
*/ 
public class ShoppingServlet extends HttpServlet{ 

    public void init(ServletConfig conf) throws ServletException { 
     super.init(conf); 
    } 
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException 
    { 
     doPost(req,res); 
    } 
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException 
    { 
      // @WebServlet(name = "ShoppingServlet", urlPatterns = {"/eshop"}) 

     HttpSession session; 
     session = req.getSession(); 
     @SuppressWarnings("unchecked") 
     Vector<Book> shoplist=(Vector<Book>) session.getAttribute("ebookshop.cart"); 
     String do_this=req.getParameter("do_this"); 

     if (do_this==null) 
     { 
      Vector<String> blist=new Vector<String>(); 
      blist.addElement("Learn HTML5 and JavaScript for iOS. Scott Preston $39.99"); 
      blist.addElement("Java 7 for Absolute Beginners. Jay Bryant $39.99"); 
      blist.addElement("Beginning Android 4. Livingston $39.99"); 
      blist.addElement("Pro Spatial with SQL Server 2012. Alastair Aitchinson $59.99"); 
      blist.addElement("Beginning Database Design. Clare Churcher $34.99"); 
      session.setAttribute("ebookshop.list", blist); 

      ServletContext sc=getServletContext(); 
      RequestDispatcher rd=sc.getRequestDispatcher("/"); 
      rd.forward(req, res); 
     } 
     else { 

      if (do_this.equals("checkout")) 
      { 
       float dollars=0; 
       int books=0; 
       for (Book abook: shoplist) 
       { 
        dollars+=abook.getPrice()*abook.getQuantity(); 
        books+=abook.getQuantity(); 
       } 
       req.setAttribute("dollars", new Float(dollars).toString()); 
       req.setAttribute("books", new Integer(books).toString()); 
       ServletContext sc=getServletContext(); 
       RequestDispatcher rd=sc.getRequestDispatcher("/Checkout.jsp"); 
       rd.forward(req, res); 
      } // end if (do_this.equals("checkout")) 
      else { 
      if (do_this.equals("remove")){ 
       String pos=req.getParameter("position"); 
       shoplist.removeElementAt((new Integer(pos))); 
      } 
      else if (do_this.equals("add")) 
      { 
       boolean found=false; 
       Book abook=getBook(req); 

       if (shoplist==null) 
       { 
        shoplist=new Vector<Book>(); 
        shoplist.addElement(abook); 
       } 
       else 
       { 
        for (int i=0;i<shoplist.size() && !found;i++) 
        { 
         Book b= (Book) shoplist.elementAt(i); 
         if (b.getTitle().equals(abook.getTitle())) 
         { 
          b.setQuantity(b.getQuantity()+abook.getQuantity()); 
          shoplist.setElementAt(b, i); 
          found=true; 
         } 
        } 
        if (!found) 
        { 
         shoplist.addElement(abook); 
        } 
       } 
      } 
      session.setAttribute("ebookshop.cart", shoplist); 
      ServletContext sc=getServletContext(); 
      RequestDispatcher rd=sc.getRequestDispatcher("/"); 

      rd.forward(req, res); 

      } 
     } 
} 

    public Book getBook(HttpServletRequest req){ 

     String myBook=req.getParameter("book"); 
     int n=myBook.indexOf("$"); 
     String name=myBook.substring(0, n); 
     String price=myBook.substring(n+1); 
     String qty=req.getParameter("qty"); 

     return new Book(name,Float.parseFloat(price),Integer.parseInt(qty)); 
    } 
} 
012?

и мой index.jsp файл

<%-- 
    Document : ebookshop_index 
    Created on : 22.07.2015, 21:33:24 
    Author  : Ilqar 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%> 
<%@page session="true" import="java.util.*,ebookshop.Book" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>E-bookshop</title> 
     <style type="text/css"> 
      body {background-color: gray; font-size: 10pt;} 
      h1 {font-size: 20pt} 
      table {background-color: white;} 
     </style> 
    </head> 
    <body> 
     <h1>Your online Bookshop!</h1> 

     <% //Scriplet 1 checks whether the booklist is ready 
      Vector<ebookshop.Book> booklist=(Vector<ebookshop.Book>)session.getAttribute("ebookshop.list"); 

      if (booklist==null) 
      { 
       response.sendRedirect("/ebookshop/eshop"); 
      } 
      else { 
     %> 
     <form name="addForm" method="POST" action="eshop"> 
      <input type="hidden" name="do_this" value="add"> 
      Book: 
      <select name="book"> 

       <% //Scriplet the booklist to the selection control 
       for (int i=0;i<booklist.size();i++) 
       { 
       out.println("<option>"+booklist.elementAt(i).getTitle()+"</option>"); 
       } 
       %> 

      </select> 
       Quantity: <input type="text" name="qty" value="1" size="3"> 
       <input type="submit" value="Add to Cart"> 
     </form> 
       <p/> 

       <% //Scriplet 3 check whether the shopping cart is empty 
       Vector shoplist= 
     (Vector<ebookshop.Book>)session.getAttribute("ebookshop.cart"); 
       if ((shoplist!=null) && (shoplist.size()>0)){ 
%>   
<table style="border: 1px; padding: 2px"> 
    <tr> 
     <td>TITLE</td> 
     <td>PRICE</td> 
     <td>QUANTITY</td> 
     <td></td> 
    </tr> 

    <% //Scriplet show the books in shopping cart 
     for (int i=0;i<shoplist.size();i++) 
     { 
     Book aBook=(Book)shoplist.elementAt(i); 

     %> 
     <tr> 
     <form name="removeForm" action="eshop" method="POST"> 
      <input type="hidden" name="position" value="<%=i%>"> 
      <input type="hidden" name="do_this" value="remove"> 
      <td> 
       <%=aBook.getTitle()%> 
      </td> 
      <td style="text-align: right"> 
       <%=aBook.getPrice()%> 
      </td> 
       <td style="text-align: right"> 
       <%=aBook.getQuantity()%> 
      </td> 
     </form> 
     </tr> 
     <% 
     } 
    %> 
</table> 
<p/> 
<form name="checkoutForm" action="eshop" method="POST"> 
    <input type="hidden" value="checkout" name="do_this"> 
    <input type="submit" value="Checkout"> 
</form> 
<% 
       } 
      } 
%> 
    </body> 
</html> 

Я предполагаю, что это посылает перенаправление в сервлет, когда атрибут сессии является нулевым

+1

URL-адрес '/ eshop /.*' возможно? –

+0

не работает, такая же ошибка 404 –

+0

Извините, попробуйте '/ eshop/*' - точка была моей ошибкой. (Возможно, это не сработает, но стоит попробовать ...) –

ответ

0

Это сработало! Я забыл поставить аннотацию перед классом servlett, поэтому он не смог найти страницу. Автор книги не поставил, может быть, потому, что она не использовалась в то время. Я просто поставил

@WebServlet (имя = "ShoppingServlet", urlPatterns = { "/ ESHOP"})

и стандартную web.xml и все работало! Я использовал сервер Tomcat и надеюсь, что он будет работать и для Glassfish.

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