servletの開発でリンク先にアクセスできない問題

このQ&Aのポイント
  • servletの開発において、リンク先にアクセスできない問題が発生しています。
  • リンク先のURLが表示されず、<a>タグがそのまま表示される現象が起きています。
  • 解決方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

servletの開発(リンク先にとべません)

質問失礼します。 非常に単純なプログラムなのですが詰まってしまいました。 public class Home extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=Shift_JIS"); request.setCharacterEncoding("Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<h1>メニュー</h1>"); out.println("<h1>ようこそ</h1>"); out.println("選択してください<BR>"); out.println("<p><a href= \"http://localhost:8080/servlet/test.html>サッカー</a></p>"); out.println("<p>野球</p>"); out.println("<p>バスケットボール</p>"); } } この中での out.println("<p><a href= \"http://localhost:8080/servlet/test.html>サッカー</a></p>"); の部分なのですが, 実際にlocalhostからアクセスしてみると <a href="http://localhost:8080/servlet/test.html>サッカー というようにそのまま表示されてしまいます。 解決方法がありましたらよろしくお願いします。

  • HTML
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

ダブルクォートのエスケープ閉じ忘れですか out.println("<p><a href= \"http://localhost:8080/servlet/test.html\">サッカー</a></p>");

berserk_00
質問者

お礼

回答ありがとうございます。 とんでもない見落としでした。。 ありがとうござます。 以後気をつけます。

その他の回答 (1)

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.2

out.println("<p><a href=\"http://localhost:8080/servlet/test.html\">サッカー</a></p>"); out.println("<p><a href='http://localhost:8080/servlet/test.html'>サッカー</a></p>");

berserk_00
質問者

お礼

回答ありがとうございます。 助かりました。 この見落としはダメですね。。 気をつけます。

