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
        // ...
    }

}