Question

Je suis à la recherche de l'aide / conseils à la création de site JSP simple en utilisant équivalent de PHP include + fonction de commutation.

Le but est que je veux être en mesure de basculer entre plusieurs JSP comprend des pages dans une page principale.

Quelle serait la forme ci-dessus « fonction » la plus simple possible?

Était-ce utile?

La solution

Il vous <jsp:include> . Vous pouvez utiliser EL pour spécifier l'attribut page.

Créez un fichier /WEB-INF/main.jsp qui ressemble à:

<!doctype html>
<html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
        <jsp:include page="${page}" />
    </body>
</html>

Vous pouvez contrôler la valeur ${page} avec l'aide d'un servlet contrôleur de page. Quelque chose comme:

public class PageController extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("page", "/WEB-INF" + request.getPathInfo());
        request.getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
    }

}

Plan du servlet web.xml comme suit:

<servlet>
    <servlet-name>pageController</servlet-name>
    <servlet-class>com.example.PageController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>pageController</servlet-name>
    <url-pattern>/page/*</url-pattern>
</servlet-mapping>

De cette façon, le servlet est accessible par http://example.com/context/page/foo.jsp et dans cet exemple URL il sera alors obtenir /foo.jsp du pathinfo et définir ainsi l'attribut page avec la valeur /WEB-INF/foo.jsp afin qu'il soit disponible en ELAS ${page} afin que le jsp:include sait ce qu'il devrait inclure. Pas besoin de scriptlets désagréables ou des instructions switch.

Dans le /WEB-INF/foo.jsp vous pouvez simplement écrire HTML comme s'il est placé dans la balise HTML <body>.

Notez que les fichiers JSP sont placés dans /WEB-INF, cela se fait de manière à empêcher un accès direct par URL afin que les utilisateurs ne peuvent pas les demander sans passer par le contrôleur de la page, comme par exemple http://example.com/context/foo.jsp qui renvoie uniquement le contenu partiel ( la page à être-inclus).

Hope this helps.

Autres conseils

Essayez

<%  if ( expression1 ) { %>
    <%@ include file="file1.jspf" %>
<% } else if(expression2) { %>
    <%@ include file="file2.jspf" %>
<% } %>

Ou, si vous avez la possibilité, consultez JSF2 et / ou Facelets. Il a des capacités de création de modèles beaucoup plus puissants.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top