2014-01-14 44 views
0

我有一個簡單的程序有:我不明白怎麼web.xml中的作品/應該工作而使用servlet

  • 登錄

  • 過程

  • 結果

作爲servlets和過濾器:

  • AuthentifFilter

這是我的.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有 「/ PDPJ_- 的Servlet -_V4 /流程/」 的URL,用於只是「/ process /」。

事情是,我登錄後,url應該看起來像這樣http://localhost:8080/PDPJ_-_Servlet_-_V4/process/?username=admin&password=admin它適用於手動輸入,但是如果我只點擊提交按鈕url變成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 /或我可以告訴它,我希望有一個「相對路徑」或類似的東西?

回答

1

你是將它設置爲表單中的URL(見下文)。主導斜線使其絕對。


在Java中生成HTML幾乎是不對的,使用JSP或類似的視圖層。

+0

作業只針對servlet,沒有jsp。接下來是Jsp。謝謝,但你能不能給我一個它應該如何工作的例子? – Kalec

+0

@Kalec是什麼樣的例子?我說主導斜線使其絕對......所以相對......刪除主導斜線。 –

+0

英語不是我的第一語言,我不明白,領先是第一還是最後? – Kalec

1

這裏:

pw.println("<form action=\"/process/\"> 

你告訴的形式回發到URL /工藝/這是一個絕對路徑。

+0

我會讓這個...非絕對路徑...怎麼樣? – Kalec

+0

刪除前導/ –

+0

對不起,英語不是我的第一語言,首先是或最後? – Kalec

0

那麼,你的表格的行動是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 context`名,否則同樣的事情發生。

+0

上下文名稱是什麼? – Kalec

+0

將war文件命名爲'something.war'並將其部署在Tomcat中(默認模式下),上下文名稱將爲'something'。 –

相關問題