java使用servlet的正确方法是什么?
我在学习EJB3
我有一个会话bean,它提供创建/更新客户帐户的服务
此会话bean提供以下服务:
public void addCustomer(Customer c);
public void updateCustomer(Customer c);
理想情况下,我希望有一个servlet:CustomerServlet,它将调用上面列出的会话bean
问题是我有两个JSP:UpdateAccount。jsp和CreateAccount。jsp。这两个JSP都有一个带有方法POST和操作“CustomerServlet”的表单
如何在客户servlet中区分应该执行哪些操作:createAccount还是updateAccount
我想另一种选择是为每个操作使用一个单独的servlet
多谢各位
# 1 楼答案
JSP是Servlet,只是以不同的源代码形式,没有理由
POST
到不同的Servlet,您可以POST
回到同一个JSP# 2 楼答案
您不需要servlet。JSP(或Facelet)可以通过EL直接与bean对话
# 3 楼答案
我并不确定这方面的最佳做法,但我有一些建议可能会奏效:
如果使用提交按钮提交表单,您可以根据<;按钮名称>;参数因此,如果您的按钮具有值
Update
和Create
,并被命名为account-submit
,那么通过检查request.getParameter('account-submit')
得到的值,您就可以知道单击哪个按钮生成了这个请求。如果以不同的方式命名,还可以检查这两个参数中的哪一个不为null,从而知道正在处理哪个表单提交请注意,如果表单中只有一个文本字段,并且用户点击
Enter
而不是单击按钮,那么在servlet中会出现null
!见my blog post about this behaviour.检查
Referer
头-我不建议这样做,因为你并不总是知道部署的应用程序的上下文,这个值可能并不总是存在,而且很容易被欺骗为servlet添加另一个映射,以便它在http://myapp.example.com/context/create和http://myapp.example.com/context/update都可以访问。然后,您可以检查
ServletPath
(request.getServletPath()
)以查看请求的“servlet”是什么。我可能会选择这一个,因为它对我来说似乎是最健壮的,但你可能还想添加另外两个检查来确保。在你的web.xml
中,你会想要