我正在创建一个 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/