ASP.NETでURLにマッピングされたプレーンテキスト返却モジュール

このQ&Aのポイント
  • Ajax学習中に気づいたことは、javascriptのrequestオブジェクトのopen()メソッドの第1引数は任意のテキストストリームを返せること。
  • 質問の意図は、ASP.NETでURLにマッピングされたプレーンテキストを返すモジュールを作りたいこと。
  • 現在の問題は、Visial Studio上でaspx + コードビハインドの構成で作成した場合、HTMLのコードが含まれてしまうこと。純粋なプレーンテキストを返すモジュールをどのように作るかがわからない。
回答を見る
  • ベストアンサー

ASP.NETでURLにマッピングされたして、プレーンテキスト返却モジュール

質問の意図。 現在、Ajaxの学習を深めています。 javascript側のrequestオブジェクトのopen()メソッドの 第1引数のURLは単なるテキストストリームを 返すものであれば何でもよいことがわかりました。 1) 単なる、CSVなどのテキストデータを静的にWebサイトに配置。 2) CGIでPerlや、Java Servletでresponse.println( 等で、 単なるテキストデータを返す。 上記(1),(2)のような別に画面とか、HTMLとか関係ないような サーブレットのようなもの(JSPとかからまない)ものに 対応するURLを javascript側のrequestオブジェクトのopen()メソッドの 第1引数として、 渡せばよいらしいです。 ところが、Visial Studio上で作成した。 aspx + コードビハインドの構成だと、 はじめから、aspx上に、HTMLのコードが入っています。 Visual Studio 上のC#, VBで、インテリセンス機能を効かせながら 作れるモジュールで、URLとマッピング可能なモジュールで、 かつ、 Java Servletの単なるresponse.println( するだけのような純粋なプレーンテキストを吐き出すモジュールは どのようにして、作るのでしょうか?

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

Page_load で Response.Write("hoge") Response.End()

lawson
質問者

お礼

######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### ごめんなさい。もうここにしかかけないので目立つよ うに書きます。 No2.にて、ブラウザにて、URLを直接打ち込むと、真っ白になると書きますたが。 よく見ると単にURLのうち間違いでした。 ちゃんと、プレーンテキストかえって来ました。 なので、javascriptのほうにもちゃんと、返せました。 うまくいきました。 お騒がせしました。 ######################### ######################### ######################### ######################### ######################### ######################### ######################### ######################### #########################

lawson
質問者

補足

ご回答ありがとうございます。 それは、 Visual Studio上で可能でしょうか? <script runat=server形式で aspxにロジックをベタ書きする。やり方のイメージでの回答でしょうか? Visual Studio上で、新規でページを作成して、 ためして見ましたが。 クライアント側には、空文字列が帰ってきます。 Ajax側のXmlHttpRequestオブジェクトのopen( の引数としては、"GET"と"POST"の両方を試してみましたが。 いづれも結果は同じでした。 パッケージ名に、個人名や、企業名が載っているためソースコードのすべては 貼り付けできませんので、 一部抜粋して、貼り付けます ############################# ASPXのコードの概要 ############################# //団体名を連想するパッケージなので //消します。 <%@ Page language="c#" Codebehind="Test.aspx.cs" AutoEventWireup="false" Inherits="XXXXXXXXXXXXXXXXXXX.Test" %> <HTML> <HEAD> <title>Test</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <form id="Form1" method="post" runat="server"> </form> </body> </HTML> ############################# ASPX.CSのコードの概要 ############################# public class Test : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { // // ページを初期化するユーザー コードをここに挿入します。 // this.Response.Write("Hellow World" + System.Environment.NewLine); this.Response.Write("d001,Dのデータです。15インチ液晶ディスプレイ" + System.Environment.NewLine); this.Response.Write("d002,Dのデータです。17インチ液晶ディスプレイ" + System.Environment.NewLine); this.Response.Write("d003,Dのデータです。19インチ液晶ディスプレイ" + System.Environment.NewLine); this.Response.Write("d004,Dのデータです。20インチ液晶ディスプレイ" + System.Environment.NewLine); // this.Response.Write("d005,Dのデータです。21インチ液晶ディスプレイ" + System.Environment.NewLine); this.Response.End(); } ############################# Ajaxのjavascript側でのコード概要、(通信部の共通ロジック・・・ ############################# // httpObj.open("GET", target_url, true); httpObj.open("POST", target_url, true); の両方で、ためして、駄目でした。 //引数で与えられたURLにHTTPリクエストを行い、指定された関数を実行 function httpPostRequest(target_url, functionReference) { alert("httpPostRequest()"); try { if(window.XMLHttpRequest) { httpObj = new XMLHttpRequest(); } else if(window.ActiveXObject) { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); } else { httpObj = false; } } catch(e) { httpObj = false; } if(!httpObj) { httpObjGenerateFail(); } timerId = setInterval('timeoutCheck()', 1000); // httpObj.open("GET", target_url, true); httpObj.open("POST", target_url, true); httpObj.onreadystatechange = function() { if(httpObj.readyState == 4) { clearInterval(timerId); if(httpObj.status == 200) { functionReference(httpObj.responseText); } else { alert(httpObj.status + ':' + httpObj.statusText); return false; } } } //タイムアウト秒数の再設定 timeout_sec = timeout_sec_InitialValue; //リクエスト送信 httpObj.send(''); }

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

ブラウザにaspxのURLを入れるとどうなりますか? あと、InetspyなどのHTTPモニタで動きを見るとか。

lawson
質問者

お礼

もうひとつ、補足します。 No1の補足にて、貼り付けた通信部分を "GET"の形式にして、 httpRequest('http://www.google.co.jp', generateDropdownList); と、googleのURLですると、 googleのhtmlソースがテキストで帰ってきました。

lawson
質問者

補足

ブラウザの入力欄に http://hogehoge/hoge/Test.aspx と打ち込むと画面は真っ白です。 HTMLソースを除いてみると、 ################################# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> ################################# これは、先ほどのASPX上に記載されているHTMLイメージと 不一致しており、少々変な感じです。 ところが、 Test.aspxをVisual Studio上でスタートアップページとして 選択して、VS上から、F5キーにて、実行すると、 d001,Dのデータです。15インチ液晶ディスプレイ d002,Dのデータです。17インチ液晶ディスプレイ d003,Dのデータです。19インチ液晶ディスプレイ d004,Dのデータです。20インチ液晶ディスプレイ と表示されます。 <htmlが混じってるのかな?と思い。 HTMLソースを除いてみると、 綺麗に、 ################################################### d001,Dのデータです。15インチ液晶ディスプレイ d002,Dのデータです。17インチ液晶ディスプレイ d003,Dのデータです。19インチ液晶ディスプレイ d004,Dのデータです。20インチ液晶ディスプレイ ################################################### と純粋なプレーンテキストでした。 画面として、ASPXが実行されるのではなく、 単なるプレーンテキストを返却する。 URLと、マッピングされたロジックを作りたいです。 Java Servletなどでは、 out.println( 形式でやって、ブラウザでたたいても、 そのままのものが帰ります。 それとおなじことが、Visual Studio上で作業したい というのが、この質問の趣旨です。

関連するQ&A

  • RequestDispatcher でURL引数の扱い

    はじめまして。SINといいます。 今、ServletとJSPを使っているんですが、JSPからServletにはURL引数を渡す ことはできているんですが、ServletからJSPにはURL引数を渡すことはできるのでしょうか? 色々と調べていたんですが、わからず困っています。 SrvletからJSPへはRequestDispatcher の forward メソッドを使っています。 どなたか知恵をお貸しください。 下記にソースを抜粋したものを書きました。 String nextUrl = "/xxxx/xxxxx.jsp?aaa"; ServletContext context = request.getSession().getServletContext(); RequestDispatcher requestDispatcher = context.getRequestDispatcher(nextUrl); requestDispatcher.forward(request, response);

  • getParameterとgetInitParameterの違いについて

    いつもお世話になっています。 現在HTMLファイルからServletを呼び出す処理を行っています。 Servletファイル側のdoPostメソッドのなかでよく記述してある HttpServletRequest.getparameter("パラメタ名")は HTMLファイルのFORMタグのなかにある情報を取得するものですが、 初期処理(initメソッド)でよく記述されている ServletConfig.getInitParameter("パラメタ名")は どこの情報を取得しようとしているものなのでしょうか? また public void doPost(HttpServletRequest request, HttpServletResponse response) という記述ではServletファイルが呼ばれた時に引数をrequestに取得しますが このときresponseの中身はNULLの状態なのでしょうか? responseの使い方がいまいちイメージできなくて。。 たくさん質問してすいません。 何かお気づきの方が居られましたら、ご教授ください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Headリクエスト、ディズパッチャについて

    以下、あるソフトウェアで、このような条件のときに不具合が出るという内容なのですが、理解できないのです。 wwwブラウザ等から、Http Headリクエストを送り、サーブレットが受けます。 リクエストオブジェクトをレスポンスオブジェクトをコンテナが生成します。 それを通じて、HttpServlet実装のdoHeadが呼び出され、その後、オーバーライドされたdoGetメソッドにリクエストオブジェクトとレスポンスオブジェクトが渡され(ここが疑問、doHeadをオーバーライドせずにこんなことができるのか?doHeadから明示的にdoGetを呼べばできそうだが、doHeadをオーバーライドしている場合は除くのだそうです) その渡されたリクエストオブジェクトとレスポンスオブジェクトをRequestDispatcherのfowardメソッドでディスパッチしようとするとレスポンスオブジェクトをHttpServletResponseFacadeにキャストしようとするのだが、実際にはNoBodyResponseである為キャストに失敗。java.lang.ClassCastExceptionが出る。 (1)HEADリクエストが出来ない HttpURLConnection.setRequestMethod("HEAD"); のようにしてURLに送ってみたのですが、 「ドキュメントにデータが含まれていません」 というエラーが出てしまいました。 htmlから<form name="form" method="head" action="URL">のようにした所、「Getメソッドが無いのにGetメソッドが呼ばれている」というエラーになってしまいました。 (2)doHeadを通過してdoGetに行くという図で示されているのですが、どういうことかわからないです。どうやって実現するのか? 何か思いつくことがあったら教えていただけると助かります。

    • ベストアンサー
    • Java
  • このソースのコンパイルできません。

    java, サーブレット初心者でコンパイルできません。エラーは以下のとおりです。 初歩的な質問で申し訳ないですがよろしくお願いします。 http://www.javaroad.jp/opensource/js_tomcat2.htm のページのHelloServlet.javaをコピーしてコンパイルをしようとしたらエラーが、、、。 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println(new java.util.Date()); out.println("</BODY>"); out.println("</HTML>"); } } ーーーーーーーーーーーーーーーーーーーーーーーーーーー HelloServlet.java:7: エラー: パッケージjavax.servletは存在しません import javax.servlet.*; ^ HelloServlet.java:8: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.*; ^ HelloServlet.java:10: エラー: シンボルを見つけられません public class HelloServlet extends HttpServlet { ^ シンボル: クラス HttpServlet HelloServlet.java:11: エラー: シンボルを見つけられません public void doGet(HttpServletRequest request, ^ シンボル: クラス HttpServletRequest 場所: クラス HelloServlet HelloServlet.java:12: エラー: シンボルを見つけられません HttpServletResponse response) ^ シンボル: クラス HttpServletResponse 場所: クラス HelloServlet HelloServlet.java:13: エラー: シンボルを見つけられません throws IOException, ServletException { ^ シンボル: クラス ServletException 場所: クラス HelloServlet エラー6個 エラー

    • ベストアンサー
    • Java
  • ASP.NETでWord読込→編集→テキスト取得

    下記のような処理をしようと悪戦苦闘中です。 [メイン画面(IE)]ボタンクリックで子画面開く [子画面(IE)]MicrosoftWord文書とOKボタン表示       →文書編集後、ボタンクリックでテキストを取得(できればHTML形式で)       →メイン画面に取得テキストを表示 <開発環境>  VisualStudio2010  C# Web Applicationを作るのは初めてで、いろいろ勉強しながら、子画面にWordファイルを 表示するところまでたどり着きました。  ・子画面にIFRAMEを挿入し、別のASPXファイルをSRCに設定  ・そのASPXのPage_Loadで、    Response.ClearHeaders(); Response.ClearContent(); Response.Buffer = true; Response.ContentType = "application/msword"; Response.WriteFile(パラメータで渡されたファイルパス); Response.Flush(); Response.End();   として、Word文書を表示 ここから先が分からないのです。 子画面のボタンクリック時に、何とかして表示中のWord文書のテキストを取得できないで しょうか。 Windows Forms ApplicationでWord Objectを操作するプログラムなら経験があるので、 Word Objectを取得できれば後は何とかなると思うのですが... IFRAMEに表示しているWordのObjectが取得不可能であれば、  ・子画面のボタンクリックで一旦中間ファイルに保存  ・メイン画面の処理で中間ファイルからWordObject生成 みたいな感じかなとも思うのですが、「一旦中間ファイルに保存」というのはどうすれば いいのでしょうか? どなたかお知恵をお貸しください。よろしくお願いします。

  • コンパイルエラー

    JBuiderでコンパイルしようとするとエラーがでてしまいます。ソースは以下の通りです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Integer count=(Integer)session.getAttribute("count"); if(count == null){  count = new Integer(0); }else{  count = new Integer(count.intValue()+1); } session.setAttribute("count",count); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out= response.getWriter(); out.println("<html>"); out.println("<head><title>TestServlet</title></head>"); out.println("<body>"); out.println(session.getId()); out.println("<p>\"count\"という名前のattribute = " + count +"</p>"); out.println("</body></html>"); out.close(); } } これをコンパイルすると、 "TestServlet.java": エラー #: 300 : メソッド getAttribute(java.lang.String) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 9, 列 36 "TestServlet.java": エラー #: 300 : メソッド setAttribute(java.lang.String, java.lang.Integer) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 15, 列 13 というメッセージがでます。何が原因なのか教えてください。

  • アラートボックスが表示されません。

    はじめまして。 初めて質問させていただきます。 JavaServletでテキストボックスとボタンを置き、submitすると下に何個でも追記できるプログラムを作りました。 そこに送信時、テキストボックスが空の場合「空です」のアラートボックスが表示され、送信が中断される機能を追加しようと思っています。 下記のようにコーディングした場合、テキストボックス内の状態に関わらず、アラートボックスが表示されません。色々試したところ、入力の有無に関わらず、ボタンを押すたびにアラートボックスが表示されたり、今回のように全く表示されなかったりします。 ちなみに下記がコーディング内容です。 大変お手数かけますが、解決方法をご教示いただけると幸いです。 ※WebアプリケーションサーバはTomcatを用いて、アドレスは http://localhost:8080/study/servlet/alerttest としています。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; /** * 送信時にテキストボックスが空の場合"空です"のアラートボックスが * 示され、送信を中断させるようにする。 */ public class alerttest extends HttpServlet { // doGetメソッドをオーバーライド public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ボディ部を出力するためのオブジェクト生成 PrintWriter out = response.getWriter(); // リクエストパラメータの文字エンコーディング名をセット response.setContentType("text/html; charset=Shift_JIS"); out.println("<html>"); out.println("<head>"); out.println("<title>alerttest</title>"); out.println("<script type='text/javascript'>"); out.println("<!--"); out.println("function startAlert()"); out.println("{"); out.println("var naiyou = document.getElementsByName('moziretsu');"); out.println("if(naiyou == '')"); out.println("{"); out.println("alert('空です');"); out.println("}"); out.println("}"); out.println("// --></script>"); out.println("</head>"); out.println("<body>"); out.println("<FORM action='/study/servlet/alerttest' method='GET'>"); out.println("<INPUT type='text' name='moziretsu'>"); out.println("<INPUT type='submit' value='クエリ送信' onclick='startAlert()'><BR>"); // 入力パラメータの取得 String moziretsuPrm = request.getParameter("moziretsu"); Object moziretsuObj = moziretsuPrm; // セッションオブジェクトの取りだし HttpSession session = request.getSession(); // セッションにオブジェクトの追加 if(moziretsuPrm != null) { session.setAttribute(moziretsuPrm,moziretsuObj); } // セッション属性の一覧を出力 Enumeration names = session.getAttributeNames(); while(names.hasMoreElements()) { String key = (String)names.nextElement(); out.println(key + "<br>"); } out.println("</body>"); out.println("</html>"); } }

  • eclipseで作ったサーブレットのサーバーへのアップロード方法について

    サーブレットのアップロードについて eclipse(バージョン: 3.1.1) Tomcat5.5 jre1.6.0_01 の環境で、下記のようなプロジェクトexamplesをeclipseで localhost上に作成しました。 これをwebサーバーにアップして、 (DocumentRoot "/usr/local/apache2/htdocs") 動作させたいのですが、 javaファイル、jarファイル、wec.xml等を DocumentRoot配下にどのようなディレクトリ構造を作って、 配置すれば動くのでしょうか。 サーバーは apache-2.2.0 Tomcat-4.1.31 であり、以前より正常に運用しているサーバです。 examples | |--JREシステムライブラリー[jre1.6.0_01] | |---(省略) |--TOMCAT_HOME/common/lib/servlet-api.jar | |---(省略) |--TOMCAT_HOME/common/lib/jasper-runtime.jar | |---(省略) |--TOMCAT_HOME/common/lib/jsp-api.jar | |---(省略) | |--WEB-INF/src | | | |--chap09_servlet02 | | | |--HelloServlet.java | |--WEB-INF | | | |--web.xml 【HelloServletWorld.java】 package chap09_servlet02; 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 HelloServletWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html; charset=Windows-31J"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>Servlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<h1>"); out.println("<font color =\"blue\">"); out.println("Hello ServletWorld"); out.println("</font>"); out.println("</h1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } } 【web.xml】 <?xml version="1.0" encoding="ISO-8859-1"?> <!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>HelloServletWorld</servlet-name> <servlet-class>chap09_servlet02.HelloServletWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServletWorld</servlet-name> <url-pattern>/HelloServletWorld</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • 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
  • TomcatのServletについて

    TomcatのServletについて TomcatのServletでエラーが出て困っています。 エラーは405で、「HTTPのGETメソッドは、このURLではサポートされていません。」と表示されます。 このときのServletとweb.xmlは以下の通りです。 -----<Servlet>----------------------------------- public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; public MyServlet() { // TODO Auto-generated constructor stub super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain; charset=windows-31j"); response.setCharacterEncoding("windows-31j"); PrintWriter writer = response.getWriter(); writer.println("log check"); } } -------------------------------------------------- -----<web.xml>----------------------------------- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>Test</servlet-name> <servlet-class>servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/test.do</url-pattern> </servlet-mapping> </web-app> -------------------------------------------------- テスト用のServletを動かしてみると、 エラーが出てしまって、どうすればいいか困っています。 なんとかご助言をお願いいたします。 まだまだ情報が足りないかもしれません。 そのようなご指摘もお願いいたします。 よろしくお願いいたします。