How to pass a value of a variable from a java class to the jsp page
我有两个文件,分别是
在
admin.java的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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的代码是
1 2 3 4 5 6 7 8 9 10 11 | function login(user, pass) { $.ajax({ type:"GET", url:"Admin?action=login", dataType:"text", data: { username: user, password: pass }, success: function(response){ } |
内
1 2 3 4 | function(response) { ...... } |
我需要访问
从您的代码中,
1 | request.setAttribute("rest", res); |
您不应该将其设置为请求属性。只有在转发到JSP文件时,设置请求属性才有用。你需要把它直接写在你自己的回答上。将行替换为
1 | response.getWriter().write(res); |
这样,它将在响应主体中结束,并在JS函数中作为变量
- 如何通过servlet/ajax更新当前页面?
似乎您在使用Ajax,所以我想说您的响应需要以与Ajax兼容的方式(JSON、XML等)编码。
如果您使用Ajax编码,您的函数可能如下所示:
1 2 3 4 | function(response) { var toplevel = response.<your_top_level_element>; } |
编辑:
我们将简单的JSON用于JSON编码。
我们的Java后端看起来像这样(没有错误检查的简化版本):
1 2 3 4 5 6 7 8 | public String execute() { JSONObject jsonResult = new JSONObject(); jsonResult.put("result","ok"); return jsonResult.toJSONString(); } |
在javascript函数中:
1 2 3 4 | function(response) { var result = response.result; //now yields"ok" } |
如果这是一个Ajax请求,您可以将请求转发到另一个JSP页面,而不是返回。用这个
1 2 3 4 5 6 7 8 9 10 | getServletContext().getRequestDispatcher("/ajax.jsp").forward(request, response); create the jsp page(ajax.jsp) on your webcontent and add this sample code. <p> ${rest} </p> <!-- Note: You can actually design your html here. You can also format this as an xml file and let your js do the work. //--> |
另一种方法是用这个替换您的system.out.println
1 2 |
但我想这是一种不好的做法。请参见此处的示例。