如何将变量的值从java类传递到jsp页面

我有两个名为Admin.javaindex.jsp文件。

Admin.java通过一个函数,我检索名为res Admin.java的值。 需要将此变量传递给JSP页面。

Admin.java位于C:\Users\praveen\workspace\SemanticWeb\src\controllerindex.jsp位于C:\Users\praveen\workspace\SemanticWeb\WebContent

Admin.java的代码是:

 public Admin() { super(); } protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { if (action.equals("login")) { String userName=""; String password=""; userName = request.getParameter("username"); password = request.getParameter("password"); response.setCharacterEncoding("UTF-8"); SemanticSearch semsearch = new SemanticSearch(request.getSession()); semsearch.loadData(REALPATH + RDFDATASOURCEFILE1); String res=semsearch.searchForUser(userName, password); System.out.println("The value of res been passed is "+res); request.setAttribute("rest", res); return; } 

index.jsp的代码是

 function login(user, pass) { $.ajax({ type:"GET", url: "Admin?action=login", dataType: "text", data: { username: user, password: pass }, success: function(response){ } 

在…内

 function(response) { ...... } 

我需要访问Admin.java传递的res值。 我无法在互联网上为我的代码获得任何适当的帮助。 请有人帮我这个。

从你的代码,

 request.setAttribute("rest", res); 

您不应将其设置为请求属性。 设置请求属性仅在转发到JSP文件时才有用。 你需要自己直接写回答。 替换为

 response.getWriter().write(res); 

这样它最终会进入响应体,并在JS函数中作为变量response使用。

也可以看看:

  • 如何通过Servlet / Ajax更新当前页面?

看起来你正在做AJAX,所以我说你的响应需要以与AJAX兼容的方式编码(JSON,XML,…)。

如果你进行AJAX编码,你的函数可能如下所示:

 function(response) { var toplevel = response.; } 

编辑:

我们使用JSON Simple进行JSON编码。

然后我们的Java后端看起来像这样(没有错误检查的简化版本):

 public String execute() { JSONObject jsonResult = new JSONObject(); jsonResult.put( "result", "ok"); return jsonResult.toJSONString(); } 

并在Javascript函数中:

 function(response) { var result = response.result; //now yields "ok" } 

如果这是一个ajax请求,您可以将请求转发到另一个jsp页面而不是返回。 有了这个

 getServletContext().getRequestDispatcher("/ajax.jsp").forward(request, response); create the jsp page(ajax.jsp) on your webcontent and add this sample code. 

${rest}

另一种方法是用这个替换你的System.out.println

 PrintWriter out = response.getWriter(); out.print("The value of res been passed is "+res); 

但我想这是一个不好的做法。 见这里的例子。