Avatar billede nicecurler Nybegynder
16. september 2009 - 11:49 Der er 9 kommentarer

Servlets include til dynamisk hjemmeside

Hey folkens,

Jeg er igang med et mindre skoleprojekt. Jeg skal udvikle en simpelt webshop baseret servlets. Indtil videre har jeg haft fin succes med at bruge jsp.

udsnit af min kode:

<%@include file="top.jsp" %>
<%@include file="login.jsp" %>
<%@include file="mid.jsp" %>
<h1>hej</h1>
<%@include file="bottom.jsp" %>


Men da min lære ikke er helt tilfreds med denne fremgangs måde har jeg forsøgt uden held at få et servlet til at klare opgaven.

udsnit af min servlet kode der skal håndtere alle servlets:

RequestDispatcher dp = request.getRequestDispatcher("/top");
            dp.include(request, response);
            dp = request.getRequestDispatcher("/login");
            dp.include(request, response);
            dp = request.getRequestDispatcher("/mid");
....


Jeg har altså blot taget indholdet af alle JSP-filerne og overført det til servlets filer. Men når jeg kører programmet bliver kun en include udført. Hvis jeg fjerner det første include tager den nr to.

Så mit spørgsmål er: Kan jeg få et servlet til at include mere end et servlet?? Og hvad er best practice. Kunne godt forestille mig at en blanding af JSP og Servlet er mere optimalt

mvh Rasmus
Avatar billede arne_v Ekspert
16. september 2009 - 17:54 #1
Du boer sagtens kunne inkludere to gange.

Foelgende virker hos mig.
Avatar billede arne_v Ekspert
16. september 2009 - 17:54 #2
package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class IncluderServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher dp = request.getRequestDispatcher("/IncludeA");
        dp.include(request, response);
        dp = request.getRequestDispatcher("/IncludeB");
        dp.include(request, response);
    }
}
Avatar billede arne_v Ekspert
16. september 2009 - 17:54 #3
package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class IncludeAServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("I am A");
    }
}
Avatar billede arne_v Ekspert
16. september 2009 - 17:54 #4
package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class IncludeBServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("I am B");
    }
}
Avatar billede arne_v Ekspert
16. september 2009 - 17:55 #5
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <servlet>
    <servlet-name>Includer</servlet-name>
    <servlet-class>test.IncluderServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>IncludeA</servlet-name>
    <servlet-class>test.IncludeAServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>IncludeB</servlet-name>
    <servlet-class>test.IncludeBServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Includer</servlet-name>
    <url-pattern>/Includer</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>IncludeA</servlet-name>
    <url-pattern>/IncludeA</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>IncludeB</servlet-name>
    <url-pattern>/IncludeB</url-pattern>
  </servlet-mapping>
</web-app>
Avatar billede arne_v Ekspert
16. september 2009 - 17:55 #6
Eksemplet er ikke ligefrem avanceret, men det virker.
Avatar billede arne_v Ekspert
16. september 2009 - 17:57 #7
Generelt virker hele ideen dog fuldstaendigt i skoven.

Standard er at man kalder en servlet som forwarder til en JSP side.

Gode soegeord er:
  MVC
  model 2
  Struts
  JSF

Proev evt. at laese http://www.eksperten.dk/guide/743 - den vil bringe dig frem til 2003-2004 med hensyn til Java web teknologi.
Avatar billede nicecurler Nybegynder
16. september 2009 - 19:10 #8
super fedt.. tusind tak.. fandt selv frem til at var fordi jeg lukkede hver out stream.. God bless netbeans predefineret kode..

Tak for din guide.. virkelig spændende læsning
Avatar billede arne_v Ekspert
22. oktober 2009 - 23:29 #9
Jeg smider et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester