gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:52:38 25 4
gpt4 key购买 nike

我有一个页面:profile.jsp 和两个 Controller :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 页面上,并在链接选项卡中手动将/profile 更改为/work 时,它只显示工作经验信息。

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 上同时显示两者?例如,我可以同时请求两个 Controller 吗?例如

<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>

最佳答案

您肯定希望每个 JSP 都有一个 Servlet,然后它充当主 Controller 来初始化其他类和内容。它们检索数据并将其设置到您的 JSP。

您在 web.xml(两个不同的 URL)中定义它的方式被认为是不同的,因此无论您做什么,每个 URL 只会调用一个 servlet 实例。

因此,您可能想要创建一个 ProfileInformationHolder 或类似的 bean 来保存信息(假设每个人对象都有一个对 WorkExperience 对象的引用)。然后让一个 Servlet 从两个类收集信息(id 修改当前 Controller )并准备 ProfileInformationHolder bean。完成此操作后,您将 ProfileInformationHolder bean 转发到您的 jsp,您可以在其中迭代所有信息并将它们显示在一个 url 下的一个位置。

更新:

这样的 java bean 没什么大不了的。它们基本上只包含变量以及用于访问它们的 get 和 set 。

所以一个 bean Person 可能看起来像这样:

    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”出现的任何其他内容。你很快就会投入其中;)

关于java - 由于 web.xml,内容未显示在 profile.jsp 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19854931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com