gpt4 book ai didi

java - jsp:useBean 调用类中的特定方法

转载 作者:行者123 更新时间:2023-11-29 03:25:31 24 4
gpt4 key购买 nike

如何使用此标记调用类中的特定方法?

<jsp:useBean id="user" scope="??" class="com.example.User" type="com.example.User" />

最佳答案

假设您的 bean User 有一个名为 getName() 的方法

<jsp:useBean id="user" scope="request" class="com.example.User" />
// ...
<h1>Hello <jsp:getProperty name="user" property="name" /></h1>

范围可以是请求之外的其他东西:取决于你想要什么( session 、页面等)


编辑:您的第二个问题是关于在您的 jsp 中调用业务方法

事实是,您不应该将业务方法调用到您的 JSP 中。您的 JSP 页面应该只显示静态(html 等)和动态(例如 bean)内容。如果您遵循 MVC 模式,业务工作将委托(delegate)给 servlet。您的 JSP 只是简单的 View (读取 bean 的属性)并且被禁止(在目录 WEB-INF 中)。

对于您的 JSP 页面,请执行以下操作:

  1. html 表单的操作是您的 servlet Controller (方法 POST)
  2. 添加隐藏输入以帮助 servlet 识别要做什么:<input
    type="hidden" name="action" value="update" />
    <input
    type="hidden" name="action" value="register" />

您还可以显示动态内容(bean)。为此,您应该考虑使用 JSTL。
示例(servlet 在请求范围内发送 Movie bean 的 ArrayList):

<c:forEach items="${requestScope.results}" var="movie">
// ${movie.title}
// etc
</c:forEach>

对于您的 servlet Controller ,请执行以下操作:

doPost 方法中(因为我们使用的是html 形式的POST 方法),您可以根据收到的操作调度业务逻辑:request.getParameter("action")

如果操作是更新,那么我们执行更新业务逻辑。
如果操作是注册,那么我们执行注册业务逻辑。
等等……

现在,我们可以在请求范围内存储一些数据以与 jsp 页面通信:

ArrayList<Movie> results = new ArrayList<Movie>();
results.add(new Movie(...));
// etc...
request.setAttribute("results", results);

最后,发送数据并显示jsp:

request.getRequestDispatcher("/WEB-INF/update.jsp").forward(request, response);

一个 web.xml 的例子(带有一个映射为欢迎文件 index.jsp 的 servlet)

<servlet>
<servlet-name>Search</servlet-name>
<servlet-class>Servlets.Search</servlet-class>
</servlet>
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>Servlets.Register</servlet-class>
</servlet>
<servlet>
<servlet-name>Update</servlet-name>
<servlet-class>Servlets.Update</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Search</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Update</servlet-name>
<url-pattern>/Update.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

关于java - jsp:useBean 调用类中的特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258739/

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