Ich versuche, diese example zu folgen, aber ich diesen Teil nicht verstehen kann:
Imagine also that the servlet's context path is myServer/myApp/servlets. The servlet container would direct a request with URL myServer/myApp/createUser.do myServlet to myServlet, because the request URL matches the pattern *.do. Servlet myServlet can extract the requested operation's name from the request URL.
Ich kann die Anforderung nicht verstehen, sollte es nicht sein myServer/myApp/myservlet/createUser.do? Und wie kann man eine solche Anfrage erstellen? Kann ich myServlet/createUser.do einfach in die Aktion eines Formulars einfügen?
Vielen Dank für Ihre Zeit.
IuliaWie kann man die Operation in einem Servlet identifizieren?
0
A
Antwort
0
Nein, Sie erstellen eine Zuordnung zu Ihrem Servlet für myapp. Der Servlet-Name selbst wird normalerweise nie in der Anforderungs-URL angezeigt. Daher wird jede Anfrage, die an myapp gesendet wird, an Ihr Servlet weitergeleitet, wenn es übereinstimmt. Das bedeutet, dass Ihr Mapping
http://myserver/myapp/ * .do
jede Anfrage mit einem .do zu Ihrem Servlet umleitet. Jetzt muss das Servlet mit der Anforderungs-URL umgehen (z. B. die Ansicht für createUser rendern)
Vielen Dank für Ihre Antwort. Ich habe damit herumgespielt und ich habe eine Frage. Ich versuche den Anmeldebildschirm zu erstellen. Standardmäßig wird die index.jsp geöffnet: http: // localhost: 3818/MyApp. Ich habe hinzugefügt: $ {pageContext.request.contextPath} /signin.do in der Aktion des Formulars und dieses Dispatcher Servlet-Name> *. Do url -Pattern> servlet-mapping> zu web.xml. Dies wird nicht funktionieren (macht eine Submit, geht durch, Werte null). Wenn die Web-App jedoch mit http: // localhost: 3818/MyApp/signin.do geöffnet wird, funktioniert sie. –
Iulia
Gibt es eine logische Erklärung dafür - außer "ein kleiner roter Teufel kam und vermasselte meine App" - Wie kann ich den Anmeldebildschirm genauso machen wie die anderen? Füge ich einfach den Dispatcher als/* url-pattern> hinzu? Wird es genügen? Wird das nicht bedeuten, dass alles durchgehen muss? Danke nochmal für deine Zeit. –
Iulia
Ich weiß nicht wirklich, was Sie tun wollen ... in der Tat sagen Sie nicht einmal, welche Servlet-Implementierung Sie verwenden. Sie mappen einfach, dass jeder Anruf von .do zu Ihrem Servlet umgeleitet wird. Also einfach anrufen localhost: 3818/MyApp leitet einfach nicht um, weil es keine .do-Erweiterung hat (localhost: 3818/MyApp/index.do würde aber funktionieren. –
Daff