2009-09-02 8 views
1

現在、HTTPServletRequestクラス、特に.getQueryStringメソッドを使用して、入力されたURLを取得します。Java URL - 引数を渡す - サーブレット

それが解析するURLは、サーバ/パッケージ/サーブレットと言っているのですか?args1/args2/ARG3 ..

私は疑問符を削除したい(?)URLからしかし、私はどのように考えていますこれを達成するだろう。私はちょうどフォワードスラッシュ(/)で置き換えたいと思うが、私はこれを試すたびにエラーが出る。疑問符をスラッシュに変更する方法を知っている人はいますか?

答えて

3

入力URLがhttp:/example.com/servlet/arg1/arg2/arg3になるようにしますか?

もしそうなら、あなたのweb.xmlに /sevletname/*の行にサーブレットマッピングを追加したいとします。あなたが望むあなたのweb.xmlでそう

<servlet> 
    <servlet-name>ServletName</servlet-name> 
    <servlet-class>biggle.whatever.Servlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>ServletName</servlet-name> 
    <url-pattern>/webxml_random/*</url-pattern> 
    </servlet-mapping> 

(例:http://michael-lloyd-lee.appspot.com/webxml_random/test/like/this

+0

私はすでにweb.xmlにこれを持っており、疑問符の代わりにスラッシュを入力することはできません...少し残念です!もちろん私は間違ったことをしていない限り! – Federer

+0

arg1/arg2/arg3はどのように設定されていますか?フォームがありますか、または手動で入力していますか? –

+1

注:getPathInfoまたはgetRequestURIを使用して、「引数」を取得する必要があります。これは、もはやURLスペックの引数ではありません。 –

0

HttpServletRequest.getRequestURI()HttpServletRequest.getQueryString()の組み合わせが必要で、それらを一緒に '/'で結合します。

しかし、私はあなたがこれをやっている理由とあなたが本当に達成しようとしていることに興味があります。

+0

理想的には、スラッシュで区切られたURLが好きです。しかし、現時点では、議論の前にその疑問符を置く必要があります。私はこれがCGIのビットであることをJavaに伝えるものだと思いますか? – Federer

+0

HTTP URLの指定です。だからおそらく疑問は、元々どこから来たのか、それは変えることができるのだろうか? –

+0

私はそれが変更できるかどうかを確かに知りたいです!私が集めたものから、それはできません。 – Federer

0

URLの疑問符は、HTTP specificationで定義されています。任意のデータがURLを介してサーバーに送信されるたびに、URLの一部になります。 HTTP仕様で定義されているURLの基本構造を再定義することはできません。

+0

これは私の基本的な仮定でした.. – Federer

+0

サーブレットには、HTTP仕様に準拠した要求からデータを抽出するgetRequestParameter()メソッドがあります。したがって、getRequestParameter()呼び出しを避けたい場合を除き、URL形式を再定義しないでください。これを行う場合は、HTTP POSTを使用し、POSTリクエスト本体の独自の解析を実行します。 –

0

あなたは何らかの種類のURL書き換えのようです。

thisは、tomcatや他のj2eeサーバーのためにできるはずです。

私はそれを一度も使用しませんでした。ブライアンアグニューへのお返事から

+0

ここにリンクを挿入するのを忘れましたか? – Federer

+0

だと思います。テキストを更新しました。 –

0

:「まあ理想的に私はちょうどスラッシュで割っだURLたいしかし、私は、引数の前にそのクエスチョンマークを配置する必要があり、現時点で。。」のEr、はい、質問markはURL仕様の基本的な部分であり、リソースを提供するために要求されているリソース(例えば、page)をパラメータから分離します。

何かをしようとしているように聞こえます。RESTfulその場合は、サーブレット設定にサーブレットマッピングエントリを設定してURLをサーブレットにマップし、URLからパラメータを取得する必要があります。 「+ java + RESTful」を検索すると、それを取得するためのいくつかのリソースが見つかります。

2

あなたが望む形式でリクエストが生成されます何かを持っている場合は、ユーザーが指定することができますサーブレットマッピングを/foo/*の形式で実行し、そのパスを取得するにはgetRequestURI()を呼び出します。次に、おそらくString.split("/")を呼び出すことによって引数を解析します。

しかし、実際の問題は、このようなURLをどのように生成するかです。他のポスターが指摘しているように、疑問符はURL specificationの一部であり、HTML GETフォームは、あなたのサーバーがJava、Python、PHPなどで書かれているかどうかは関係ありません。

関連する問題