關於servlet與jsp&java類傳值問題

來源:互聯網
上載者:User

標籤:

為了實現單擊左側導覽列,動態改變右側(一個jsp檔案)的內容,需要改變變數var的值,進而實現改變default部分內容的目的(自己想的方法,因為實在是layman。應該有簡便快捷的方法,可我不知道。)

  詳述一下整個流程,以免以後忘記。定義一個java方法,其中定義靜態變數var,使得當var被賦予不同的值時default顯示不同內容。而賦值的觸發條件是單擊某個<a>,即onclick。這裡面的問題是,如何在jsp裡面改變java裡的變數值。。。。解決方案就是servelet了。下面是jsp中的js代碼,觸發條件為

<a href=""onclick=AjaxServlet("list")>  資訊</a>

  list是我希望傳遞給變數var的值

<script>    var req;    function AjaxServlet(pointInfo) {      //擷取表單提交的內容      var url="AjaxServlet?id="+pointInfo;
//?之前代表要訪問的servlet名稱,要在web.xml檔案裡定義。?後面是傳遞的值。 console.log(url); //建立一個XMLHttpRequest對象req if(window.XMLHttpRequest) { //IE7, Firefox, Opera支援 req = new XMLHttpRequest(); }else if(window.ActiveXObject) { //IE5,IE6支援 req = new ActiveXObject("Microsoft.XMLHTTP"); } /* open(String method,String url, boolean )函數有3個參數 method參數指定向servlet發送請求所使用的方法,有GET,POST等 boolean值指定是否非同步,true為使用,false為不使用。 我們使用非同步才能體會到Ajax強大的非同步功能。 */ req.open("POST", url, true);

//console.log("!!!!!!!!!!!!!!!!!!!!");//調試用
//onreadystatechange屬性存有處理伺服器響應的函數,有5個取值分別代表不同狀態
// req.onreadystatechange = callback; //不需要傳回值
//send函數發送請求 req.send(null); } </script>

  下面是servelet在web.xml檔案裡的配置,名字自訂。class即建立的java方法url-pattern是在jsp或其他位置調用servelet的方法,可以是自己定義的任何字串組合(應該是)。

  <servlet>        <servlet-name>AjaxServlet</servlet-name>        <servlet-class>Model.AjaxServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>AjaxServlet</servlet-name>        <url-pattern>/AjaxServlet</url-pattern>    </servlet-mapping>

  然後。java

package Model;/** * Created by sinisiter on 2015/7/11. */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 AjaxServlet extends HttpServlet {    protected void processRequest(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        try {            System.out.print("Nnnnn!!!!!");//調試時候用的,就不刪了            response.setContentType("text/html");            response.setHeader("Cache-Control", "no-store");            response.setHeader("Pragma", "no-cache");            response.setDateHeader("Expires", 0);            String name = request.getParameter("id");//得到傳遞的值            if(1>0) {                test.pointr=name;//賦值給我要的變數   後面的實現get與put方法神馬的,還沒搞明白。不過現在是可用的            }            else {                System.out.print("NO!!!!!");            }        } finally {            out.close();        }    }    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        processRequest(request, response);    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        processRequest(request, response);    }    @Override    public String getServletInfo() {        return "Short description";    }}

  ok。至此,整個工作結束

個人覺得,無非是servelet名稱一致。url-pattern定義正確,還有上面js用的是ajax的方式。

關於servlet與jsp&java類傳值問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.