【问题标题】:get servlet attribute without loading current jsp page在不加载当前 jsp 页面的情况下获取 servlet 属性
【发布时间】:2014-12-18 21:12:30
【问题描述】:

在我的 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 试试呢。因为你不想重新加载你的页面
  • 我不懂ajax,能举个例子吗?

标签: java javascript jquery jsp servlets


【解决方案1】:

使用 jQuery,你可以简单地通过 jQuery.ajax(); 假设您有一个文本输入:

&lt;input type="text" id="search"&gt;

从您的 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);
    }
  });

});

这只是一个示例,我没有尝试过..希望这将为您提供实现目标的清晰途径..!试着告诉我们。

【讨论】:

  • 哎呀,我的问题不清楚,我需要的是使用 jquery 或 javascript 获取 servlet 属性,而不是从 jsp 页面向 servlet 发送数据
  • 我试试你的代码,但这不起作用 alert(result.empName);
  • 它可能行不通,我只是想向您展示该过程,您应该如何在不使用 jquery ajax 调用刷新页面的情况下更新页面值。
【解决方案2】:

您使用 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 将被刷新以呈现来自服务器的数据。

Learn more

【讨论】:

  • “js/app-ajax.js”有什么用?,我可以在不包含任何其他 js 文件的情况下使用 ajax 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多