私は以前にこの質問を試みましたが、ほとんど成功しませんでしたが、それはおそらく私のせいなので、できるだけ具体的にします!
パート A) hello world 文字列を返すコンパイル済みの Java クラスがあります。このファイルのソース コードは次のとおりです。web.xml 設定を構成した後、localhost を指すブラウザーから良い結果を得ることができます。これは計画どおりに機能しています。
パート B) リンクを 1 つ含む HTML ランディング ページがあり、クリックするとローカル テキスト ファイルが読み込まれ、その中のコンテンツが置き換えられます。こちらも予定通り順調に進んでいます。
パート A は、クライアントがサーバー側の Java クラス ファイルを呼び出して出力を取得できることを意味します。パート B は、ボタンが押された後に Web ページの一部を置き換えることができることを意味します。
私の質問は、この時点から非常に簡単です。パート B からのリンクが押されたときに、更新されたテキストがパート A からの「hello world」結果セットを反映するように、2 つの概念をマージしたいと思います。
前もって感謝します。
パート A コード:
package mypkg;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<!DOCTYPE html>");
out.println("<html><head>");
out.println("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");
out.println("<title>Hello, World</title></head>");
out.println("<body>");
out.println("<h1>Hello, world!</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
パート B コード
<p id="mySentence">
<a href="#" onclick="javascript:getNewContent();">Click here to update the page</a>.
When you click the link, this content will be replaced.</p>
<script type="text/javascript">
var http = createRequestObject();
function createRequestObject() {
var objAjax;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
objAjax = new ActiveXObject("Microsoft.XMLHTTP");
}else{
objAjax = new XMLHttpRequest();
}
return objAjax;
}
function getNewContent(){
http.open('get','newcontent.txt');
http.onreadystatechange = updateNewContent;
http.send(null);
return false;
}
function updateNewContent(){
if(http.readyState == 4){
document.getElementById('mySentence').innerHTML = http.responseText;
}
}
</script>