在javascript中获取servlet值,并使用ajax将该值分配给一个文本框

Get servlet value in javascript and assign that value to a textbox using ajax

本文关键字:分配 文本 一个 ajax servlet 获取 javascript      更新时间:2023-09-26

我有一个servlet,从属性文件中获取值。我想在javascript中从servlet获取值,并使用AJAX将该值设置为文本框。我是Ajax的新手,所以请通过查看我的代码为我提供一个解决方案。

SERVLET

       @WebServlet("/PopulateProperties")
      public class PopulateProperties extends HttpServlet {
     private static final long serialVersionUID = 1L;
     Properties prop = new Properties(); 
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String serverName=request.getParameter("servernameDD");
    List<Map<String,String>> returnObj = new ArrayList<Map<String,String>>();
    String[] servers = getSearchAttr("servers");
    if (servers != null && servers.length > 0) {

        String[] lookfor = getSearchAttr("servers_lookfor");
        for (String server : servers) {
            Map<String,String> obj = new HashMap<String,String>();
            if (lookfor != null) {
                for (String look : lookfor) {
                    //System.out.println("looking for :"+look);
                    String value =  prop.getProperty(server+"_"+look);
                    if(server.equalsIgnoreCase(serverName)){
                        if(look.equalsIgnoreCase("Links")){
                        String getlook=prop.getProperty(look);
                        String getlink=prop.getProperty(server+'_'+look,"Links");
                        System.out.println("Hello" +getlink);
                        System.out.println(getlook);
                        request.setAttribute("serverLink", getlink);
                        }
                    }
                    if (value != null) {
                        obj.put(look, value);
                    }
                    request.setAttribute("servers", server);
                    request.setAttribute("lookfor", look);
                }           
            }       
            //System.out.println("Object :"+obj);
            returnObj.add(obj);
        }

    }
    response.sendRedirect("updateserverstatus.html");
        }



private String[] getSearchAttr( String property){
    String lookfor = prop.getProperty(property,"");
    String[] ret = {lookfor};
    if (lookfor.contains(",")) {
        return lookfor.split(",");
    } else {
        //System.out.println("comma not present in "+property);
        //System.out.println("webservice :"+lookfor);
        return ret;
        }
     }

我尝试了以下Ajax请求,但收到了"serverLink未定义错误"

function OnSelectionChange(){

$.ajax({
    type: "POST",
    url: "/PopulateProperties",
    data: "{Links: " + serverLink + "}",
    success: function(result){
        alert(result.d);
        console.log(result);
    }
});
  }

您使用servlet来获取数据和转发。使用servlet提供数据不是一种合适的方式。更好的解决方案是:

在servlet中,您应该只返回json格式的属性数据。您可以参考此
然后在html页面中使用ajax获取这些数据,并更新textarea的文本。

最好仅为此目的创建单独的servlet。这将保持代码的连贯性。传递将用于缩小到需要检索的数据的所有参数。

为了简单起见,只需返回值,也可以将数据作为JSON键值对返回。

如果你的文本框是这样的。<input type="text" id="prop_txt">那么ajax代码将是

$.ajax({
  type: "POST",
  url: "/PopulateProperties",
  data: "{A:(..a value..),
          B:(..b value..),
          ....
          ....
          (..all the parameters required..)
         }",
  success: function(result){
      //alert(result.d);
      console.log(result);
      $('#prop_txt').val(result);
  }
});

希望这个和平。