question

MaxBrannstetter-5337 avatar image
0 Votes"
MaxBrannstetter-5337 asked BobJohnson-6874 edited

My RestServer with JSP is not working, can someone help me?


Rest Server:

 package Server;
    
 import Model.Model;
 import Model.Unternehmen;
 import org.restlet.Component;
 import org.restlet.data.Protocol;
    
 public class UnternehmenServer {
     public static void main(String[] args) throws Exception {
         Component component = new Component();
         component.getServers().add(Protocol.HTTP,8888);
         component.getDefaultHost().attach("/api", new UnternehmenApp());
         component.start();
        /* Test Objekt erstellen nicht vergessen*/
     }
 }

Rest App:

 package Server;
    
 import org.restlet.Application;
 import org.restlet.Restlet;
 import org.restlet.routing.Router;
    
 public class UnternehmenApp extends Application {
     @Override
     public Restlet createInboundRoot() {
         Router router = new Router();
         router.attach("/Unternehmen",UnternehmenServerResource.class);
         router.attach("/Unternehmen/Mitarbeiter/{mitarbeiterID}",MitarbeiterServerResource.class);
         router.attach("/Unternehmen/Gehalt/{gehaltID}",GehaltServerResource.class);
         return router;
     }
 }

Interface Example:

 public interface IMitarbeiterResource {
     @Get
     public Mitarbeiter getMitarbeiter();
    
     @Delete
     public void deleteMitarbeiter();
    
     @Post
     public void addGehalt(Gehalt gehalt);
    
     @Put
     public void updateMitarbeiter(Mitarbeiter mitarbeiter);
 }


Server Resource:

 public class GehaltServerResource extends ServerResource implements IGehaltResource {
    
     public  Gehalt gehalt;
    
     @Override
     protected void doInit() throws ResourceException {
         super.doInit();
         Unternehmen unternehmen = Model.getInstance().getUnternehmen();
         unternehmen.getMitarbeiter().forEach(mitarbeiter -> {
             mitarbeiter.getGehalt().forEach(gehalt -> {
                 if(gehalt.getGehaltID() == Integer.parseInt(getAttribute("gehaltID"))){
                     this.gehalt = gehalt;
                 }
             });
         });
     }
    
     @Override
     public Gehalt getGehalt() {
         return gehalt;
     }
    
     @Override
     public void deleteGehalt() {
         Mitarbeiter mitarbeiter1 = null;
         Unternehmen unternehmen = Model.getInstance().getUnternehmen();
         for(Mitarbeiter mitarbeiter: unternehmen.getMitarbeiter()){
             for(Gehalt gehalt: mitarbeiter.getGehalt()){
                 if(gehalt.getGehaltID() == this.gehalt.getGehaltID()){
                     mitarbeiter1 = mitarbeiter;
                 }
             }
         }
         mitarbeiter1.getGehalt().remove(this.gehalt);
         Model.getInstance().save();
     }
    
     @Override
     public void updateGehalt(Gehalt gehalt) {
         this.gehalt.setGehaltID(gehalt.getGehaltID());
         this.gehalt.setLohn(gehalt.getLohn());
         Model.getInstance().save();
     }
 }


Model:

 public class Model {
     private static Model instance;
     private Unternehmen unternehmen;
     private final String XML_Path = "data.xml";
    
     public Model() {
         JAXBContext jaxbContext = null;
         try {
             jaxbContext = JAXBContext.newInstance(Unternehmen.class);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
             this.unternehmen = (Unternehmen) unmarshaller.unmarshal(new File(XML_Path));
         }catch (JAXBException e){
             e.printStackTrace();
         }
     }
    
     public static Model getInstance() {
         if(instance == null){
             instance = new Model();
         }
         return instance;
     }
    
     public void save(){
         JAXBContext jaxbContext = null;
         try {
             jaxbContext = JAXBContext.newInstance(Unternehmen.class);
             Marshaller marshaller = jaxbContext.createMarshaller();
             marshaller.marshal(unternehmen,new File(XML_Path));
         }catch (JAXBException e){
             e.printStackTrace();
         }
     }
     public Unternehmen getUnternehmen() {
         return unternehmen;
     }
    
     public void setUnternehmen(Unternehmen unternehmen) {
         this.unternehmen = unternehmen;
     }
 }