関連するQ&A

  • Servletが動かない

    下記のようなサーブレットを作成し、web.xmlも記述して動かしてみようとしたところ下記のようなエラーが発生して動きません。(Win2000、Tomcat4.1) ~~~HelloWorldServlet.java package test_servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); for (int i = 1; i <= 10; i++) { out.println("Hello World" + Integer.toString(i)); } out.println("</body>"); out.println("</html>"); } } ~~~web.xml <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HellowWorld</servlet-name> <servlet-class>test_servlet.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HellowWorld</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping> </web-app> ~~~http://localhost:8080/hello接続時のスタック javax.servlet.ServletException: クラス test_servlet.HelloWorldServlet はサーブレットではありません

    • ベストアンサー
    • Java
  • 困っています

    フォームに入力したデータをセッションに登録し、次の入力画面でそこまでたまったデータと入力されたデータを追加し、入力欄と一緒に表示するフォームを作っています。特にフォームの中のデータを取り出すあたりが分かりません。どなたか、アドバイス等お願いします。下のソースは作り掛けで、以前作った買い物かごをベースにしています。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class form extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { HttpSession hs = request.getSession(true); ArrayList a = (ArrayList)hs.getAttribute("writing"); if( a == null ) { a = new ArrayList(); } request.setCharacterEncoding("JISAutoDetect"); String s1[] = request.getParameterValues("f1"); String s2 = request.getParameter("f2"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>サーブレット</title></head>"); out.println("<body>"); out.println("<form action=http://....method=POST>"); out.println("<h2>入力フォーム</h2>"); out.println("<textarea name=f1 size=5 multiple>"); out.println("

    • ベストアンサー
    • Java
  • サーブレットについて

    こんにちは。 サーブレットに質問したいことがあります。 以下のサンプルソースで、 response.setContentType("text/html;charset=Shift_JIS"); の部分があるのですが、このようにすると日本語が文字化けしてしまいます。 ちなみにresponse.setContentType("text/html); とすると、日本語も文字化けせずに正しく表示されます。 ここで質問なのですが、 サーブレットの場合はJSPと違い、charsetを指定しなくてもよろしいのでしょうか? 何か分かることがありましたらご教授御願い致します。 ---------☆サンプルソース(HelloWorldExample.java)☆---------------- import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ハローワールド</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>HelloWorld ハローワールド</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } } ---------------------------------------------------

    • ベストアンサー
    • Java
  • ServletでのFRAMESETについて教えて下さい。

    Servletにて以下は1部ですがつくりましたが、コンパイルでFRAMESETの部分がエラーとなります。 FRAMESETは使えないのでしょうか?? 初歩的な質問で申し訳ありませんが教えて下さい。 お願いいたします。 out.println("<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">"); out.println("<%@page contentType="text/html; charset=Windows-31J"%>"); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>テストWEB</TITLE>"); out.println("</HEAD>"); out.println("<FRAMESET rows="100,*" border="0" frameborder="0">"); out.println("<FRAME src="title.jsp" name="title" scrolling="no">"); out.println("<FRAMESET cols="50%,*" border="0" frameborder="0">"); out.println("<FRAME src="left.jsp" name="left">"); out.println("<FRAME src="right.jsp" name="right">"); out.println("</FRAMESET>"); out.println("<noframes>"); out.println("<h2>このページはフレーム対応のブラウザでご覧ください。</h2>"); out.println("</noframes>"); out.println("</FRAMESET>"); out.println("</HTML>");

    • ベストアンサー
    • Java
  • submitで日本語をおくりたい

    自分は現在JSPの勉強をしているのですが、JSPからサーブレットにsubmitをつかって、日本語を送信した場合文字化けして表示されてしまうので困っています。 ソースコードで説明させていただくと JSP側ソース <%@ page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <html> <head><title>a</title></head> <body> <form action="Hello" method="post"> <textarea rows="10" cols="40" name="comment"> ここにコメントを書いて送信を押すとコメントがつきます </textarea><br> <input type="submit" value="送信"> </form> </body> </html> サーブレット側 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class hello extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); response.setCharacterEncoding("Shift_JIS"); PrintWriter out = response.getWriter(); String msg = request.getParameter("comment"); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println(msg);//ここで表示 out.println("</body>"); out.println("</html>"); } } この様なソースを書いたのですが、サーブレット側で日本語を表示させようとすると、文字化けしてしまいます(英語は普通に表示されます)。 どのようにすれば、サーブレット側で日本語を表示できるのでしょうか? お返事おまちしております。

    • ベストアンサー
    • Java
  • eclipse servlet 404対処方法

    初めて質問させて頂く者です。宜しくお願いします。Java初心者です。 eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。 ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。 どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。 環境:windows8.1 eclipse4.3 ディレクトリ:jwapp(プロジェクト名) -test(パッケージ名) -First(ファイル名) 指定アドレス:localhost:8080/jwapp/servlet/test.First web.xmlファイルはWEB-INFの中に置いています。 記述は以下のとおりです。↓ <?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" 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_5.xsd"> <servlet> <servlet-name>first</servlet-name> <servlet-class>test.First</servlet-class> </servlet> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/first</url-pattern> </servlet-mapping> </web-app> Servletのコードは以下のとおりです。↓ package test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class First01 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{ res.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=res.getWriter(); out.println("<html)"); out.println("<head>"); out.println("<title>テスト</title>"); out.println("<h1>テスト</h1>"); out.println("</body>"); out.println("</heml>"); } }

    • ベストアンサー
    • Java
  • 【servlet】フォワードを使った画面遷移

    java,サーブレット初学者です。表題の通り、フォワード を使って画面遷移を試みています。 以下のコードを記述しリンクをクリックすると確かに画面遷移はできるのですが、 フォワードが出来ているならURLの最後が【/Test1】になるのではないかと考えました。 ですが実際は【/NewFile2】となっているため、フォワードが出来ていないのかと思います。 どの様にしたら前者のような結果になるでしょうか。 ご教授頂きたいです。 サーブレット↓ package sample; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Test1") public class Test1 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher br = request.getRequestDispatcher("html/NewFile2.html"); br.forward(request, response); } } 遷移前の画面↓ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>テスト</title> </head> <body> <h2>sample</h2> <p>テストです</p> <a href ="/servlet_dayo/html/NewFile2.html">画面遷移する</a> </body> </html> 遷移先↓ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>テスト</title> </head> <body> <p>遷移先</p> </body> </html> サーバー:Tomcat8.5 os:macos を使用しています。どうぞよろしくお願いします。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • ServletからJSP

    はじめまして。 お世話になります。 以下のようにサーブレットから条件によってJSPファイルを 使い分けようと思っているのですが、うまく出来ません。   protected void processRequest(HttpServletRequest request, HttpServletResponse response)   throws ServletException, java.io.IOException   {     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>タイトル</title>");     out.println("</head>");     out.println("<body>");     RequestDispatcher rd = null;     if(/* 条件1 */)     {       rd = request.getRequestDispatcher("hoge1.jsp");     }     else if(/* 条件2 */)     {       rd = request.getRequestDispatcher("hoge2.jsp");     }     else     {       rd = request.getRequestDispatcher("hoge3.jsp");     }     out.println("</body>");     out.println("</html>");     if(rd != null)     {       rd.include(request,response);     }   } このようにすると <html> ・ ・ サーブレットから出力した部分 ・ </html> <****> JSPで出力した部分 </****> とサーブレットの部分だけ先に出力されてしまいます。 JSPファイルの前後に出力させるにはどのようにすればよいのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • サーブレットのログ出力先

    javaを勉強し始めて1ヶ月にも満たない初心者ですが助言を頂けないでしょうか? また、見当違いの事を質問しているかもしれませんが、その場合は指摘下さい。 現在、下記環境にて簡単なサーブレットを作成しています。 ・OS:WindowsXP ・JDK:1.6.0_24 ・Tomcat:7.0.8 ・HelloWorldServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class helloWorldServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("Hello World!!"); out.println("</body></html>"); log("HelloWorldServlet"); } } サーブレットが正常動作する事をログ上でも確認できればと思い、 logメソッドを使用してログの出力をしました。 ログはTomcatのルート配下にある[logs]というフォルダ内に、 [localhost.yyyy-mm-dd.log] というファイルが作成され、その中に記述されているところまでは確認できました。 できればアプリケーション毎に作成されるファイル名や作成されるファイルの保存場所を 明示的に指定したいと思うのですが、そうするにはどうしたら宜しいでしょうか?

    • ベストアンサー
    • Java
  • サーブレットからBeanに

    こんにちは areaフォルダに AreaServlet 、GetterServlet beanフォルダに FirstBean ============================== package area; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class AreaServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String info="滋賀県"; bean.FirstBean fiBe = new bean.FirstBean(); fiBe.setZip(info); response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); out.println("<html>"); out.println("<head><title>BeanServlet</title></head>"); out.println("<body>"); out.println("FirstBeanにセットされたデータ:" + fiBe.getZip() ); out.println("<p><a href=\"/jspbean2/servlet/area.GetterServlet\">Bean確認用</a>"); out.println("</body></html>"); } } ============================== package area; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class GetterServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); bean.FirstBean fiBe = new bean.FirstBean(); out.println("FirstBeanにセットされたデータ:" + fiBe.getZip() ); } } ============================== package bean; public class FirstBean { private String zip; //Setterの定義 public void setZip(String newZip) { zip = newZip; } //Getterの定義 public String getZip() { return zip; } } ============================== AreaServlet ではきちんと bean へ文字列を setし、また文字列を getしているようです。 その後 AreaServlet から GetterServlet へと移ったとき GetterServlet にも bean から文字列をgetしたいのに、どうしてか null が返ってgetできません??? どのようにしたら良いでしょうか? よろしくお願いします。

専門家に質問してみよう