java - 从不同的jsp调用相同的servlet以达到不同的目的

标签 java hibernate jsp servlets model-view-controller

我正在创建一个 MVC 应用程序,我希望我的 servlet 成为一个真正的 Controller 。它应该从 View 中获取请求,并根据请求调用我的 DAO 层进行数据库交互。我正在使用 hibernate 并在 jsp 上填充 pojo/bean。

例如。我的第一个jsp用于注册用户,第二个jsp用于由用户创建广告。两个 jsps 都调用相同的 servlet(Controller.java),并且该 servlet 具有对我的 DAOImpl.java 的方法调用,其中包含 registerUser(User user) 和 CreateAd(Offer Offer)。这些方法只是调用 persist 并将数据插入数据库。

这对于两个 servlet 来说效果很好,但我正在尝试是否可以在没有两个 servlet 的情况下以不同的方式实现。

最佳答案

您可以通过调用 servlet 并发送定义要执行的操作的参数来完成此操作。它会是这样的:

<form id="myForm" action="TheServlet" method="POST">
    <input type="hidden" name="action" id="action" />
    <input type="submit" value="Register User" onclick="setAction('registerUser');" />
    <input type="submit" value="Create Ad" onclick="setAction('createAd');" />
</form>
<script type="text/javascript">
    function setAction(var action) {
        document.getElementById('action').value = action;
    }
</script>

然后,在您的 servlet 中:

@WebServlet("TheServlet")
public class TheServlet extends HttpServlet {
    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
        throws IOException {
        String action = request.getParameter("action");
        if (action.equals(...)) {
        } else if (action.equals(...)) {
        } else ...
        //if using Java 7 or later, you could use a switch instead of ifs
    }
}

您可以查看Front Controller Pattern 。请注意,许多 MVC 框架(例如 Spring MVC)已经处理了这个问题。

关于java - 从不同的jsp调用相同的servlet以达到不同的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22994088/

相关文章:

java - 更改颜色而不影响之前绘制的任何内容

java - 如何从mysql php获取数据到android

java - JPA多对一: Deleting One to Many side

java - 用于条目多对多关系的 JPQL

java - JSPG0036E : Failed to find resource jsp

java - 如何将自定义变量保存到 Java 中的 Struts 应用程序的请求中?

java - 提取 ping 消息的值

java - 如何在 Linux 中为所有用户设置 JAVA_HOME

java - 与 postgres 的 spring JDBC 连接问题

java - 意外的碧 Jade 异常