JSP Table:

 <html>
 <head>
     <title>Mitarbeiter</title>
 </head>
 <body>
 <jsp:useBean id="mitarbeiter" class="Model.Mitarbeiter" scope="request"></jsp:useBean>
 <h2><%=mitarbeiter.getVorname()%></h2>
 <table>
     <thead>
     <th>Vorname</th>
     <th>Nachname</th>
     <th>Alter</th>
     <th>Gehalt</th>
     </thead>
     <tbody>
     <tr>
         <td><%=mitarbeiter.getNachname()%></td>
         <td><%=mitarbeiter.getVorname()%></td>
         <td><%=mitarbeiter.getAlter()%></td>
         <% for(Gehalt gehalt: mitarbeiter.getGehalt()){ %>
         <td><%=gehalt.getLohn()%>€</td>
        <%}%>
     </tr>
     </tbody>
     <td><a href="Unternehmen"><button>Zurück</button></a></td>
 </table>
 </body>
 </html>


JSP Form:

 <html>
 <head>
     <title>Bearbeiten</title>
 </head>
 <body>
 <jsp:useBean id="mitarbeiter" class="Model.Mitarbeiter" scope="request"></jsp:useBean>
 <form method="get" action="UpdateMitarbeiter">
     <input type="hidden" value="<%=mitarbeiter.getMitarbeiterID()%>" name="mitarbeiterID">
     <label>ID</label>
     <input type="text" name="id" value="<%=mitarbeiter.getMitarbeiterID()%>"><br><br>
     <label>Vorname</label>
     <input type="text" name="vorname" value="<%=mitarbeiter.getVorname()%>"><br><br>
     <label>Nachname</label>
     <input type="text" name="nachname" value="<%=mitarbeiter.getNachname()%>"><br><br>
     <label>Alter</label>
     <input type="text" name="alter" value="<%=mitarbeiter.getAlter()%>"><br><br>
     <input type="submit" value="Fertig">
 </form>
 <td><a href="Unternehmen"><button>Zurück</button></a></td>
 </body>
 </html>


Servlet:

 @WebServlet(name = "ShowMitarbeiterServlet", value = "/ShowMitarbeiterServlet")
 public class ShowMitarbeiterServlet extends HttpServlet {
     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         Mitarbeiter mitarbeiter = UnternehmenClient.getMitarbeiter(Integer.parseInt(request.getParameter("mitarbeiterID")));
         request.setAttribute("mitarbeiter",mitarbeiter);
         RequestDispatcher requestDispatcher = request.getRequestDispatcher("ShowMitarbeiter.jsp");
         requestDispatcher.forward(request,response);
     }
    
 }

Client:

  public static Mitarbeiter getMitarbeiter(int mitarbeiterID){
         ClientResource clientResource = new ClientResource("http://localhost:8888/api/Unternehmen/Mitarbeiter/"+mitarbeiterID);
         IMitarbeiterResource resource = clientResource.wrap(IMitarbeiterResource.class);
         return resource.getMitarbeiter();
     }


XSD:

 <?xml version="1.0" encoding="UTF-8" ?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="Unternehmen">
         <xs:complexType>
             <xs:sequence>
                 <xs:element name="Firmenname" type="xs:string"></xs:element>
                 <xs:element name="FirmenID" type="xs:int"></xs:element>
                 <xs:element ref="Mitarbeiter" maxOccurs="unbounded"></xs:element>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
     <xs:element name="Mitarbeiter">
         <xs:complexType>
             <xs:sequence>
                 <xs:element name="MitarbeiterID" type="xs:int"></xs:element>
                 <xs:element name="Vorname" type="xs:string"></xs:element>
                 <xs:element name="Nachname" type="xs:string"></xs:element>
                 <xs:element name="Alter" type="xs:int"></xs:element>
                 <xs:element ref="Gehalt" maxOccurs="unbounded"></xs:element>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
     <xs:element name="Gehalt">
         <xs:complexType>
             <xs:sequence>
                 <xs:element name="Lohn" type="xs:int"></xs:element>
                 <xs:element name="GehaltID" type="xs:int"></xs:element>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
 </xs:schema>
not-supported
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

0 Answers