jsp:useBean在类中调用特定方法 [英] jsp:useBean call a specific method in a class

查看:181
本文介绍了jsp:useBean在类中调用特定方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I call a specific method in a class using this tag?

< jsp:useBean id =userscope = ?? class =com.example.Usertype =com.example.User/>

推荐答案

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

Assuming your bean User has a method called getName()

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

范围可能不是请求:取决于你想要什么(会话,页面等)

The scope could be something else than request : depends on what you want (session, page, etc)

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

your second question was about calling a business method in your jsp

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

The fact is, you should not call business method into your JSPs. Your JSP pages should only display static (html, etc) and dynamic (beans for example) content. If you follow MVC pattern, business job is delegated to servlets. Your JSPs are only simple views (reading properties of beans) and are forbidden (in directory WEB-INF).


  1. html表单的动作是你的servlet控制器(方法POST)

  2. 添加隐藏的输入以帮助servlet识别什么要做的事:< input
    type =hiddenname =actionvalue =update/>
    <输入
    type =hiddenname =actionvalue =register/>

  1. Action of html form is your servlet controller (method POST)
  2. Add hidden input to help servlet recognize what to do: <input type="hidden" name="action" value="update" /> or <input type="hidden" name="action" value="register" />

您还可以显示动态内容(bean)。为此,您应该考虑使用JSTL。


示例(servlet在请求范围内发送电影bean的ArrayList):

You can also display dynamic content (beans). For that, you should consider using JSTL.
Example (servlet sends an ArrayList of Movie beans on request scope):

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



对于您的servlet控制器,请按以下步骤操作:



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

For your servlet controller, proceed as following:

In doPost method (because we're using POST method in html form), you can dispatch business logic depending on action received: request.getParameter("action")

如果操作是更新,那么我们会执行更新业务逻辑。


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


等......

If action is update, then we perform update business logic.
If action is register, then we perform register business logic.
etc ...

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

Now, we can store some data in request scope to communicate to jsp page:

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

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

And finally, send data and display jsp:

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






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


An example of web.xml (with a servlet mapped as welcome file index.jsp)

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

这篇关于jsp:useBean在类中调用特定方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