![](/img/trans.png)
[英]How can I map Spring or RESTful like URLs using standard servlets and web.xml
[英]I don't understand how web.xml works / should work while using servlets
我有一個簡單的程序:
登錄
處理
結果
作為servlet和過濾器:
這是我的.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>PDPJ Servlet Application</display-name>
<description>
Not in english so skipping this
</description>
<listener>
<listener-class>listeners.InitServlet</listener-class>
</listener>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ProcessingServlet</servlet-name>
<servlet-class>servlet.ProcessingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProcessingServlet</servlet-name>
<url-pattern>/PDPJ_-_Servlet_-_V4/process/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ResultsServlet</servlet-name>
<servlet-class>servlet.ResultsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ResultsServlet</servlet-name>
<url-pattern>/process/results</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>1200</session-timeout>
</session-config>
<filter>
<filter-name>AuthFilter</filter-name> <!-- mandatory -->
<filter-class>filter.AuthentificationFilter</filter-class> <!-- mandatory -->
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/PDPJ_-_Servlet_-_V4/process/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
</web-app>
現在,處理servlet的URL為“/ PDPJ_- Servlet -_V4 / process /”,以前只是“/ process /”。
事情是,在我登錄后,網址應該看起來像這樣http://localhost:8080/PDPJ_-_Servlet_-_V4/process/?username=admin&password=admin
它適用於手動輸入,但是如果我只是點擊提交按鈕,網址變為http://localhost:8080/process/?username=admin&password=admin
我無法獲得。
這是表格:
PrintWriter pw = resp.getWriter();
pw.println("<html><head></head><body>");
pw.println("<form action=\"/process/\"> " +
"Username:<input type=\"text\" name=\"username\"/><br/> " +
"Password:<input type=\"password\" name=\"password\"/><br/> " +
"<input type=\"submit\" value=\"login\"> " +
"</form> ");
pw.println("</body></html>");
有人能指出我錯過了什么嗎?
編輯另外,如果.xml包含/ PDPJ_- Servlet -_V4 /或者我可以告訴它我想要一個“相對路徑”或類似的東西嗎?
您將其設置為表單中的該URL(參見下文)。 領先的斜線使它成為絕對的。
在Java中生成HTML幾乎是不對的; 使用JSP或類似的視圖層。
這里:
pw.println("<form action=\"/process/\">
您告訴表單回發到URL /進程/這是一個絕對路徑。
好吧,你的表單的動作是action="/process/"
,所以當按下提交時它將請求提交到: <server-url>:<server-port>/process/
並且沒有'/ PDPJ_- Servlet -_V4 in the URL, by the way there is no context name in the URL too, so even if you change the
操作value, you can only deploy your application with no
上下文名稱的value, you can only deploy your application with no
,否則會發生同樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.