JSP で発生する可能性のある問題への回答
1. Jsp と SSI #include を組み合わせる方法は?
純粋な HTML は、次のように JSP に含めることができます。
< !--#include file="data.inc"-- >
ただし、data.inc に JSP CODE が含まれている場合は、以下を使用できます。
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. スレッドセーフな JSP を実行するにはどうすればよいですか?
次のコマンドを追加するだけです
< %@ ページ isThreadSafe="false" % > </P>
3. JSP は HTML FORM 内のデータをどのように処理しますか?
次のように、組み込みのリクエスト オブジェクトを使用するだけです。
<%
文字列アイテム = request.getParameter("アイテム");
int howMany = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. JSP に静的ファイルを含めるにはどうすればよいですか?
静的インクルージョンは次のとおりです: < %@ include file="copyright.html" % >
動的インクルージョンは次のとおりです: < jsp:include page="copyright.html"lush="true"/ > </P>
5. JSP でコメントを使用するにはどうすればよいですか?
主な方法は次の 4 つです。
1. < %-- および --% >
2. //
3. /**そして**/
4. < !--and-- > </P>
6. JSP でブラウジング リダイレクトを実行するにはどうすればよいですか?
次のメソッドを使用します: response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
次のように、HTTP HEADER 属性を物理的に変更することもできます。
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
文字列 newLocn="/newpath/index.html";
response.setHeader("場所",newLocn);
% > </P>
7. JSP または SERVLET の出力が BROWSER によって CACHE に保存されないようにするにはどうすればよいですか?
次のスクリプトを JSP ファイルの先頭に追加するだけです。
<%
response.setHeader("キャッシュ制御","ストアなし"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); // プロキシ サーバーでのキャッシュを防止します。
% > </P>
8. JSP で COOKIE を設定するにはどうすればよいですか?
COOKIE は HTTP ヘッダーの一部として送信され、次のように設定できます。
<%
Cookie mycookie = new Cookie("aName","avalue");
応答.addCookie(mycookie);
% > </P>
9. JSP で COOKIE を削除するにはどうすればよいですか?
<%
Cookie killMyCookie = new Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
応答.addCookie(killMyCookie);
% > </P>
10. JSP リクエスト処理中に JSP の実行を停止する方法は以下のとおりです。
<%
if (request.getParameter("wen") != null) {
//何かをする
} それ以外 {
戻る;
}
% > </P>
11. JSP でのメソッドの定義方法 メソッドは定義できますが、JSP の組み込みオブジェクトに直接アクセスすることはできず、パラメータ メソッドを介して渡します。次のように:
<%!
public String howBadFrom(HttpServletRequest req) {
HttpSession ses = req.getSession();
...
req.getRemoteHost(); を返します。
}
%>
<%
out.print(「一般的に言えば、ラオ・リーは悪者ではない」);
%>
< %= howBadFrom(リクエスト) % > </P>
12. BROWSER で COOKIES がオフになっている場合、次のように JSP で SESSION を開いて URL 書き換えを追跡および使用するにはどうすればよいですか。
hello1.jsp
< %@ ページ session="true" % >
<%
整数番号 = 新しい整数(100);
session.putvalue("num",num);
文字列 URL =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hello2.jsp
< %@ ページ session="true" % >
<%
整数 i= (整数)session.getvalue("num");
out.println("セッション内の数値は "+i.intvalue());
% > </P>
13. EMAIL は JSP で送信できますか? SUN の特別なパッケージ、sun.net.smtp パッケージを使用できます。次のスクリプトは、SmtpClient クラスを使用して EMAIL を送信します。
< %@ ページ import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
文字列 from=" <A href=" mailto:[email protected]">[email protected]</A >";
文字列 to=" <A href=" mailto:[email protected]">[email protected]</A >、 <A href=" mailto:[email protected]">[email protected]。 cn</A> ";
試す{
SmtpClient クライアント = new SmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
PrintStream メッセージ = client.startMessage();
message.println("宛先: " + 宛先);
message.println("件名: JSP から電子メールを送信します!");
message.println("これは JSP ページから送信されました!");
message.println();
message.println("クール! :-)");
message.println();
message.println("グッドボーイ");
message.println("私はgenius.comにいます");
message.println();
client.closeServer();
}
catch (IOException e){
System.out.println("メール送信エラー:"+e);
}
% > </P>
14. SERVLET で JSP エラーページを呼び出すことはできますか? SERVLET 制御ロジックユニットで JSP エラーページを呼び出す方法は次のとおりです。
protected void sendErrorRedirect(HttpServletRequest リクエスト,
HttpServletResponse 応答、文字列 errorPageURL、
投擲可能 e)
ServletException、IOExceptionをスローします{
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext()。
getRequestDispatcher(errorPageURL).forward(リクエスト,
応答);
} </P>
public void doPost(HttpServletRequest リクエスト,HttpServletResponse レスポンス) {
試す {
//何かをする
} catch (例外例) {
試す {
sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);
} catch (例外 e) {
e.printStackTrace();
}
}
} </P>
15. JSP と APPLET はどのように通信しますか?
JSP が EJB SessionBean と通信する方法 次のコード スニペットは、優れたデモンストレーションを提供します。
< %@ ページ import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
//SessionBeanHome インターフェイス インスタンスへのグローバル参照を定義します
AccountHome accHome=null;
public void jspInit() {
//ホームインターフェースインスタンスを取得
InitialContext cntxt = new InitialContext();
オブジェクト参照 = cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//SessionBeanをインスタンス化する
アカウント acct = accHome.create();
//リモートメソッドを呼び出す
acct.doWhatever(...);
// 等々
% > </P>
16. 結果セットを使用するときに、「null」フィールドを含むフィールドが HTML 入力テキスト フィールドに表示されないようにするにはどうすればよいですか?
次のように、目的を達成するために単純な関数を定義できます。
<%!
文字列blanknull(文字列s) {
return (s == null) "" : s;
}
% > </P>
次に、JSP FORM で次のように使用できます。
< input type="text" name="靴サイズ" value="< %=blanknull(靴サイズ)% >" > </P>
17. SERVLET または JSP でファイル (バイナリ、テキスト、実行可能ファイルなど) をダウンロードするにはどうすればよいですか?
現在、2 つのソリューションが提供されています。
A: HTTP を使用します。
B: サーブレットでは、ContentType を設定し、java.io パッケージの Stream および他のクラスを使用することでこれを行うことができます。次に例を示します。
response.setContentType("application/x-msword");
次に、出力バッファに何かを書き込むだけです。 </P>
18. useBean フラグを使用して BEAN を初期化するときに初期化パラメータを受け入れるには、次の 2 つのタグを使用するだけです。
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. JSP を使用して顧客のブラウザ情報を取得するにはどうすればよいですか?
request.getHeader(String)</P>を使用してください。
20. JSP をサブルーチンのように呼び出すことはできますか?
もちろん、< jsp:include page="relativeURL" flash="true"/ > </P> を使用することもできます。
21. JSP で使用されているクラスを再コンパイルした後、JVM が古いクラスを引き続き使用するのはなぜですか? </P>
< <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > と < jsp:include page="abc.jsp"/ > の違いは何ですか?
前者は静的包含であり、後者は動的包含です。</P>
22. JSPの欠点は?
1. JAVA プログラムのデバッグには良いことはありません
2.ほとんどのサーブレット エンジンは接続プーリングをサポートしていないため、
3.サーブレット エンジンには標準がありません
4. JSP と他のスクリプト言語間の対話</P>
23. JSP は再帰呼び出しを行うことができますか?
もちろん、このページにフォームを送信すれば送信できます。</P>
34. JSPの国際化を実現するにはどうすればよいですか?
さまざまなバージョンのリソース バンドル プロパティ ファイルを提供するだけです</P>
25. JSP でテキスト ファイルを記述するにはどうすればよいですか?
次のような PrintWriter オブジェクトを使用します。
< %@ ページ import="java.io.*" % >
<%
文字列 str = "印刷してください";
文字列 nameOfTextFile = "/usr/anil/imp.txt";
試す {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(str);
pw.close();
catch(IOException e) {
out.println(e.getMessage());
}
% > </P>
26. JSP に絶対パス ファイルを含めるにはどうすればよいですか?
URLConnection を使用するだけです。 </P>
27. セッション オブジェクトはサーブレットと JSP 間で共有できますか?
もちろん、
HttpSession セッション = request.getSession(true);
session.putvalue("変数","値");
28. Javascript 変数を JSP SESSION にコピーできますか? </P>
29. 特定の時間が経過すると Cookie が期限切れになるように設定するにはどうすればよいですか?
Cookie.setMaxAge(int) を使用します。 </P>
30. 現在のセッション数を取得するにはどうすればよいですか?
HttpSessionBindingListeners を使用して追跡できます。</P>
31. すべての JSP ファイルで実行されるコードをセットアップできますか?その場合、共有することは可能でしょうか?
もちろん、JSP ファイルのエイリアスを定義することもできます: /jsp/=ybwen.genius.myPreprocessingServlet と、/jsp/ というプレフィックスが付いたファイルを使用できます。</P>
32. JSP ページの場合、複数のクライアントが同時にリクエストした場合、同期は可能ですか?
jsp:useBean 構文で beanName を使用する利点は何ですか?
beanName は Beans.instantiate() を使用して Bean を初期化します。 </P>
33. < jsp:forward > を使用しても、ブラウザのアドレス バーは変化しませんか?
response.sendRedirect("newURL") を使用します </P>
34. JSP 0.9 バージョンのファイルを JSP1.1 に変換するにはどうすればよいですか?
sed/awk を使用してください</P>
35. Javascript を使用せずに、JSP を使用して HTML FORM の入力フィールドのフォーカスを設定できますか?
まさか</P>
36. JSP を使用してデータベース接続バッファー プールに接続する最良の方法は何ですか?
1. JDBC2.0 のこのサービスでドライバーを使用する
2.本サービスを提供するアプリケーションサーバーを利用する