为不同的意图从不同的jsp调用相同的servlet

时间:2014-04-10 16:44:37

标签: java hibernate jsp servlets model-view-controller

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

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

这适用于两个servlet,但是如果没有两个servlet可以以不同方式进行,我正在尝试。

1 个答案:

答案 0 :(得分:2)

您可以通过调用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。