我正在创建一个MVC应用程序,我希望我的servlet成为一个真正的控制器。它应该从视图中获取请求,并根据请求调用我的DAO层进行数据库交互。我正在使用hibernate并在jsp上填充pojo / bean。
例如。我的一个jsp用于注册用户,第二个是用户创建广告。两个jsps都调用相同的servlet(Controller.java),servlet对我的DAOImpl.java进行方法调用,该调用具有registerUser(用户用户)和CreateAd(Offer offer)。这些方法只是调用persist并将数据插入数据库。
这适用于两个servlet,但是如果没有两个servlet可以以不同方式进行,我正在尝试。
答案 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。