簡體   English   中英

在不加載當前jsp頁面的情況下獲取servlet屬性

[英]get servlet attribute without loading current jsp page

在我的servlet上,我有以下代碼:

processRequest(...,...){

String page = "";
if(true){
String str = "hello";
request.setAttribute("str",str);
page = "currentPage#";
}
else{
page = "otherPage";
}
RequestDispatcher rd = requestDispatcher("/",page);
}

在我的JSP上,要獲取servlet屬性,請使用以下命令:

<input type = "text" value = "<c out>${str}</c out>">

這會發生什么

當我使用currentPage# ,當前頁面不會加載,但是input標簽始終具有null

但是如果我使用currentPage (不帶#號),則會得到頁面加載的“ hello”值,我不希望發生這種情況,因為頁面及其內容將刷新。

有人可以在不加載當前頁面的情況下幫助我獲取str attribute還是有什么辦法嗎?

您使用Ajax加載了頁面的一部分。 使用jquery甚至更容易

例如,

JSP:

    <script src="http://code.jquery.com/jquery-1.10.2.js"
        type="text/javascript"></script>
    <script src="js/app-ajax.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
    $('#userName').blur(function() {
        $.ajax({
            url : 'GetUserServlet',
            tpye: "POST",
            data : {
                userName : $('#userName').val()
            },
            success : function(responseText) {
                $('#ajaxGetUserServletResponse').text(responseText);
            }
        });
    });
});
</script>
    </head>
    <body>     
        <form>
            Enter Your Name: <input type="text" id="userName" />
        </form>
        <br>
        <br> 
        <strong>Ajax Response</strong>:
        <div id="ajaxGetUserServletResponse"></div>

在您的servlet中,

String userName = request.getParameter("userName").trim();
        if(userName == null || "".equals(userName)){
            userName = "Guest";
        }

        String greetings = "Hello " + userName;         
        response.setContentType("text/plain");
        response.getWriter().write(greetings);

在jsp中提交from時,將僅刷新ajaxGetUserServletResponse並顯示來自服務器的數據。

學到更多

使用jQuery,您可以簡單地通過jQuery.ajax()完成此操作。 假設您有一個文本輸入:

 <input type="text" id="search"> 

從Servlet中,返回所需的字符串:

 String empName = "Test Coder"; PrintWriter out = response.getWriter(); out.println(empName); 

您可以像這樣調用onClick函數:

 $("#search").on("click", function() { $.ajax({ type: "POST", url: "YOUR SERVLET NAME", data: "{empid: " + empid + "}", // what ever the data you need to pass to server to generate yout "String" success: function(result) { alert(result.empName); // this should be your String parameter returned from the Servlet. $("search").val(str); // setting the String value on your text input console.log(result); }, error: function(error) { console.log("error" + error); } }); }); 

這只是一個示例,我沒有嘗試過。.希望這將為您提供一個清晰的途徑來實現您的目標。 嘗試讓我們知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM