Java 如何通过URL控制servlet的执行?
如果Java 如何通过URL控制servlet的执行?,java,servlets,Java,Servlets,如果urlPatterns控制基本URL重写,我可以不使用.htaccess重写URL吗?我正在查看以下代码: 当我访问http://localhost:8080/Guestbook/guest,但如果我想做http://localhost:8080/Guestbook/guest/edit?id=4,如何在此控制器中设置 在PHP中,逻辑步骤是http://localhost:8080/Guestbook/controller/function。在java中,我似乎只能使用doGet(),对吗
urlPatterns
控制基本URL重写,我可以不使用.htaccess
重写URL吗?我正在查看以下代码:
当我访问http://localhost:8080/Guestbook/guest
,但如果我想做http://localhost:8080/Guestbook/guest/edit?id=4
,如何在此控制器中设置
在PHP中,逻辑步骤是http://localhost:8080/Guestbook/controller/function
。在java中,我似乎只能使用doGet()
,对吗
我试图设想整个URL结构如何影响控制器的执行。参考资料
基本上你需要改变
@WebServlet(name = "GuestServlet", urlPatterns = {"/guest"})
到
现在,servlet还应该处理“/guest/edit”URL模式,并使用
/guest/*
的URL模式提取路径信息
下面是一个启动示例(省略了琐碎的检查):
调用将操作设置为编辑,将id设置为4
。从这一步开始,您可以使用策略模式来调用特定的业务操作
当然,您也可以选择一个基于动作的MVC框架,它将所有servlet样板文件抽象出来,比如SpringMVC
另见:
我是否仍然需要将所有代码放在doGet()
中,或者我可以说是一个doGetEdit()
?每当发出“get”请求时,就会调用doGet()方法,当发出“post”时,就会调用doPost(),例如,请转到并下载演示,以便更好地理解。
@WebServlet(name = "GuestServlet", urlPatterns = {"/guest"})
@WebServlet(name = "GuestServlet", urlPatterns = {"/guest", "/guest/edit"})
@WebServlet("/guest/*")
public class GuestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] pathInfo = request.getPathInfo().split("/");
String action = pathInfo[1]; // edit
String id = pathInfo[2]; // 4
// ...
}
}