由于web.xml,内容未在profile.jsp上显示?

时间:2013-11-08 08:52:28

标签: java html jsp servlets web.xml

我有一个页面:profile.jsp和两个控制器:WorkController.java和GebruikerController.java。 从我的profile.jsp我要求两件事:

来自GebruikerController.java的用户信息:

<c:choose>
    <c:when test="${gebruikers.size() != 0}">
        <!-- Wanneer er gebruikers opgeslagen zijn, worden ze hier getoond -->
        <c:forEach var="tempGebruiker" items="${gebruikersUitSessie}">
            <!-- Per gebruiker wordt nu een rij aangemaakt met daarin zijn gegevens -->
            <div id="main_inner_left">
                <img src="${tempGebruiker.imageURL}" width="150" height="150">
            </div>
            <div id="main_inner_right">
                <table border="0">
                    <tr>
                        <td>
                            ${tempGebruiker.firstName} ${tempGebruiker.lastName}
                        </td>
                    </tr>
                    <tr>
                        <td>
                            E-mail: 
                        </td>
                        <td>
                            ${tempGebruiker.email}
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Date of birth:
                        </td>
                        <td>
                            ${tempGebruiker.birthDay}-${tempGebruiker.birthMonth}-${tempGebruiker.birthYear}
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Gender:
                        </td>
                        <td>
                            ${tempGebruiker.gender}
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Country:
                        </td>
                        <td>
                            ${tempGebruiker.country}
                        </td>
                    </tr>
                    <tr>
                        <td>
                            City:
                        </td>
                        <td>
                            ${tempGebruiker.city}
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                            <a href="profile/wijzig?id=${tempGebruiker.userNumber}">Edit profile</a>
                            <!--<a href="javascript:if(confirm('Weet u het zeker dat u deze gebruiker wil verwijderen?'))
                               window.location='profile/verwijder?id=${tempGebruiker.userNumber}';">Verwijder</a>-->
                        </td>
                    </tr>
                </table>
            </div>
        </c:forEach>
    </c:when>
    <c:otherwise>
        <!-- Als er geen gebruikers zijn, wordt deze melding getoond -->
        Er zijn geen gebruikers gevonden.
    </c:otherwise>
</c:choose>

来自WorkController.java的用户工作经验:

<c:forEach var="tempWork" items="${workUitSessie}">
    <table border="0">
        <tr>
            <td>
                ${tempWork.fromYear}-${tempWork.tillYear}
            </td>
            <td>
                ${tempWork.name}
            </td>
            <td>
                ${tempWork.profession}
            </td>
        </tr>
        <tr>
            <td>
                Description:
            </td>
            <td>
                ${tempWork.description}
            </td>
        </tr>
    </table>
</c:forEach>

上面的两个代码都位于我的profile.jsp。

问题在于,每当我在浏览器上访问profile.jsp页面时,/ profile链接都显示在链接选项卡中,它只显示用户信息(第一个代码)。每当我在浏览器上的profile.jsp页面上,并在链接选项卡中手动更改/配置文件/工作时,它只显示工作体验信息。

的web.xml:

<servlet>
        <servlet-name>GebruikerController</servlet-name>
        <servlet-class>controllers.GebruikerController</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>GebruikerController</servlet-name>
        <url-pattern>/profile</url-pattern>
    </servlet-mapping>

<servlet>
        <servlet-name>WorkController</servlet-name>
        <servlet-class>controllers.WorkController</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>WorkController</servlet-name>
        <url-pattern>/work</url-pattern>
    </servlet-mapping>

如何在profile.jsp上同时显示两者?我可以例如同时请求两个控制器吗? e.g。

<servlet>
        <servlet-name>GebruikerController</servlet-name>
        <servlet-class>controllers.GebruikerController + controller.WorkController</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>GebruikerController</servlet-name>
        <url-pattern>/profile + /work</url-pattern>
    </servlet-mapping>

1 个答案:

答案 0 :(得分:1)

你当然希望每个JSP有一个Servlet,然后作为主控制器来启动其他类和东西。那些检索数据并将其设置为您的JSP。

他们在web.xml中定义它(两个不同的URL)的方式被认为在事物之间有所不同,所以无论你做什么,每个URL只调用一个servlet实例。

所以你可能想要创建一个bean ProfileInformationHolder或类似能够保存信息的东西(比如说Person对象,每个对象都有一个对WorkExperience-object的引用)。 然后让一个Servlet收集来自两个类的信息(id修改当前的控制器)并准备ProfileInformationHolder bean。完成此操作后,您将ProfileInformationHolder bean转发到您的jsp,您可以在其中迭代所有信息并将其显示在一个URL下的一个位置。

更新:

这样的java bean并不是一个大故事。它们基本上只包含变量,get和set可以访问它们。

所以bean人看起来像这样:

    public class MyPersonBean {

        private String name = "";

        public String getName(){
            return name;
        }

        public void setName(String name){
            this.name = name;
        }
    }

(对不起,我不知道如何格式化源代码,我非常沮丧地花了几个小时试图通过我的IDE复制和粘贴来存档多年来工作的东西)。

我建议你做一个关于这个主题的简短教程,比如这个http://www.java-samples.com/showtutorial.php?tutorialid=552(未经过验证)或者通过搜索“java jsp servlet bean”得到的任何其他东西。你会很快进入它;)